Sanitized single-commit public mirror of recipe-maintainer. - Removed test-ssh/.testenv (live creds); added test-ssh/.testenv.example placeholders. - Removed plans/ and planned-updates/ (deployment-planning docs) so no client/ deployment domains appear in the public repo. - All other secret stores were already gitignored. - docs.coopcloud.tech retained as a submodule (public upstream).
2.5 KiB
2.5 KiB
description, allowed-tools
| description | allowed-tools | |||
|---|---|---|---|---|
| Guide for setting up a sandboxed environment to run Claude Code with recipe-maintainer |
|
Setup Sandbox
Explain to the user how to set up a sandboxed environment for running Claude Code with access to recipe-maintainer.
What to explain
Claude Code needs shell access to run commands, edit files, and install packages. Running it inside a sandbox (like a Docker container) keeps it isolated from your host system while still giving it the tools it needs.
For recipe-maintainer, the sandbox needs:
- Its own
~/.abradirectory — so it can manage Co-op Cloud apps and servers without touching your host abra config - Access to the recipe-maintainer checkout — mounted as a volume
- CLI tools:
abra,git,gh,ripgrep,fd, and anything else your recipes need (Rust, Hugo, Terraform, etc.) - Network access — to reach Co-op Cloud servers (via Tailscale or direct SSH)
- Persistent home directory — so Claude's auth, settings, and conversation history survive across runs
Reference implementation
Point the user to sandbox/ in this repo. Read sandbox/README.md and summarise the key points:
sandbox/contains a working Docker-based sandbox with all the tools recipe-maintainer usesclaude.pyis the launcher — it mounts the current directory, maps your UID/GID, and hides sensitive filesdocker-compose.ymldefines named volumes for persistence (claude_userhome,claude_target,tailscale_state)entrypoint.shcreates a non-root user matching the host UID/GID- The Dockerfile includes all the tools needed for recipe work (abra, Caddy, Tailscale, Rust, Hugo, Terraform, Playwright, etc.)
Tell the user they can either:
- Use
sandbox/directly —./build.shthen set up an alias toclaude.py - Build their own — use
sandbox/as a reference for what tools and configuration are needed
Key details to mention
- The
.abradirectory is mounted per-workspace via-v ${workspace}/.container-abra:/home/claude/.abraso each project can have its own abra config - Sensitive files (
.env,secret.json, etc.) are automatically hidden from the container via/dev/nullmounts - The container runs with
--dangerously-skip-permissionsby default since the sandbox itself is the security boundary - Auth persists in the
claude_userhomeDocker volume — runclaude loginonce and it sticks
Read sandbox/README.md for full details and present a clear summary to the user.