Sign inSign up

joakimp/opencode-devbox

By joakimp

•Updated 2 months ago

Portable AI dev environment for opencode. Debian-based with git, Node.js, AWS CLI, and SSH support.

Image
1

10K+

joakimp/opencode-devbox repository overview

⁠opencode-devbox

Portable AI developer environment for opencode⁠. Debian-based, with git, SSH, Node.js, AWS CLI v2, and common dev tools pre-installed.

Current :latest ships opencode 1.18.13 (the baked version is asserted by smoke tests, so this page never drifts from the image).

Designed for teams who want a reproducible coding-agent setup that runs the same on every laptop and CI runner — without forcing each developer to install Bun, Node, AWS CLI, mempalace, or maintain shell config drift across machines.

⁠Image Variants

TagDescription
latest / vX.Y.ZBase image — opencode 1.18.13, Node.js, AWS CLI, dev tools
latest-omos / vX.Y.Z-omosBase + oh-my-opencode-slim⁠ multi-agent orchestration and Bun

All variants support linux/amd64 and linux/arm64.

Looking for pi? As of v2.0.0 the pi coding-agent is no longer bundled in opencode-devbox. It ships as the dedicated joakimp/pi-devbox⁠ image, which shares the same mempalace memory layer. See https://gitea.jordbo.se/joakimp/pi-devbox⁠.

⁠Quick Start

For a fully-configured environment with persistent state (opencode config, mempalace memory, neovim plugins, bash history) surviving container recreation, use docker-compose. You don't need to clone the repo — just grab two template files:

mkdir -p ~/opencode-devbox && cd ~/opencode-devbox
curl -O https://gitea.jordbo.se/joakimp/opencode-devbox/raw/branch/main/docker-compose.yml
curl -fsSL https://gitea.jordbo.se/joakimp/opencode-devbox/raw/branch/main/.env.example -o .env
# Edit .env — set OPENCODE_PROVIDER, the matching API key,
# WORKSPACE_PATH, GIT_USER_NAME, GIT_USER_EMAIL.
docker compose run --rm devbox

This mounts your project at /workspace. With no command (as above) the image's default CMD (bash -l) drops you into a login shell — run opencode to start the harness, or aws sso login first, etc. To start opencode directly, pass it as the command: docker compose run --rm devbox opencode.

One-shot run, no persistence:

docker run -it --rm \
  -e ANTHROPIC_API_KEY=your-key \
  -e OPENCODE_PROVIDER=anthropic \
  -e GIT_USER_NAME="Your Name" \
  -e GIT_USER_EMAIL="[email protected]" \
  -v ~/projects:/workspace \
  -v ~/.ssh:/home/developer/.ssh:ro \
  joakimp/opencode-devbox:latest

Full setup guide — authentication for each provider (Anthropic, OpenAI, Bedrock SSO + static), persistence model, build args, troubleshooting: https://gitea.jordbo.se/joakimp/opencode-devbox#readme⁠

⁠What's Inside

  • opencode⁠ — primary coding-agent harness. Multi-provider (Anthropic, OpenAI, Bedrock, Google, Groq, etc.).
  • mempalace⁠ — persistent AI memory layer (ChromaDB + SQLite). Wing/diary/knowledge-graph entries are shareable with the sibling joakimp/pi-devbox⁠ image when both point at the same palace.
  • oh-my-opencode-slim⁠ (in *-omos variants) — multi-agent orchestration on top of opencode (council, fallback chains, named agents).
  • AWS CLI v2 with SSO support, Node.js LTS, Bun (OMOS variants), uv (Python), gosu for clean UID/GID adjustment to match your host workspace.
  • MCP wrappers for mempalace pre-installed and pre-wired to opencode.

⁠Authentication

The container reads provider credentials from environment variables and host-mounted config:

  • Anthropic / OpenAI / Groq / others: set OPENCODE_PROVIDER and the corresponding *_API_KEY via -e or .env.
  • AWS Bedrock (SSO): mount ~/.aws from the host, OPENCODE_PROVIDER=amazon-bedrock, then aws sso login inside the container. Tokens persist across container restarts via the host bind-mount.
  • OAuth / device-code providers: auth state lives in opencode's config, which is persisted via the devbox-opencode-config named volume.

Full Bedrock walkthrough (IAM roles, permissions, multi-account setups): see the AWS Bedrock Authentication⁠ section on gitea.

⁠Persistence

VolumeMountSurvives
devbox-opencode-config~/.config/opencodecontainer recreate, image rebuild — incl. user-installed npm globals via npm install -g (NPM_CONFIG_PREFIX points into the volume)
devbox-palace (uncomment)~/.mempalacecontainer recreate, image rebuild — palace data is precious, treat as primary storage
devbox-chroma-cache~/.cache/chromacontainer recreate (model cache, disposable — re-downloads in seconds)

Workspace bind-mount (/workspace) is your project directory on the host, so source code is never inside the container.

Full persistence reference, including multi-user (SIGNUM) isolation and host bind-mount alternatives: see the README on gitea⁠.

⁠Where to Go Next

⁠Sibling images

⁠License

MIT. See https://gitea.jordbo.se/joakimp/opencode-devbox/src/branch/main/LICENSE⁠.


This description is generated by scripts/generate-dockerhub-md.py from a hand-maintained template. Edit the template (not this file) and regenerate. The 1.18.13 placeholder is filled by CI at publish time.

Tag summary

Content type

Image

Digest

sha256:4ff624863…

Size

1.3 GB

Last updated

2 months ago

docker pull joakimp/opencode-devbox