Swarm — many agents, one command
Fan out dozens of agent microVMs on prepaid Spot credits, dispatch a task to the whole swarm, and collect every result — setup, dispatch, collect.
What a swarm is
A swarm is many agent microVMs doing the same kind of work at once. You bring up
N agents with one command, send the whole cohort a task with one command, and
pull back every result with one command — then pay for exactly the minutes they
ran, out of a prepaid credit balance.
It runs on the Spot usage tier: half-price, interruption-tolerant compute — the right economics for a burst of short-lived agents that all finish and go away.
Still no free tier
A swarm spins up real Firecracker microVMs. A card must be on file and you top up credits before anything runs — there's no free trial and no free tier. What you get is per-second billing and a burst you can walk away from, not a giveaway.
The shape is always three phases: Setup → Dispatch → Collect.
1. Setup — prepay, then fan out
Top up credits (your card is never charged until you do), then bring up the
swarm. --count N fans out N Spot agents in one call, and --group saves them
as a named cohort so every later command can drive them as one:
jurniti credits buy 20
jurniti up --tier spot --harness hermes --count 50 --group demoWatch them come up in a second terminal:
watch jurniti vms lsA group is just a local name for your swarm
--group demo remembers the cohort's agent ids on your machine (under
~/.jurniti/groups). It's a client-side convenience — the platform still
confines every command to VMs your own account owns.
2. Give the swarm its key (auth at scale)
Each hermes agent reaches a model through one OpenRouter key. Write it to every agent in the group with a single command — this is BYOK, so the key lands encrypted inside your VMs, is never stored in our database, and is never echoed back to your terminal:
jurniti env set --group demo --no-restart OPENROUTER_API_KEY=sk-or-...Use an API key, not an interactive login
Authenticate the swarm with a model API key, never by logging an agent into a consumer account. One key, injected into every VM, is what makes a swarm authenticate at scale — and it keeps you inside each provider's terms.
3. Dispatch — one task, the whole swarm
jurniti run hands a task (a prompt) to an agent. The platform builds and
runs the agent's headless command for you — you send a task, never a script — and
each agent writes its answer to /work/out.txt. With --group, the task goes to
every agent in the cohort concurrently, so the swarm's wall-clock is the
slowest single agent, not the sum:
jurniti run --group demo "Write a punchy one-line launch headline for a developer tool."It reports how many agents succeeded and how many failed.
Give each agent a different task (templating)
A swarm is most useful when every agent does varied work, not 50 copies of one
prompt. Put a {placeholder} in the task and fill it per-agent with --var:
jurniti run --group demo \
--var audience=developers,designers,founders,marketers \
"Write a punchy one-line launch headline for a {audience} tool."Each agent gets its own prompt — one per value, mapped across the swarm in the group's stable order. Rules:
--var KEY=v1,v2,…provides the values; repeat--varfor more placeholders (all lists must be the same length, zipped one row per agent).--var KEY=@file.txtreads one value per line — the easy way to feed 50 distinct values to 50 agents (an "array" from a file).- Fewer values than agents cycle (3 audiences across 9 agents = 3 each); more values than agents is an error (surfaces the mismatch).
- Built-in tokens need no
--var:{index}(0-based),{n}(swarm size),{vm}(the agent's id). So"Summarize shard {index} of {n}."just works. - A misspelled
{placeholder}fails before anything dispatches (no agent runs a half-filled prompt). Write{{/}}for literal braces.
Coming next: generate the variations
Today you supply the values. A future --template generate will let an agent
produce the per-agent variations from a seed prompt — one step up the same
ladder.
4. Collect — every result, one folder
jurniti cp copies a file out of your VMs. With --group it fans the whole
swarm's output into a local directory, one file per agent:
jurniti cp --group demo /work/out.txt ./outNow ./out/ holds one file per agent (<agent-id>-out.txt) — the entire swarm's
work, collected.
5. The receipt
The meter only ran while the agents did. See exactly what the burst cost:
jurniti credits historyWhy it's cheap
Spot is $0.025/hour, billed per second with a 60-second minimum per run, and a stopped agent burns nothing. A swarm of short tasks bills like a swarm of short tasks — and a $0 balance gracefully stops every usage VM (persist preserved), so the burst can never overrun your top-up.
The whole thing
jurniti credits buy 20
jurniti up --tier spot --harness hermes --count 50 --group demo
jurniti env set --group demo --no-restart OPENROUTER_API_KEY=sk-or-...
jurniti run --group demo "Write a punchy one-line launch headline for a developer tool."
jurniti cp --group demo /work/out.txt ./out
jurniti credits historyFifty agents, one task each, every result on your disk — and a receipt.
Let your own agent run the swarm
Every verb here is also an MCP tool. Mount the CLI once and your own agent can spin up, dispatch, and collect a swarm as tools — see MCP.