- Home
- Dev Container
- Getting Started
Getting Started
Prerequisites
Section titled “Prerequisites”Container Runtime
Section titled “Container Runtime”You need a container runtime on your machine. Either Docker or Podman will work.
| Platform | Install |
|---|---|
| macOS | Docker Desktop for Mac |
| Windows | Docker Desktop for Windows (WSL2 backend) |
| Linux | Docker Engine or Docker Desktop for Linux |
Verify it’s working:
docker --versiondocker compose version| Platform | Install |
|---|---|
| macOS | Podman Desktop for Mac |
| Windows | Podman Desktop for Windows |
| Linux | Podman + Podman Compose |
Verify it’s working:
podman --versionpodman-compose versionSystem Resources
Section titled “System Resources”| Resource | Minimum | Recommended |
|---|---|---|
| Disk | 5 GB | 10 GB+ |
| RAM | 8 GB allocated to container runtime | 12 GB+ |
| CPU | 2 cores | 4+ cores |
Adjust resource limits in Docker Desktop → Settings → Resources.
On macOS/Windows, adjust resource limits in Podman Desktop → Settings → Resources, or via the CLI:
podman machine set --cpus 4 --memory 12288podman machine stop && podman machine startOn Linux, containers share host resources directly — no resource configuration is needed.
1. Set Up
Section titled “1. Set Up”Create a folder and download the compose file:
mkdir devcontainer && cd devcontainercurl -fsSLO https://raw.githubusercontent.com/f5xc-salesdemos/devcontainer/main/docker-compose.yml2. Add Your Auth Credentials (Optional)
Section titled “2. Add Your Auth Credentials (Optional)”Create a .env file in the same folder to pre-configure Claude Code. Choose one of the following options:
Option A: Claude Max (OAuth)
Section titled “Option A: Claude Max (OAuth)”CLAUDE_CODE_OAUTH_TOKEN=sk-ant-oat01-your-token-hereOption B: LiteLLM or Anthropic-compatible proxy
Section titled “Option B: LiteLLM or Anthropic-compatible proxy”If you have a LiteLLM instance or other Anthropic-compatible proxy, set these two variables:
LITELLM_BASE_URL=https://your-litellm-endpoint.example.comLITELLM_API_KEY=your-api-keySet the domain only — the container derives provider-specific URL suffixes automatically (e.g. /anthropic for Claude Code, /api/v1 for OpenCode).
Auto-populate from local credentials
Section titled “Auto-populate from local credentials”If you have git and gh configured on your host, you can populate most .env values automatically. Start by copying the template:
cp .env.example .envThen run whichever commands match your setup:
# Git identityecho "GIT_AUTHOR_EMAIL=$(git config user.email)" >> .envecho "GIT_AUTHOR_NAME=\"$(git config user.name)\"" >> .env
# Timezoneecho "TZ=$(readlink /etc/localtime | sed 's|.*/zoneinfo/||')" >> .env
# GitHub CLI token (requires: gh auth login)echo "GH_TOKEN=$(gh auth token)" >> .env
# SSH key (if you use SSH for git)echo "SSH_PRIVATE_KEY=$(base64 < ~/.ssh/id_ed25519)" >> .envThen edit .env to add your OAuth token or LiteLLM proxy settings (see options above).
3. Start
Section titled “3. Start”docker compose up -dpodman-compose pull && podman-compose up -dThe first run pulls the pre-built image from ghcr.io (~1 min depending on your connection). Subsequent starts use the cached image and take seconds.
4. Connect
Section titled “4. Connect”docker compose exec dev zshpodman-compose exec dev zsh5. Verify
Section titled “5. Verify”# AI toolsclaude --versionopencode --versioncodex --versionaider --versionpi --version
# Languagesnode --versionpython3 --versiongo version
# Cloud CLIsaws --versionaz --versionterraform --versionTest the AI connection:
claude -p "Say hello"6. Your First Project
Section titled “6. Your First Project”cd /workspacegit clone https://github.com/your-org/your-project.gitcd your-projectclaude7. Remote Display (noVNC)
Section titled “7. Remote Display (noVNC)”The container includes a virtual display for watching AI agents control a browser. Open http://localhost:6080/vnc.html to connect. See Remote Display (noVNC) for details.
8. Browser Automation (Chrome DevTools MCP)
Section titled “8. Browser Automation (Chrome DevTools MCP)”Claude Code can navigate web pages, take screenshots, and inspect the DOM using the built-in Chrome DevTools MCP server. No setup needed — it works automatically in headless mode. See Chrome DevTools MCP for details.
9. Stopping and Restarting
Section titled “9. Stopping and Restarting”# Stop (preserves data)docker compose down
# Start againdocker compose up -d
# Destroy everything and start freshdocker compose down -vdocker compose up -d# Stop (preserves data)podman-compose down
# Start again (pull ensures latest image)podman-compose pull && podman-compose up -d
# Destroy everything and start freshpodman-compose down -vpodman-compose pull && podman-compose up -dYour code in /workspace and home directory persist across restarts. See Configuration — Data Persistence for details.
For local builds and Dockerfile customization, see Local Development. For VS Code integration, see VS Code. For remote display options, see Remote Display (noVNC).