-
Notifications
You must be signed in to change notification settings - Fork 1
Build Environment
siamakerlab edited this page May 23, 2026
·
6 revisions
The slim Docker image intentionally ships without Android SDK / Gradle cache
/ MCP servers / Playwright. On first boot, the operator installs them once
through the Build environment page; subsequent image upgrades preserve
everything via the unified ./vibe-coder-data/dev-tools/ bind mount.
- Sign in → left nav → Build environment (
/env-setup). - The top "Install/update all" button covers JDK 17 (image-bundled), Node 20 + Claude CLI (image-bundled), Android SDK (volume), and base MCP prompt (you'll be redirected to the catalog).
- Per-card buttons let you install components individually.
- The progress page shows live install logs + elapsed time (no progress bar — install duration is unknowable in advance).
docker exec -it vibe-coder-server vibe-doctor # interactive
docker exec -it vibe-coder-server vibe-doctor check # diagnostics only
docker exec vibe-coder-server vibe-doctor install # bulk non-interactive
docker exec -it vibe-coder-server vibe-doctor android # SDK only
docker exec -it vibe-coder-server vibe-doctor claude # Claude auth helper
docker exec -it vibe-coder-server vibe-doctor mcp # MCP prompt| Component | Auto-installable | Size | Path |
|---|---|---|---|
| JDK 17 (eclipse-temurin) | image-bundled | ~200 MB | /opt/java/openjdk |
| Node 20 + npm | image-bundled | ~150 MB | /usr/bin/{node,npm} |
| Claude Code CLI | image-bundled | bundled in Node global | /usr/local/lib/node_modules/@anthropic-ai/claude-code |
util-linux (script) |
image-bundled | small | apt |
sudo NOPASSWD for vibe
|
image-bundled | n/a | /etc/sudoers.d/vibe-nopasswd |
| Android SDK | ✅ via doctor | 3-4 GB |
/opt/android-sdk (bind mount → ./vibe-coder-data/dev-tools/android-sdk/) |
| Gradle cache | filled on first build | 1-2 GB |
/home/vibe/.gradle (bind mount → ./vibe-coder-data/dev-tools/gradle/) |
MCP servers (npm -g) |
✅ via MCP catalog | varies |
/home/vibe/.local (bind mount → ./vibe-coder-data/dev-tools/npm-global/) |
| Playwright browsers | optional, via MCP | ~300 MB |
/home/vibe/.cache/ms-playwright (bind mount) |
| Claude auth credentials | ✅ via Claude auth UI | a few KB |
/home/vibe/.claude (bind mount → ./vibe-coder-data/claude/) |
Pre-0.7.0:
- Android SDK + Gradle cache were Docker named volumes —
vibe-android-sdk,vibe-gradle-cache. They surviveddocker compose up -d --force-recreatebut vanished ondocker compose down -v. -
MCP servers (installed by
vibe-doctor mcp→npm install -g) lived in the image's system directory/usr/local/lib/node_modules/. Ondocker compose pull && up -d, the new image had a fresh empty/usr/local/...and the MCPs vanished. -
/home/vibe/.npm,/home/vibe/.cache,/home/vibe/.confighad no mount at all.
v0.7.0 changes:
- vibe user's npm prefix moved to
/home/vibe/.local(via~/.npmrc). - All persistent directories collapsed under
./vibe-coder-data/(single host directory, no named volumes by default). - New volumes for
npm-global,npm-cache,playwright,config. - Image upgrade → tools survive guaranteed.
You can install any npm-distributed MCP that isn't in the curated catalog:
docker exec -it --user vibe vibe-coder-server bash
# Install your MCP (this goes to /home/vibe/.local — persistent!)
npm install -g some-mcp-server
# Register it in Claude
cat > ~/.claude/.mcp.json <<'JSON'
{
"mcpServers": {
"my-mcp": {
"command": "npx",
"args": ["-y", "some-mcp-server"],
"env": { "SOME_TOKEN": "..." }
}
}
}
JSONSince /home/vibe/.local and /home/vibe/.claude are both bind-mounted to
./vibe-coder-data/, your manual installations survive image upgrades.