Dockerized CLI toolkit with GitHub Copilot CLI, GitHub CLI, and Claude Code — agentic terminal assistants in one container. Run against any local project without installing anything on your host. Access via terminal or browser-based web terminal.
- Docker + Docker Compose
- A GitHub fine-grained PAT with the "Copilot Requests" permission
- Create one at: https://github.com/settings/personal-access-tokens/new
- An Anthropic API key (optional, only needed for Claude Code)
- Create one at: https://console.anthropic.com/settings/keys
| CLI | Command | Auth env var |
|---|---|---|
| GitHub Copilot CLI | copilot |
GH_TOKEN |
| GitHub CLI | gh |
GH_TOKEN |
| Claude Code | claude |
ANTHROPIC_API_KEY |
make claudeand./clide claudeforceCLAUDE_CODE_SIMPLE=1for predictable container startup.- The
claudeandshellservices share a container entrypoint (/usr/local/bin/claude-entrypoint.sh) that pre-seeds Claude config to avoid repeated first-run setup prompts — so runningclaudefrom insidemake shellworks too. - If you prefer full TUI mode, run compose directly with an override:
CLAUDE_CODE_SIMPLE=0 docker compose run --rm claude
-
Add your GitHub token to
.env(addANTHROPIC_API_KEYonly if using Claude Code):GH_TOKEN=your_github_pat_here # ANTHROPIC_API_KEY=your_anthropic_key_here # optional
-
(Optional) Enable web terminal authentication:
TTYD_USER=admin TTYD_PASS=changeme
-
Build the image:
docker compose build
./clide web # start web terminal at http://localhost:7681
./clide shell # interactive shell with all CLIs
./clide copilot # run GitHub Copilot CLI
./clide claude # run Claude Code CLI
./clide gh repo view # run GitHub CLI with args
./clide help # show all commandsmake web # start web terminal
make shell # interactive shell
make copilot # run copilot
make claude # run Claude Code CLI
make help # show all targetsUse Ctrl+Shift+P → Run Task:
- Start web terminal (ttyd) → access all CLIs at http://localhost:7681
- Run copilot (default project) → run Copilot CLI directly
- Open interactive shell (all CLIs) → bash with all CLIs available
docker compose run --rm shell
docker compose run --rm copilot
docker compose up -d webRun against a different project:
PROJECT_DIR=/path/to/specific/repo docker compose run --rm shellYour project is mounted at /workspace inside the container.
See DEPLOY.md for Caddy Docker Proxy integration. Uses docker-compose.override.yml (gitignored) for reverse proxy config that persists across git pulls.
-
Tokens don't expire unless you set an expiry — set them once in
.envand you're done. -
.envis gitignored. Don't commit it. -
To rebuild with latest CLI versions:
docker compose build --no-cache
-
If Claude gets stuck in setup prompts again after local changes, reset and rebuild:
docker compose down -v docker compose build --no-cache make claude