5e8ca21669
The project started life as bash scripts and got rewritten to Python (documented in docs/research/bash-vs-python-vs-go.md). Several docs still carried the old "bash-first" framing — misleading for anyone reading them now (8.7k lines of Python vs. ~130 lines of bash, all in scripts/demo*.sh). - CLAUDE.md "What this is" + "Conventions": orchestrator is Python, posture is stdlib-first. - docs/prds/0010-cred-proxy.md, docs/research/manifest-format-and- grouping.md: quoted CLAUDE.md's old wording — re-quote. - docs/research/built-in-supervisor-design.md, landscape-containerized- claude.md, agent-sandbox-landscape.md, pipelock-assessment.md, network-egress-guard.md: drop "bash-first" claims about the project, keep accurate descriptions of external tools' bash usage. Leaves untouched: bash code-fence syntax in examples, README's literal `bash scripts/demo.sh` invocation (the demo IS bash), Claude Code's "Bash tool" references, IVIJL/devbox bash description (that project actually is bash), and the bash-vs-python-vs-go research note that records the rewrite decision. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
claude-bottle
What this is
claude-bottle spins up an isolated container for running Claude Code with a
curated set of skills and env vars. The point is to run Claude with broad
permissions inside a sandbox, so a misbehaving agent cannot reach the host.
A Python CLI (entry point cli.py, package claude_bottle/) orchestrates
the container lifecycle and the copying of skills and env vars into it.
Goals
- Minimize risk of running claude with full permissions
- Allow me to easily spin up agent tasks in parallel
- Create isolated, well defined, easily updated, shareable agents
Non-goals
- Communicating between agents directly
- Self hosted VMs (v1 uses local Docker containers, not VMs)
- Advanced agent auditing (lean on git history for auditing)
Repository layout
README.md— short public-facing description.CLAUDE.md— this file, orientation for future Claude sessions..gitignore— OS junk.claude-bottle.json— manifest of named agents (env / skills / prompt per agent), consumed bycli.py. See "Manifest" under "Intended design".docs/INDEX.md— pointer to the research notes.docs/prds/— product requirement docs.docs/research/— research notes (empty for now, kept tracked via.gitkeep).
Conventions
- Product requirement docs live in
docs/prds/. - Research notes live in
docs/research/. - Low dependencies by default. The project is Python, stdlib-first (no runtime pip dependencies in the package itself; the only language runtime is the Python 3.13 used by the CLI + sidecars). Ask before adding new tools, runtimes, or package managers.
- Commit messages follow Conventional Commits:
<type>[(scope)][!]: <description>, where<type>is one offeat,fix,docs,style,refactor,perf,test,build,ci,chore,revert. Acommit-msghook in.githooks/enforces this. Activate it once per clone withgit config core.hooksPath .githooks.
When you're unsure
Ask. Default to drafting in chat over editing files when the request is ambiguous.