Sign inSign up

sbx/claude-ollama-kit:20260813-76b68da5d7615bc50701d6823f5133fab1b263c3

Manifest digest

sha256:4aa1f66fc6912e1b1091256a4e825adb989916fc1ddf33db7337df991b6d338a

Last pushed

about 1 month by dockerpublicbot

Type

Sandbox Kit

Manifest digest

sha256:4aa1f66fc6912e1b1091256a4e825adb989916fc1ddf33db7337df991b6d338a

yaml
schemaVersion: "2"
kind: sandbox
name: claude-ollama
displayName: Claude Code (Ollama)
description: Claude Code wired to Ollama Anthropic-compatible API, with configurable model.
sandbox:
    image: docker/sandbox-templates:claude-code-docker
    entrypoint:
        - /home/agent/.local/bin/claude-ollama
agentInstructions:
    filename: CLAUDE.md
    content: |
        ## Sandbox environment

        You are running inside a Docker sandbox. All API calls are routed to a local
        Ollama instance on the host (http://host.docker.internal:11434) — Anthropic's
        API is not reachable. The workspace is mounted at its absolute host path.
        `sudo` is passwordless; use it for package installs.
permissions:
    network:
        allow:
            - localhost:11434
environment:
    variables:
        CLAUDE_OLLAMA_MODEL: gemma4:e4b-it-q4_K_M
setup:
    install:
        - command: |
            set -e
            mkdir -p /home/agent/.claude
            if [ ! -f /home/agent/.claude/settings.json ]; then
              HELPER=''
              if [ "${SBX_CRED_ANTHROPIC_MODE:-none}" != none ]; then
                HELPER='  "apiKeyHelper": "echo proxy-managed",
            '
              fi
              printf '%s' "{
              \"themeId\": 1,
              \"alwaysThinkingEnabled\": true,
            ${HELPER}  \"defaultMode\": \"bypassPermissions\",
              \"bypassPermissionsModeAccepted\": true
            }
            " > /home/agent/.claude/settings.json
            fi
            chown -R agent:agent /home/agent/.claude
          user: root
          description: Seed Claude settings.json (none path; no credential service)
    files:
        - path: /home/agent/.claude.json
          content: |
            {
              "bypassPermissionsModeAccepted": true,
              "hasCompletedOnboarding": true,
              "projects": {
                  "/": {
                  "hasTrustDialogAccepted": true
                }
              }
            }
          onlyIfMissing: true
          description: Claude bypass flags (mode-independent)
        - path: /home/agent/.local/bin/claude-ollama
          content: |
            #!/usr/bin/env bash
            set -euo pipefail

            export ANTHROPIC_AUTH_TOKEN="ollama"
            unset ANTHROPIC_API_KEY
            export ANTHROPIC_BASE_URL="http://host.docker.internal:11434"

            export ANTHROPIC_DEFAULT_OPUS_MODEL="$CLAUDE_OLLAMA_MODEL"
            export ANTHROPIC_DEFAULT_SONNET_MODEL="$CLAUDE_OLLAMA_MODEL"
            export ANTHROPIC_DEFAULT_HAIKU_MODEL="$CLAUDE_OLLAMA_MODEL"
            export CLAUDE_CODE_SUBAGENT_MODEL="$CLAUDE_OLLAMA_MODEL"

            exec claude "$@"
          mode: "0755"
          description: Wrapper script that routes Claude Code to the local Ollama instance