docs(examples): compose for the minimal setup - postgres, real env, no phase notes
This commit is contained in:
@@ -39,14 +39,16 @@ a model or a user has an English default and is overridable
|
|||||||
## Run
|
## Run
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
uv sync # python
|
cd examples
|
||||||
cd ui && bun install && cd .. # admin + panel SPA, built into ui/build
|
CLAUDE_CODE_OAUTH_TOKEN=$(claude setup-token) docker compose up --build
|
||||||
cp examples/config.py /config/config.py
|
|
||||||
DATABASE_URL=postgresql+psycopg://... CONFIG_PATH=/config/config.py uv run beaver-gateway
|
|
||||||
```
|
```
|
||||||
|
|
||||||
`examples/config.py` is the smallest setup that starts. The setup's own
|
`examples/config.py` is the smallest setup that starts: one agent, one
|
||||||
secrets come from `.env` (`load_dotenv` runs before the config is executed).
|
python tool, one cron job, the built-in frontends on port 8000; the compose
|
||||||
|
file next to it adds Postgres. Without Docker: `uv sync`, build the SPA with
|
||||||
|
`cd ui && bun install && bun run build`, then run `uv run beaver-gateway` with
|
||||||
|
`DATABASE_URL` and `CONFIG_PATH` set. A setup's own secrets come from `.env`
|
||||||
|
next to its config (`load_dotenv` runs before the config is executed).
|
||||||
|
|
||||||
## Develop
|
## Develop
|
||||||
|
|
||||||
|
|||||||
+27
-22
@@ -1,31 +1,36 @@
|
|||||||
# Minimal compose for the Phase 0 DoD: build the image, mount a
|
|
||||||
# single-file user config, watch the process print its summary line
|
|
||||||
# and exit cleanly.
|
|
||||||
#
|
|
||||||
# Real deployments add a postgres service, raycast-config.json bind,
|
|
||||||
# ~/.config/claude bind, etc. — Phase 5 lives in a separate example
|
|
||||||
# repo (see PLAN §5.1).
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: beaver
|
||||||
|
POSTGRES_PASSWORD: beaver
|
||||||
|
POSTGRES_DB: beaver
|
||||||
|
volumes:
|
||||||
|
- postgres-data:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U beaver -d beaver"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 3s
|
||||||
|
retries: 20
|
||||||
|
|
||||||
gateway:
|
gateway:
|
||||||
build:
|
build:
|
||||||
context: ..
|
context: ..
|
||||||
dockerfile: Dockerfile
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
DATABASE_URL: "sqlite:///./gateway.db"
|
CONFIG_PATH: /config/config.py
|
||||||
ADMIN_USER: "admin"
|
DATABASE_URL: postgresql+psycopg://beaver:beaver@postgres:5432/beaver
|
||||||
ADMIN_PASS: "change-me"
|
ADMIN_USER: admin
|
||||||
SESSION_SECRET: "dev-secret-change-me"
|
ADMIN_PASS: change-me
|
||||||
# Phase 1.4 — comma-separated `name:value` pairs. The frontend
|
SESSION_SECRET: change-me-too
|
||||||
# 401s every request until at least one token is set.
|
BOOTSTRAP_TOKENS: dev:change-me:*
|
||||||
BOOTSTRAP_TOKENS: "cursor:dev-token-change-me"
|
CLAUDE_CODE_OAUTH_TOKEN: ${CLAUDE_CODE_OAUTH_TOKEN}
|
||||||
# RAYCAST_BEARER / RAYCAST_DEVICE_ID + a raycast.json bind go
|
|
||||||
# here once you wire up an actual RaycastAgent. The example
|
|
||||||
# config.py declares one, so set these (or remove the agent)
|
|
||||||
# before exposing port 8000.
|
|
||||||
ports:
|
ports:
|
||||||
# The one gateway port: /anthropic, /mcp, /admin, /md under it
|
|
||||||
# (change ADMIN_USER/ADMIN_PASS/SESSION_SECRET before exposing).
|
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
volumes:
|
volumes:
|
||||||
- ./config.py:/config/config.py:ro
|
- ./config.py:/config/config.py:ro
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres-data:
|
||||||
|
|||||||
Reference in New Issue
Block a user