forked from bots-garden/ori
ori kit
A Docker Sandboxes mixin kit that starts the ori web server — a browser client for Claude Code over ACP — inside a sandbox built from the k33g/ori template image.
1. Get the template image
It is published on Docker Hub as k33g/ori:0.0.2. To (re)build and push it yourself from the ori repository root:
./template/build.sh # multi-arch build, pushes k33g/ori:0.0.2 and :latest
# local-only alternative: make template (= docker build -t k33g/ori .)
The image stacks ori (server, SPA and demo agent) and the claude-agent-acp adapter on top of the official docker/sandbox-templates:claude-code template, so everything the claude sandbox normally provides is still there.
If the image only exists on your host engine (never pushed to Docker Hub), hand it to the sandbox runtime's own image store:
docker save k33g/ori -o /tmp/ori.tar
sbx template load /tmp/ori.tar
sbx template ls
2. Create a sandbox with it
sbx run -d claude ~/path/to/your/project \
--template k33g/ori:0.0.2 \
--kit /path/to/ori/kits/ori
Use sbx run -d (--detached), not sbx create: sbx auto-stops a sandbox 30 s after its last CLI session closes, and a web server has no CLI session to hold it up. A detached sandbox is exempt from that auto-stop for its whole life; the mode is fixed at creation, so a sandbox made with sbx create has to be sbx rm'd and recreated.
--template swaps the sandbox image for k33g/ori:0.0.2; --kit applies this mixin, whose startup command launches the ori server at every container start. The claude agent kit still handles Anthropic credentials, so the server's agent works without any login inside the sandbox.
The listen port defaults to 8888 and is a kit argument: add --kit-arg ori.port=9000 (or --kit-arg port=9000) to change it. The port the kit declares for auto-publishing stays 8888 (an sbx packaging limitation, see the comment in spec.yaml), so with a custom port publish it yourself: -p 9000:9000.
3. Open the UI
The kit declares port 8888, so the creation auto-publishes an ephemeral localhost port and prints it:
Published web: localhost:54321 -> 8888/tcp
Browse to that address, or pin a fixed host port instead:
sbx run -d claude … -p 8888:8888/tcp # at creation
sbx ports <sandbox-name> --publish 8888:8888/tcp # afterwards
Notes
- Server log inside the sandbox:
/home/agent/.ori.log. - To try the UI without consuming Claude usage, restart the server with the bundled demo agent:
pkill -x ori; nohup ori --addr :8888 --agent-cmd ori-mock-agent --cwd "$PWD" >> /home/agent/.ori.log 2>&1 &. - The image also runs standalone, outside sbx:
docker run --rm -p 8888:8888/tcp k33g/ori(bring your ownANTHROPIC_API_KEY, or switch toori-mock-agent).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
|