prxy.monster API-key BYOK is live. Start free

Docker reference

Pull the image

docker pull prxymonster/local:latest

Tags follow semver: latest, 1, 1.0, 1.0.3. For production pin to a minor (1.0).

Minimal run

docker run -d \
  --name prxy \
  -p 3099:3099 \
  -v ~/.prxy:/data \
  -e ANTHROPIC_API_KEY=sk-ant-xxx \
  prxymonster/local:latest
FlagWhy
-dDetach (run in background).
--name prxyEasy docker logs prxy, docker stop prxy.
-p 3099:3099Bind to host port. Use -p 127.0.0.1:3099:3099 to keep it local-only.
-v ~/.prxy:/dataPersistent storage. Container is stateless without this.
-e ANTHROPIC_API_KEYAt least one provider key required.

All environment variables

Required

Optional

VariableDefaultNotes
OPENAI_API_KEYWires the OpenAI provider.
GOOGLE_API_KEYWires Google (Gemini).
GROQ_API_KEYWires Groq.
VOYAGE_API_KEYEmbeddings for mcp-optimizer/semantic-cache. Falls back to offline stub if unset.
PRXY_PIPEmcp-optimizer,semantic-cache,patternsDefault pipeline.
PORT3099HTTP listen port.
LOG_LEVELinfodebug, info, warn, error.
LOCAL_MODEtrue (forced in this image)Don’t change.
DATA_DIR/dataWhere local state and blobs live. Map a volume here.

Persistent volume

-v ~/.prxy:/data

Anything in /data survives container restarts. Inside:

/data/
├── state.db         ← Local database. Patterns, embeddings, cached responses.
├── blob/            ← Compressed conversation archives.
└── config.yaml      ← Optional pipeline config.

Backup: tar czf prxy-backup.tgz ~/.prxy. Restore: untar to the same location.

Healthcheck

docker run -d \
  --health-cmd='curl -fsS http://localhost:3099/health || exit 1' \
  --health-interval=30s \
  --health-retries=3 \
  --health-start-period=10s \
  -p 3099:3099 \
  -v ~/.prxy:/data \
  -e ANTHROPIC_API_KEY=sk-ant-xxx \
  prxymonster/local:latest

The /health endpoint returns 200 when the process is responsive.

Compose file

# docker-compose.yml
services:
  prxy:
    image: prxymonster/local:latest
    container_name: prxy
    ports:
      - '127.0.0.1:3099:3099'
    volumes:
      - ./prxy-data:/data
    environment:
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
      OPENAI_API_KEY: ${OPENAI_API_KEY:-}
      PRXY_PIPE: 'exact-cache,semantic-cache,patterns,ipc'
      LOG_LEVEL: info
    healthcheck:
      test: ['CMD-SHELL', 'curl -fsS http://localhost:3099/health || exit 1']
      interval: 30s
      retries: 3
    restart: unless-stopped

Logs

docker logs -f prxy

JSON-structured. Pipe to jq for pretty output:

docker logs -f prxy 2>&1 | jq -R 'fromjson? // .'

Updates

docker pull prxymonster/local:latest
docker stop prxy
docker rm prxy
docker run -d --name prxy -p 3099:3099 -v ~/.prxy:/data \
  -e ANTHROPIC_API_KEY=sk-ant-xxx prxymonster/local:latest

The volume persists across container replacements. Schema migrations run automatically on boot.

Resource sizing

The container is small — ~200 MB image, ~150 MB resident in steady state. CPU spikes briefly during embedding generation (when mcp-optimizer or semantic-cache need to embed a request).

WorkloadRecommended
Single developer, casual1 vCPU, 512 MB RAM
Single developer, MCP-heavy2 vCPU, 1 GB RAM
Small team, shared instance2 vCPU, 2 GB RAM
High-volume support botRun cloud mode instead

See also