Two services sharing a single image:
- web: Chainlit chat interface on port 8000
- email-worker: IMAP polling agent (main.py)
./data is mounted for persistent storage (registrations + conversations).
./openspec is mounted read-only so knowledge-base markdown files can be
edited on the host without rebuilding the image.
Configuration via .env (see .env.example).
https://claude.ai/code/session_015tJePX9eyQENYpJUF8XvvK