Sign inSign up

docker/sbx-kit-claude-ollama-mixin:latest

Multi-platform
Manifest digest

sha256:a25fe18e4c990f4cfa174a1e34c86efb9fa2c45a940eead8c199c599109f7542

Last pushed

9 days by cdupuis

Type

Sandbox Kit

Manifest digest

sha256:a25fe18e4c990f4cfa174a1e34c86efb9fa2c45a940eead8c199c599109f7542

yaml
schemaVersion: "3"
displayName: Claude Code (Ollama) (mixin)
description: Routes Claude Code at an Ollama Anthropic-compatible API on the host as a mixin — the wrapper script, the local endpoint's egress, and the model variable in an overlay. Layer it onto a shell base that carries Claude Code and run `claude-ollama`.
version: 1.0.0
kind: mixin
provides:
    - claude-ollama
requires:
    - claude
capabilities:
    - type: com.docker.sandbox/network-policy@1
      config:
        runtime:
            allow:
                - host.docker.internal:11434
    - type: com.docker.sandbox/lifecycle@1
      config:
        files:
            - content: |
                {
                  "bypassPermissionsModeAccepted": true,
                  "hasCompletedOnboarding": true,
                  "projects": {
                      "/": {
                      "hasTrustDialogAccepted": true
                    }
                  }
                }
              description: Claude bypass flags (mode-independent)
              overwrite: false
              path: /home/agent/.claude.json
            - 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 "$@"
              description: Wrapper script that routes Claude Code to the local Ollama instance
              mode: "0755"
              path: /home/agent/.local/bin/claude-ollama
        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
                # Enumerated, not recursive: ~/.claude holds runtime-managed content
                # this kit doesn't own, so `chown -R` on the parent would take
                # ownership of paths outside the kit's control.
                chown agent:agent /home/agent/.claude /home/agent/.claude/settings.json
              description: Seed Claude settings.json (none path; no credential service)
              env:
                - SBX_CRED_ANTHROPIC_MODE
              user: root
    - type: com.docker.sandbox/agent-context@1
      config:
        contentFile: /usr/share/sandbox/kit/claude-ollama-mixin/claude-ollama-mixin-context.md