Opinionated devcontainer preloaded with the
sourecode/devcontainer-features
collection. Open this folder in any editor that speaks the
Dev Containers spec (VS Code, JetBrains Gateway,
devcontainer CLI, Coder, …) and you get a Debian trixie-slim box with
Node.js, Claude Code, and home-directory persistence wired up.
| Feature | Summary |
|---|---|
nvm |
System-wide nvm at /usr/local/share/nvm with node/npm/npx on PATH (defaults to the LTS). |
claude-code |
Latest Claude Code CLI via the official native installer. Declares ~/.claude and ~/.claude.json as persistence targets and pulls in nvm via dependsOn. |
rtk |
rtk LLM token-reducing proxy. Auto-patches Claude Code so the hook is written against the live ~/.claude. |
context-mode |
Installs the context-mode Claude Code plugin into ~/.claude/plugins. |
home-persist |
Symlinks declared $HOME paths into the per-owner persistence volume at /mnt/home-persist. |
- Click Use this template on GitHub to create your own repo.
- Ensure a persistence directory exists on the host and is bind-mounted at
/mnt/home-persist— the includeddevcontainer.jsondeclares the mount, and the host path must be writable by the container user (UID1000by default). - Open the repo in your Dev Containers client and let the features install.
On first create,
home-persistmaterializes symlinks for~/.claude,~/.claude.json, and anything else features or you declare.
The Dockerfile accepts USERNAME, USER_UID, and USER_GID build args,
driven by DEVCONTAINER_USERNAME / DEVCONTAINER_USER_UID /
DEVCONTAINER_USER_GID from the host environment. Defaults: dev / 1000 /
1000.
Set the paths option on home-persist in devcontainer.json:
Features already declare their own paths (e.g. claude-code contributes
.claude and .claude.json), so you only list what's yours.
- Upstream features & docs: https://github.com/sourecode/devcontainer-features
- Persistence model:
docs/persistence.md - Dev Containers spec: https://containers.dev