Skip to content

Stop your agents
from fighting over
work, quotas,
and spend.

runstate is a coordination service for the agents you already run. Plug it into your agent stack and every agent shares tasks, rate limits, budgets and results safely.

Your agents. Your models. Your infrastructure. runstate keeps them coordinated.

The preview is paused while we rebuild it. Join the waitlist and we will write when it reopens.

Your agents stay
where they already run.

  1. Plug runstate in where agents collide.

    Keep your stack as it is. Add a few calls where agents share work, capacity, budget, or completion.

  2. Make every worker check the same state.

    Agents check runstate for ownership, quota, budget, and completion. No local counters or conflicting answers.

  3. Let runstate settle every race.

    Ten workers reach for one task; runstate picks one. The budget runs out; runstate refuses the next reservation.

TS agents.ts
import runstate from 'runstate-sdk';
const research = runstate.once(researchCompany);
const search = runstate.limit('search-api', searchWeb, {
max: 60, per: 'minute',
});
const browse = runstate.slots('browser', openPage, { max: 5 });
const ask = runstate.budget('model-usd', callModel, {
reserve: 0.40, cost: (r) => r.usd,
});
await research('acme');
await runstate.stop();
npm install runstate-sdkpip install runstate-sdk
Read the docs

Do the work once. Even when agents fail.

Ten agents can reach for the same task. runstate hands it to exactly one.

Agents asking for the same result join the same work instead of starting it again.

If the worker disappears halfway through, another takes over. If the old worker comes back late, it can't overwrite the result.

One piece of work. One result. However many agents asked for it.

worker-03worker-09worker-11worker-14worker-18worker-21worker-27worker-30worker-33worker-36lead:acmeunclaimed

One quota for every worker, enforced.

Your agents might run across ten machines. Your APIs, browsers and GPUs still have the same limits.

Every worker draws from the same server-enforced quota or pool. When it runs out, runstate queues the next request instead of letting fifty agents retry together.

If a task needs several resources, it starts only when everything it needs is free.

No stampedes. No one worker hoarding the last slot.

machine-amachine-bmachine-csearch-api12 / 60browsers3 / 8gpu slots1 / 4

Work that would cross the budget doesn't start.

A hundred agents shouldn't get a hundred independent chances to overspend.

Agents reserve spend before they start, settle the real cost afterwards, and release whatever they didn't use.

When a reservation would cross the budget, runstate refuses it and the work never begins.

One budget, enforced for every agent that uses it.

agent-aagent-bagent-cbudget$50.00settled$30.00reserved$0.00available$20.00

Define done once. runstate enforces it everywhere.

Sometimes you need every answer. Sometimes you need five good ones. Sometimes the first accepted result is enough.

Set the stopping condition once. When it's met, runstate stops handing out work to every worker at the same moment.

Cancel the run yourself and the same rule applies everywhere at once.

Stop the swarm once. Not worker by worker.

0 / 5 acceptedhanding out workagent-1workingagent-2workingagent-3workingagent-4workingagent-5workingagent-6workingagent-7queuedagent-8queued

See the swarm as one system.

When fifty agents are running across ten machines, fifty sets of logs aren't much help.

See who owns each task, what is waiting, where capacity is full, how much budget is left, and every takeover or decision that got you there.

One view of the state every agent is sharing.

182 / 200 tasks complete$2.00 budget remaining3 waiting on quota1 takeover in progresstaskstateowner or waiting onattemptsenrich:acmerunningworker-271enrich:globexwaitingquota search-api1enrich:initechwaitingquota search-api1review:acmedoneaccepted1enrich:umbrellarunningworker-032waiting on quota search-api60 / 60 used this minute, 2 ahead in line

All your agents.
One coordination layer.

Built for a future where agent swarms run across every process, machine and model.