Add the following environment variable to your system, for example within ~/.bashrc or ~/.zshrc:
export USER_ID=$(id -u)
export GROUP_ID=$(id -g)Creates every file which gets mounted into the node container (shell rc/history, git, ssh, npm and the coding agent auth/settings files) without overwriting existing ones. Adjust the seeded settings files afterwards to your liking, they stay on the host and get mounted.
./setup-mount-points.shThe following coding agents (harnesses) are preinstalled within the node container, their auth and settings files
get mounted from the host (see docker-compose.yml):
- Claude Code:
~/.claude.json,~/.claude/.credentials.json,~/.claude/settings.json - Codex:
~/.codex/auth.json,~/.codex/config.toml - Opencode:
~/.config/opencode/opencode.jsonc,~/.config/opencode/tui.json,~/.local/share/opencode/auth.json - PI incl. pi-llama:
~/.pi/agent/auth.json
PI can run against a local model via pi-llama, start a llama.cpp server on the host, for example:
llama-server \
-hf lmstudio-community/Qwen3.6-35B-A3B-GGUF:Q4_K_M \
-c 32768 \
-ngl 999 \
--flash-attn on \
--host 0.0.0.0 \
--port 9931docker compose up -d
docker compose exec node bashIMPORTANT: It is meant for simple testing a project not having an own docker setup yet.
Nginx is configured to reverse proxy to port 3000.
To you use run an app with host 0.0.0.0 and port 3000.
On your host call it via
curl --insecure https://localhost/path/to/route2026 Dominik Zogg