sha256:d81082668ba3ff8099d086b57106fd3dafa978268f4fd9c2780b6f892d3f7f38
Last pushed
10 days by asenci
Type
Sandbox Kit
Manifest digest
sha256:d81082668ba3ff8099d086b57106fd3dafa978268f4fd9c2780b6f892d3f7f38
schemaVersion: "2"
kind: sandbox
name: base
displayName: Base Layer
description: |
A shell sandbox extending docker/sandbox-templates:shell-docker with three coding-agent CLIs installed side by side — Claude Code, OpenAI Codex, and Google Antigravity, each with the obra/superpowers skills plugin — for multi-agent development workflows.
sandbox:
image: asenci/sbx-templates:base
agentInstructions:
filename: AGENTS.md
content: |
# Multi-Agent Dev Sandbox
This sandbox has three coding-agent CLIs installed, each with the
obra/superpowers skills plugin. Use whichever fits the task, or shell
out to one from another as a sub-agent:
- `claude` — Claude Code (Anthropic)
- `codex` — OpenAI Codex CLI
- `agy` — Google Antigravity CLI
permissions:
network:
allow:
- api.anthropic.com:443
- bridge.claudeusercontent.com:443
- claude.com:443
- downloads.claude.ai:443
- mcp-proxy.anthropic.com:443
- platform.claude.com:443
- api.openai.com:443
- auth.openai.com:443
- chatgpt.com:443
- files.openai.com:443
- openai.com:443
- accounts.google.com:443
- oauth2.googleapis.com:443
- www.googleapis.com:443
- lh3.googleusercontent.com:443
- aicode.googleapis.com:443
- cloudcode-pa.googleapis.com:443
- daily-cloudcode-pa.googleapis.com:443
- generativelanguage.googleapis.com:443
- antigravity.google:443
- antigravity.google.com:443
- antigravity-unleash.goog:443
- play.googleapis.com:443
- safebrowsing.googleapis.com:443
- www.gstatic.com:443
- antigravity-cli-auto-updater-974169037036.us-central1.run.app:443
- storage.googleapis.com:443
- github.com:443
- api.github.com:443
- codeload.github.com:443
- raw.githubusercontent.com:443
- objects.githubusercontent.com:443
- clickhouse.com:443
- frankenphp.dev:443
- getcomposer.org:443
- grafana.com:443
- opentelemetry.io:443
- www.php.net:443
volumes:
- path: /home/agent/.claude/projects
size: 2g
- path: /home/agent/.claude/sessions
size: 512m
- path: /home/agent/.claude/todos
size: 512m
- path: /home/agent/.claude/shell-snapshots
size: 512m
- path: /home/agent/.claude/statsig
size: 512m
credentials:
- service: anthropic
apiKey:
name: ANTHROPIC_API_KEY
inject:
- domain: api.anthropic.com
header: x-api-key
format: '%s'
- domain: console.anthropic.com
header: x-api-key
format: '%s'
- domain: claude.ai
header: x-api-key
format: '%s'
- domain: mcp-proxy.anthropic.com
header: x-api-key
format: '%s'
oauth:
tokenEndpoint:
host: platform.claude.com
path: /v1/oauth/token
sentinels:
accessToken: sk-ant-oat01-proxy-managed
refreshToken: sk-ant-ort01-proxy-managed
credentialFile:
path: ~/.claude/.credentials.json
template: '{"claudeAiOauth":{"accessToken":"{{.AccessToken}}","refreshToken":"{{.RefreshToken}}","expiresAt":{{.ExpiresAt}},"scopes":{{.ScopesJSON}}}{{if .PrimaryApiKey}},"primaryApiKey":"{{.PrimaryApiKey}}"{{end}}}'
- service: openai
apiKey:
name: OPENAI_API_KEY
inject:
- domain: api.openai.com
header: Authorization
format: Bearer %s
- domain: openai.com
header: Authorization
format: Bearer %s
oauth:
tokenEndpoint:
host: auth.openai.com
path: /oauth/token
resourceHosts:
- chatgpt.com
sentinels:
accessToken: oai-oat01-proxy-managed
refreshToken: oai-ort01-proxy-managed
- service: google
apiKey:
name: GEMINI_API_KEY
inject:
- domain: aiplatform.googleapis.com
header: x-goog-api-key
format: '%s'
- domain: generativelanguage.googleapis.com
header: x-goog-api-key
format: '%s'
- domain: oauth2.googleapis.com
header: x-goog-api-key
format: '%s'
- domain: vertexai.googleapis.com
header: x-goog-api-key
format: '%s'
oauth:
tokenEndpoint:
host: oauth2.googleapis.com
path: /token
resourceHosts:
- www.googleapis.com
- daily-cloudcode-pa.googleapis.com
- generativelanguage.googleapis.com
sentinels:
accessToken: agy-oat01-access-proxy-managed
refreshToken: agy-ort01-refresh-proxy-managed
credentialFile:
path: ~/.gemini/antigravity-cli/antigravity-oauth-token
template: '{"token":{"access_token":"{{.AccessToken}}","token_type":"Bearer","refresh_token":"{{.RefreshToken}}","expiry":"9999-12-31T23:59:59Z"},"auth_method":"consumer"}'
environment:
variables:
BROWSER: xdg-open
CLAUDE_ENV_FILE: /etc/sandbox-persistent.sh
CODEX_HOME: /home/agent/.codex
GIT_TERMINAL_PROMPT: "0"
IS_SANDBOX: "1"
setup:
install:
- command: |
set -euo pipefail ; \
claude plugin marketplace add hashicorp/agent-skills & \
codex plugin marketplace add hashicorp/agent-skills & \
wait
user: agent
description: Install Hashicorp plugin marketplace
- command: |
set -euo pipefail ; \
claude plugin marketplace add grafana/skills & \
codex plugin marketplace add grafana/skills & \
wait
user: agent
description: Install Grafana plugin marketplace
- command: |
set -euo pipefail ; \
claude plugin marketplace add jeffallan/claude-skills & \
codex plugin marketplace add jeffallan/claude-skills & \
wait
user: agent
description: Install jeffallan plugin marketplace
- command: |
set -euo pipefail ; \
claude plugin marketplace add samber/cc & \
codex plugin marketplace add samber/cc & \
wait
user: agent
description: Install samber plugin marketplace
- command: |
set -euo pipefail ; \
claude plugin marketplace add wshobson/agents & \
codex plugin marketplace add wshobson/agents & \
wait
user: agent
description: Install wshobson plugin marketplace
- command: |
set -euo pipefail ; \
(claude plugin marketplace add obra/superpowers-marketplace && claude plugin install superpowers@superpowers-marketplace) & \
(codex plugin marketplace add obra/superpowers-marketplace && codex plugin add superpowers@superpowers-marketplace) & \
agy plugin install https://github.com/obra/superpowers & \
wait
user: agent
description: Install superpowers marketplace and plugins
- command: |
set -euo pipefail ; \
(claude plugin marketplace add ayghri/i-have-adhd && claude plugin install i-have-adhd@i-have-adhd) & \
(codex plugin marketplace add ayghri/i-have-adhd && codex plugin add i-have-adhd@i-have-adhd) & \
agy plugin install https://github.com/ayghri/i-have-adhd & \
wait
user: agent
description: Install i-have-adhd marketplace and plugins
- command: |
set -euo pipefail ; \
#npx skills@latest add mattpocock/skills --all --agent claude-code --global --yesl & \
#npx skills@latest add mattpocock/skills --all --agent universal --global --yes & \
wait
user: agent
description: Install mattpocock skills
- command: |
set -euo pipefail ; \
npx skills@latest add vercel-labs/skills --skill find-skills --agent claude-code --global --yes & \
npx skills@latest add vercel-labs/skills --skill find-skills --agent universal --global --yes & \
wait
user: agent
description: Install find-skills skill
- command: |
set -euo pipefail ; \
npx skills@latest add amElnagdy/delegate-skills --skill delegate-setup --agent claude-code --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill delegate-setup --agent universal --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill claude-delegate --agent claude-code --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill claude-delegate --agent universal --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill codex-delegate --agent claude-code --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill codex-delegate --agent universal --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill agy-delegate --agent claude-code --global --yes & \
npx skills@latest add amElnagdy/delegate-skills --skill agy-delegate --agent universal --global --yes & \
wait
user: agent
description: Install delegate skills
startup:
- command:
- sh
- -c
- chown -R agent:agent /home/agent/.claude/projects /home/agent/.claude/sessions /home/agent/.claude/todos /home/agent/.claude/shell-snapshots /home/agent/.claude/statsig 2>/dev/null || true
user: root
description: Re-own claude session-state volume mount roots to agent (block-volume mkfs trap)
- command:
- sh
- -c
- command -v apt-get > /dev/null 2>&1 && (apt-get update -qq -y > /dev/null 2>&1 || true) &
user: root
description: Update apt package cache in background