Baker Street

Deploy with Docker Compose

Run Baker Street locally with Docker Compose for development and testing.

Deploy with Docker Compose

Docker Compose provides a quick way to run Baker Street locally for development and testing. This is not recommended for production use -- see the Kubernetes deployment guide for production.

Prerequisites

  • Docker and Docker Compose v2 installed
  • An Anthropic API key
  • A Voyage AI API key for memory embeddings

Environment Setup

Create a .env file in the project root:

# LLM and Embedding
ANTHROPIC_API_KEY=sk-ant-...
VOYAGEAI_API_KEY=pa-...

# JWT for API authentication
JWT_SECRET=change-this-to-a-random-string

# Optional: messaging integrations
TELEGRAM_BOT_TOKEN=
DISCORD_BOT_TOKEN=

Start the Stack

docker compose up -d

This launches all core services:

ServicePortDescription
brain3000Agent orchestrator
worker--Background job processor
gateway3001Telegram/Discord bridge
ui8080Web interface
nats4222Message bus
qdrant6333Vector memory store

Verify Services

Check that all containers are running:

docker compose ps

Open the web UI at http://localhost:8080 and send a test message.

Viewing Logs

# All services
docker compose logs -f

# Single service
docker compose logs -f brain

Development Workflow

For active development, mount source directories as volumes so changes are reflected without rebuilding:

docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d

The development overlay mounts packages/ and services/ as volumes with hot-reload enabled via tsx watch.

Rebuilding After Changes

docker compose build brain worker gateway
docker compose up -d

Limitations

The Docker Compose setup does not support:

  • Task Pods -- these require a Kubernetes API to launch Jobs
  • Extensions -- pod-based MCP extensions need Kubernetes service discovery
  • Network Policies -- Docker networking does not enforce the same isolation guarantees
  • Companion agents -- distributed agent features require NATS accessible from external hosts

For the full feature set, deploy to a Kubernetes cluster.