brainbox
Phase 0 prototype — full local loop worksA local-first personal AI that files your voice into a markdown vault you own forever — the model is scribe and librarian, never author.
- 32/32
- recall probes, zero hallucinations
- 0
- cloud calls, keys, or third parties
- ~250
- tests
- 7B
- model — CPU, no GPU
- Python
- faster-whisper
- Ollama / qwen2.5-7b
- SQLite FTS5
- sentence-transformers
The loop, end to end
talk → whisper → scribe → vault → index → ask → cited answer. All of it runs on your machine. A voice memo lands in inbox/ (or gets POSTed to the local server), faster-whisper transcribes it locally, and it is filed as one whole note. Ask a question in plain language and you get an answer drawn only from your own notes, with citations — or an admission that it doesn’t know.
Validated on a 47-note, 12,500-word corpus: 32 of 32 recall probes correct, zero hallucinations. Roughly 250 tests. No GPU required.
The rule that makes it work
The model is scribe and librarian. It is never the author.
A note’s body is your exact transcript, word for word. The model writes only the catalog card around it — title, tags, entities, links. It does not summarise, rephrase, or improve. This is the whole design, not a detail: the documented failure mode of every second-brain tool is someone importing two hundred AI-written notes and understanding none of them. Generated substance is what makes a knowledge base worthless.
So the split is deliberate. The librarian work — filing, linking, tagging, deduping, surfacing — is pure friction with zero cognitive value, and automating it is a clean win. The thinking stays human, done by talking, because voice is the only input that is simultaneously low-effort and genuinely yours.
Recall that would rather say nothing
Two-stage search: a bi-encoder recalls candidates over sentence chunks of whole notes, then a cross-encoder reranks them. Generation is gated — it answers from retrieved notes with citations, or it abstains. An assistant that guesses about your own life is worse than one that shrugs.
Curation is a human act
brainbox review is a swipe interface: keep, retitle, clarify, merge, reject. Only a human keep — or a confident auto-file — writes to the brain. Dormant notes are archived, never deleted: they leave active recall but stay on disk, and only a person hard-deletes anything.
It also connects and prioritises as it goes: auto-linking related notes, flagging likely duplicates, building Maps of Content, and weighting salience by recency of recurrence rather than raw frequency. Mention golf three times in a week and a naive system decides you’re a golfer; what matters is what you keep returning to over time.
And it is pull, not push. The brain is consulted. It does not nag. Proactive surfacing is opt-in.
Architecture
Four swappable layers plus a local HTTP on-ramp:
- L1 capture — faster-whisper, an inbox watcher, and the vocabulary and transcription-correction loop.
- L2 scribe — the moat. A pure
scribe_pipeline()that turns one transcript into one whole verbatim note plus filing metadata. - L3 index — SQLite with FTS5 and embedding blobs, contextual chunking, cross-encoder rerank, salience.
- L4 query — gated, abstaining, cited generation.
- server.py — the local HTTP on-ramp for phone capture and voice search.
The CLI is deliberately thin: argparse wiring and dispatch, with handlers split across capture, recall, and librarian. Models are local and small on purpose — the model’s job is made easy enough that a 7B suffices, and the answering model can be tiered up independently.
The vault lives at ~/brainbox-home/, outside the repo, as plain markdown. Open it in Obsidian and browse the graph. If this software disappears tomorrow, your brain is still a folder of files you can read.
Where it sits in the stack
brainbox is the application the other three exist to serve. When local knowledge or capability hits its limit, it hires a third-party agent through Junction41 rather than shipping your data to a platform — and everything crossing that boundary is checked by SovGuard, because a message from a stranger’s agent is exactly the untrusted input prompt injection exploits.
That is the whole argument in one line: the most personal software you own should be able to reach the wider agent economy without surrendering itself to it.