Agent inbox with long polling
Worker B requests new data with ?wait=30 and receives a response when Worker A writes a message or the wait ends.
SheepishlyVersatileContainer
Capability-addressable byte storage for scripts, agents, and humans. Reading and writing a box that already exists needs only that box's capability token, and creating a new box or account is invite-only for now.
svc.nz/<box>
svc.nz is pronounced service. A box stores named files that clients read and write over HTTP, addressed by the box handle and authorised by a capability token in the Authorization header. Every PUT creates a new version of the stored file.
A capability, or cap for short, is a secret token written like cap_access_a3F2…9bQ. Anyone who holds a valid capability can use the permissions it grants for an existing box. The client sends this token in the Authorization header, never in the URL.
cap_next. Clients adopt that replacement before their current access capability expires.These seven examples illustrate file transfers and coordination between clients over HTTP. The panels include shell, HTTP, and Python examples with abbreviated tokens and response data. Creating any new box or account first requires an invitation.
Worker B requests new data with ?wait=30 and receives a response when Worker A writes a message or the wait ends.
Alice derives a read-only capability and writes it to Bob's inbox. That capability lets Bob read docs66/handoff.txt without granting access to other files.
After a worker crashes, its replacement reads the saved cursor at v17. The replacement uses that checkpoint to resume processing from the last saved position.
The agent hashes (tool, args) to identify a stored result. A cache hit lets the agent reuse that result while it remains valid.
CI uploads build.tar.zst to an existing box using its write capability. The deployment job requests v1 with a read capability to fetch that specific version.
The client optionally encrypts the file before uploading any bytes. The encryption key stays on the client, and the server stores ciphertext.
A sender needs an existing box or an invitation to create one. The recipient downloads it with the file URL and a capability in the Authorization header. Anonymous boxes expire when their configured lifetime runs out.
The client uploads bytes to an existing box using its write capability. When the response supplies a replacement capability, the client adopts it for subsequent requests.
The client requests a specific version with /v2 or the most recent version with /latest. The capability must grant read access to the requested file and version.
Another PUT to the same path creates a new version. Previous versions stay readable until the box expires, or until someone holding the refresh capability deletes them.
Each request carries a capability in the Authorization header. Reading or writing an existing box requires a capability with the corresponding permissions.
Every PUT creates a new version instead of overwriting bytes in place. A client can request any earlier version by its number, and a number is never reused.
A capability can be stored inside another box to pass access to a recipient. Replacing that stored token does not invalidate copies a recipient already holds.
Anonymous boxes expire when their configured lifetime runs out. Clients must retrieve any needed files before the box expires.
Client-side encryption is optional, and its key never leaves the client. When encryption is enabled, the server stores ciphertext that requires the key to decrypt.
Long-running clients adopt cap_next when a response provides a replacement access capability. The client saves that token for subsequent requests before the current capability expires.
The two-cap model separates a longer-lived cap_refresh, used at /refresh, from the cap_access used for reads and writes. Clients keep the refresh capability out of ordinary PUT and GET requests. Access capabilities belong in Authorization headers rather than request URLs.
Authentication profiles are configured separately for each HTTP method when a box is created. The setting auth.put=passkey&auth.get=none requires a passkey alongside the capability for writes, while reads use the capability alone.
The default profile accepts a capability with the required permissions. The client supplies it in the Authorization header for each request.
The compound profile requires two capabilities for each request. The capabilities can be held separately until the request is made.
This profile requires a capability plus a WebAuthn assertion from Touch ID, a fingerprint reader, or a hardware key. It suits human-operated boxes without adding a shared secret.
This profile requires a capability and a time-based one-time password. The client supplies the current code along with its capability.
in.svc.nz/<box>/<name>
Authorization: Capability <token>
out.svc.nz using the same box and file name.