Skip to content
Workbox

Claude Code and Codex, ready to work.

Preinstalled, unattended and boxed in. Or bring any agent from anywhere with a single key.
operator — workbox agent
$ 

Pair, delegate, or let it run.

Pair with it live.

Talk to the agent in your terminal, just like local. The sandbox stays up for next time.

operator — workbox agent
$ S='--server http://127.0.0.1:8790'
$ workbox agent claude $S
$ workbox agent claude <sandbox-id> $S      # again, same sandbox

Everything preinstalled.

Built once, shared by every sandbox. Nothing to download at start.

default reach

@anthropic@openai@github@node@python
Claude Code
2.1.312
Codex
0.165.0
Node
22.23.4

Keys live on the host. The agent gets them. Logs never do.

Let one agent hand work to another.

A coding agent, one MCP tool call away.

MCP guide
tools/call
{ "name": "agent_run",
  "arguments": { "agent": "codex", "prompt": "Add a test for parse()" } }

From another machine, with one key.

A URL and a scoped key. That’s all a remote agent needs.

Remote agents guide
  1. 01 · operator, on the host

    Mint a bound key

    Scoped to one job. Shown once.

    shell
    $ workbox key create --name dots \
        --scope read --scope exec --scope admin \
        --label owner=dots --ttl 30d
  2. 02 · agent

    Create a sandbox

    Ready the moment it returns.

    shell
    $ ID=$(curl -sS -H "$AUTH" -H "$JSON" \
        -d '{"name":"build"}' $W/v1/sandboxes | jq -r .id)
    $ S=$W/v1/sandboxes/$ID
  3. 03 · agent

    Upload the project

    Stream files of any size.

    shell
    $ curl -sS -H "$AUTH" -T build.sh \
        "$S/files/raw?path=/workspace/project/build.sh&mkdirs=1"
    {"path":"/workspace/project/build.sh","bytes":166}
  4. 04 · agent

    Start a build session

    Keeps running when you disconnect.

    shell
    $ SID=$(curl -sS -H "$AUTH" -H "$JSON" "$S/sessions" -d \
        '{"argv":["sh","build.sh"],"cwd":"/workspace/project"}' \
        | jq -r .sessionId)
  5. 05 · agent

    Follow the event log

    Long-poll or stream. Resume after a drop.

    shell
    $ curl -sS -H "$AUTH" "$W/v1/events?sandboxId=$ID\
    &types=session.exited&afterSeq=0&waitMs=60000"
  6. 06 · Workbox, to the agent

    A signed webhook arrives

    Signed, verified, de-duplicated.

    request
    POST /workbox HTTP/1.1
    webhook-id: msg_01K8QZ6R3V4TQ7J9W2N5B8C1DE
    webhook-timestamp: 1761700000
    webhook-signature: v1,<base64 HMAC-SHA256>
  7. 07 · agent

    Download the artifact

    Grab the result. Tear down the box.

    shell
    $ curl -sS -H "$AUTH" -o artifact.txt "$S/artifacts/$SHA"
    $ curl -sS -H "$AUTH" -X DELETE $S

Scoped keys, not SSH.

A key can

  • Create and run sandboxes
  • Move files of any size
  • Follow events and webhooks

It can’t

  • See anyone else’s sandboxes
  • Mint or revoke keys
  • Touch the rest of the fleet

Know the moment a build finishes.

signed delivery
POST /workbox HTTP/1.1
webhook-id: msg_01K8QZ6R3V4TQ7J9W2N5B8C1DE
webhook-timestamp: 1761700000
webhook-signature: v1,<base64 HMAC-SHA256>

{"type":"session.exited", …}

retried for about a day

  1. 1at once
  2. 2+5 s
  3. 3+5 min
  4. 4+30 min
  5. 5+2 h
  6. 6+5 h
  7. 7+10 h
  8. 8+10 h
failed

Let the agent work. Keep the host.

Open source and self-hosted.