Sign inSign up

asenci/sbx-kits:base

Manifest digest

sha256:d81082668ba3ff8099d086b57106fd3dafa978268f4fd9c2780b6f892d3f7f38

Last pushed

10 days by asenci

Type

Sandbox Kit

Manifest digest

sha256:d81082668ba3ff8099d086b57106fd3dafa978268f4fd9c2780b6f892d3f7f38

yaml
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