A personal agent: a weekly digest, a Notion-mirrored memory, and one conversation you can reach from Discord or from Claude Code.
How it fits together: the architecture as a
one-page visual (open the file, or /architecture in qm web).
docs/GUIDE.md is how to use it (qm web serves it too). CLAUDE.md explains
what exists and why; docs/ROADMAP.md covers what's next.
- One source of truth per thing. Notion is human-authored — knowledge, todos, wishlists. The vault mirrors it and adds what the agent learns. Nothing is authored twice, so there is no sync conflict to resolve.
- Mute is permanent, reminding is the default. Everything nudge-able has an ID. It keeps surfacing until you say stop; then it never comes back.
- Markdown for what you read, SQLite for what the machine counts. The database never holds the only copy of anything you'd miss.
The bot can sit in a shared server, so who is talking decides which profile
answers — and the profile, not a prompt rule, decides what can be reached.
A prompt instruction is not a boundary against someone who can send arbitrary
text. Different working directories, tool lists and a path-checking hook are.
Details in CLAUDE.md.
The vault lives outside this repo (set via QM_VAULT_PATH) and is its own
private git repo. Code and personal data version separately.
python -m venv .venv
./.venv/Scripts/python.exe -m pip install -e ".[bot,integrations,dev]"
cp .env.example .env # then fill it in
./.venv/Scripts/qm.exe doctor # tells you what's still missing
./.venv/Scripts/qm.exe init # create the vault
./.venv/Scripts/qm.exe sync # pull Notion
git config core.hooksPath .githooksThe hook scans staged content for credentials and personal identifiers and blocks the commit. This repo is public and git history is permanent.
| Phase | State |
|---|---|
| 1 — Vault and Notion mirror | Done, synced daily |
| 2 — Discord bot and moderation | Done |
| 3 — Google, Microsoft To Do, Spotify | Done |
| 4 — The weekly digest | Done |
| 5 — Infra (service, backups, Tailscale) | Next |
./.venv/Scripts/python.exe -m pytest tests/ -q