Skip to content

Deploying with brew

tama brew compiles your project into a lean Docker image. The image contains only the tamar runtime, your agent and skill files, and the installed skill dependencies.

Terminal window
tama brew
# or with a custom tag
tama brew --tag registry.example.com/my-project:v1.0.0
Terminal window
docker run \
-e ANTHROPIC_API_KEY=sk-ant-... \
-e TAMA_MODEL_THINKER=anthropic:claude-opus-4-6 \
my-project:latest \
"research fusion energy trends"

The container exits when the agent finishes. The final output is written to stdout. Trace data is written to stderr.

Terminal window
tama brew --tag registry.example.com/my-project:v1.0.0
docker push registry.example.com/my-project:v1.0.0
apiVersion: batch/v1
kind: Job
metadata:
name: research-job
spec:
template:
spec:
containers:
- name: tamar
image: registry.example.com/my-project:v1.0.0
args: ["research fusion energy trends"]
env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: api-keys
key: anthropic
- name: TAMA_MODEL_THINKER
value: anthropic:claude-sonnet-4-6
restartPolicy: Never

The distroless base keeps images small:

ComponentSize
Distroless base~2MB
tamar binary~5MB
Agent/skill files~1MB (typical)
Skill dependenciesvaries
Total (no deps)~8MB

Never bake API keys into the image. Pass them at runtime:

Docker:

Terminal window
docker run -e ANTHROPIC_API_KEY=... my-project:latest "task"

Docker Compose:

services:
agent:
image: my-project:latest
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- TAMA_MODEL_THINKER=anthropic:claude-sonnet-4-6

Kubernetes secrets:

env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: api-keys
key: anthropic

Override the entrypoint without rebuilding:

Terminal window
docker run \
-e TAMA_ENTRYPOINT_AGENT=summarizer \
-e ANTHROPIC_API_KEY=... \
my-project:latest \
"the text to summarize..."
.github/workflows/deploy.yml
name: Build and Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install tama
run: cargo install tama # or download binary
- name: Lint
run: tama lint
- name: Build image
run: tama brew --tag ghcr.io/${{ github.repository }}:${{ github.sha }}
- name: Push
run: docker push ghcr.io/${{ github.repository }}:${{ github.sha }}