The §15 door's email_send queues to `outbox` but nothing delivered it. Add a real transport: cm-db outbox repo (list_queued/mark_sent/mark_failed) + a cm-runtime drainer — an EmailSender trait (testable), a lettre STARTTLS LettreSender, drain_once (queued -> sent/failed), and spawn_drainer wired into the server beside the scheduler/sweeper/topology-worker. Config-gated: inert (logs "outbox delivery DISABLED") until CLAWMATES_SMTP_* is set, so it ships safely before credentials exist. The agent never holds the SMTP credential — it only writes to outbox through the gated door; the server owns the transport. NOTE: live delivery is still credential-blocked — Migadu's API can't send (SMTP-only) and the admin token is invalid; no SMTP creds exist. The transport is built + tested (drain_marks_sent_and_failed via a mock sender); set CLAWMATES_SMTP_* to go live with zero further code. clippy clean. Co-Authored-By: Claude Opus 4.8 <[email protected]>
48 lines
2.3 KiB
Bash
48 lines
2.3 KiB
Bash
# Copy to .env and set real values before `docker compose up`.
|
|
# These are overlaid onto clawmates.toml at runtime (CLAWMATES_* env wins).
|
|
|
|
# --- Required ---------------------------------------------------------------
|
|
# Postgres superuser password (also used in the server/broker DSN).
|
|
POSTGRES_PASSWORD=change-me
|
|
|
|
# Image tag to run. `latest` after a local `docker compose build`, or the
|
|
# release version (e.g. 0.1.0) when installing from a signed bundle.
|
|
CLAWMATES_VERSION=latest
|
|
|
|
# --- First-owner bootstrap (local auth) -------------------------------------
|
|
# A fresh install has no users and no public signup. Set a password here and
|
|
# the server provisions this Owner + workspace ONCE on first boot, then never
|
|
# again (safe to leave set across restarts). Remove/blank to disable.
|
|
CLAWMATES_BOOTSTRAP_OWNER_EMAIL=[email protected]
|
|
CLAWMATES_BOOTSTRAP_OWNER_PASSWORD=
|
|
CLAWMATES_BOOTSTRAP_WORKSPACE=My Workspace
|
|
CLAWMATES_BOOTSTRAP_CREDITS=1250
|
|
|
|
# --- LLM --------------------------------------------------------------------
|
|
# Default config (clawmates.toml) uses an OpenAI-compatible endpoint at
|
|
# http://local-llm:8000/v1 — point base_url at your vLLM/Ollama/llama.cpp.
|
|
# To use Anthropic instead, set llm.provider = "anthropic" in clawmates.toml
|
|
# and provide the key here (uncomment):
|
|
# ANTHROPIC_API_KEY=sk-ant-...
|
|
|
|
# --- Auth mode (optional) ---------------------------------------------------
|
|
# clawmates.toml defaults to mode = "local". For Clerk, set mode = "clerk"
|
|
# and auth.issuer_url there, then supply the frontend keys (see docs/clerk.md):
|
|
# AUTH_MODE=clerk
|
|
# CLERK_PUBLISHABLE_KEY=pk_live_...
|
|
# CLERK_SECRET_KEY=sk_live_...
|
|
|
|
# --- Observability (optional) -----------------------------------------------
|
|
# Export traces to an OTLP/HTTP collector. Unset = logs only, no network.
|
|
# CLAWMATES_TELEMETRY__OTLP_ENDPOINT=http://otel-collector:4318
|
|
|
|
# --- Outbound email delivery (optional) -------------------------------------
|
|
# The §15 door's email_send queues to `outbox`; the server's drainer delivers
|
|
# over SMTP when these are set (otherwise it logs "outbox delivery DISABLED"
|
|
# and rows stay queued). Use an SMTP submission account (host + app password).
|
|
# CLAWMATES_SMTP_HOST=smtp.migadu.com
|
|
# CLAWMATES_SMTP_PORT=587
|
|
# [email protected]
|
|
# CLAWMATES_SMTP_PASS=<smtp app password>
|
|
# [email protected]
|