famulus-mail/
deploy/
com.ai-platform.famulus-mail-traffic.plist
com.ai-platform.famulus-mail.plist
famulus-mail-nightly.sh
docs/
index_files/
index.html
index.qmd
groups/
topoi-repository.yaml
src/
famulus_mail/
templates/
brief.yaml
famulus-rundbrief.yaml
kurznachricht.yaml
topoi-repository-online.yaml
tests/
test_famulus_mail.py
pyproject.toml
README.md
uv.lock
The owner's mail ledger and address book, with groups, traffic history, personalised letter templates and the Famulus Rundbrief campaigns. It is served on port 5310 at /famulus-mail and over MCP at http://127.0.0.1:5310/mcp.
| What | Where |
|---|---|
| Store (one DuckDB, one writer) | ~/Library/Application Support/FamulusMail/famulus_mail.duckdb |
| Sent mail in | privatkanzlei journal data/db/mail_sent_log.jsonl (written by every mailservice.send), outbox backfill, archive enrichment |
| Address book | seeded from the owner's sent mail in korrespondenz.duckdb; greeting, du/Sie, language and closing learned from the last mail to the person alone |
| Groups | groups/*.yaml (manual) and the mirror famulus-rundbrief of publication/rundbriefe/famulus-news/subscribers/ |
| Templates | templates/*.yaml (Jinja per language: anrede, gruss, du("…","…"), vars, issue) |
| Sending | through the privatkanzlei mail service (hu, gmail, ost, service) or the Famulus News Gmail sender (famulus-news), only with explicit confirmation |
uv sync --extra dev
.venv/bin/famulus-mail seed # address book from the archive
.venv/bin/famulus-mail traffic # traffic snapshot (fails visibly while the privatkanzlei sync holds the archive)
.venv/bin/famulus-mail ingest # sent journal + outbox backfill
.venv/bin/famulus-mail groups # group YAMLs + Rundbrief mirror
.venv/bin/famulus-mail serve # UI, API, MCP on :5310
The documentation is in docs/index.qmd.