sha256:f8c9767eb411…
2 Bytes
v2
about 24 hours ago
OpenHands Agent Canvas - the browser UI + agent-server - running as a self-contained Docker sandbox. Multi-provider via LiteLLM (Anthropic / OpenAI / Gemini); API keys stay proxy-managed and never enter the sandbox. Forward port 8000 and open http://localhost:8000.
| Name | Service | Required | Description |
|---|---|---|---|
ANTHROPIC_API_KEY | anthropic | Optional | — |
OPENAI_API_KEY | openai | Optional | — |
GEMINI_API_KEY | Optional | — |
api.anthropic.com
api.openai.com
generativelanguage.googleapis.com
registry.npmjs.org
docker.openhands.dev
*.openhands.dev
ghcr.io
pkg-containers.githubusercontent.com
pypi.org
files.pythonhosted.org
astral.sh
*.astral.sh
nodejs.org
github.com
api.github.com
raw.githubusercontent.com
objects.githubusercontent.com
sbx run sbx/openhands-canvas-kit:latestRun the following command to install sbx on your machine.
brew install docker/tap/sbxwinget install Docker.sbxA kind: sandbox kit that runs OpenHands Agent Canvas - the browser UI plus agent-server - as a self-contained Docker sandbox on port 8000. Multi-provider (Anthropic / OpenAI / Google); API keys stay proxy-managed and never enter the sandbox. A headless runner is also installed for automation.
This is the web-UI variant of OpenHands. For the standard OpenHands agent sandbox, see the openhands kit.
Store a key for at least one provider on the host, then run with port 8000 forwarded:
sbx secret set anthropic
sbx run -p 8000 --kit "docker.io/sbx/openhands-canvas-kit:latest" openhands-canvas
Open http://localhost:8000.
Or target this repo directly over git, or a local clone:
sbx run -p 8000 --kit "git+https://github.com/docker/sbx-kits-contrib.git#dir=openhands-canvas" openhands-canvas
sbx run -p 8000 --kit ./openhands-canvas/ openhands-canvas
The default model is anthropic/claude-opus-4-8. Switch providers in Settings > LLM in the UI, or recreate the sandbox with LLM_MODEL overridden and the matching key stored (sbx secret set <anthropic|openai|google>).
The kit declares proxy-managed credentials for anthropic, openai, and google. Inside the container each *_API_KEY is a placeholder; the sbx proxy injects the real key on the wire for that provider's host, and the provider hosts are the only LLM egress in the allowlist. No key is ever written into the sandbox.
google (not gemini) is the canonical sbx service name, so a binding you set for another kit is reused here.
@openhands/agent-canvas (npm, into /usr/local/bin) - the Canvas UI + agent-server.openhands (via uv tool install) - the headless runner for non-interactive use.openhands-canvas-launch - the entrypoint: starts Agent Canvas on $PORT, waits for health, and seeds the model into Canvas settings (Canvas does not read the LLM_* env directly).The headless runner is available for non-interactive tasks:
openhands --headless --override-with-envs --exit-without-confirmation -t "…"
sbx secret rm -g --service anthropic # and/or openai, google