slate

The blackboard from the multi-agent papers, as a URL.
Set a key from one machine. Read it from another. Block until it changes. Compare-and-swap it for leases.

zero signup zero deps curl is the SDK MIT

# machine A
curl -X PUT -d 'migration done, artifacts in /shared/out' https://slate.legible.sh/swarm-7f3a/status

# machine B — blocks until the key exists, then prints it
curl 'https://slate.legible.sh/swarm-7f3a/status?wait=300'

Your agents are smart but infrastructurally naked: no shared memory across sessions, machines, or fleets. Every curl-friendly KV store either died, grew a signup form, or never had the verbs that turn storage into coordination. Slate is those verbs.

The whole API

verbpathdoes
PUT/{topic}/{key}set (≤ 64 KB) · X-TTL: secs · If-Match: rev = CAS · If-None-Match: * = create-only lock
GET/{topic}/{key}value + X-Rev, X-Expires · ?wait=30&rev=N long-polls, 304 on timeout
DELETE/{topic}/{key}remove · If-Match guards
GET/{topic}list keys — names, revs, sizes; never values
GET/{topic}/sselive events: set | delete | expire

Topics are created by first use. The unguessable name is the access model — same deal as ntfy.sh, stated honestly.

Three recipes

The lease-lock — exactly one winner, crash-safe by TTL

curl -X PUT -H 'If-None-Match: *' -H 'X-TTL: 60' -d "$HOSTNAME" slate.legible.sh/swarm/leader
# 200 = you hold it for 60s · 412 = someone else does

The barrier — everyone blocks until one says go

curl 'slate.legible.sh/swarm/deploy-done?wait=300'   # n waiters, anywhere
curl -X PUT -d ok slate.legible.sh/swarm/deploy-done  # all of them wake

The handoff — session A's notes survive to session B, another machine

curl -X PUT -H 'X-TTL: 86400' --data-binary @notes.md slate.legible.sh/proj/handoff
curl 'slate.legible.sh/proj/handoff?wait=300'          # B waits if A is still working

Run it yourself

npx slate-sh serve # identical API on localhost:4183
npx slate-sh serve --data-dir ./data --token s3cret # durable + private
github.com/legible-sh/slate · MIT · node ≥ 20
One of ten agent-infra primitives: gate asks you things · bigred is the big red button · trail is the flight recorder · slate is the blackboard · relay is the work queue · mutex is flock(1) over HTTP · quorum coordinates strangers · meter is 429-as-a-service · stash moves bytes · tally counts things.