Quick Start¶
This is the shortest path from zero to a working deva.sh container.
Prerequisites¶
You need:
- Docker
- a project directory you trust
- one agent auth path that actually works
If your plan is "mount my whole laptop and see what happens", that is not a prerequisite. That is a mistake.
Install¶
curl -fsSL https://raw.githubusercontent.com/thevibeworks/deva/main/install.sh | bash
That installs:
deva.shclaude.sh(legacy compatibility wrapper)claude-yolo(legacy compatibility wrapper)agents/claude.shagents/codex.shagents/gemini.shagents/shared_auth.sh
It also pulls ghcr.io/thevibeworks/deva:latest, with Docker Hub as fallback.
First Run¶
cd ~/work/my-project
deva.sh codex
By default, deva:
- mounts the current project at the same absolute path inside the container
- creates or reuses one persistent container for that project
- uses the per-agent config home under
~/.config/deva/ - auto-links legacy local auth homes into that config root unless you disable autolink
If you already have local agent auth, first run is usually boring. Good. Boring is the point.
First Useful Commands¶
# See the container for this project
deva.sh ps
# Open a shell inside it
deva.sh shell
# Show the resolved wrapper config
deva.sh --show-config
# Show the docker command without running it
deva.sh claude --debug --dry-run
# Stop or remove the project container
deva.sh stop
deva.sh rm
Use Another Agent¶
Same project, same default container shape:
deva.sh claude
deva.sh gemini
That is one of the main reasons this wrapper exists. You do not need a separate pet workflow for every vendor.
If you change mounts, explicit config-home, or auth mode, deva will split into a different persistent container shape instead of pretending those runs are equivalent.
Quick Auth Examples¶
Codex with OpenAI API key:
export OPENAI_API_KEY=sk-...
deva.sh codex --auth-with api-key
Claude with a direct Anthropic-style key or token:
export ANTHROPIC_API_KEY=sk-ant-...
deva.sh claude --auth-with api-key
Claude with a custom endpoint:
export ANTHROPIC_BASE_URL=https://example.net/api
export ANTHROPIC_AUTH_TOKEN=token
deva.sh claude --auth-with api-key
Gemini with API key:
export GEMINI_API_KEY=...
deva.sh gemini --auth-with api-key
More auth details live in Authentication Guide.
Useful Modes¶
Throwaway container:
deva.sh claude --rm
Bare mode with no config loading or host auth mounts:
deva.sh claude -Q
Isolated auth home:
deva.sh claude -c ~/auth-homes/work
If Something Looks Wrong¶
Use these before you start editing code out of frustration:
deva.sh --show-config
deva.sh claude --debug --dry-run
deva.sh shell
Then read Troubleshooting.