📚 An agent harness that only knows what you give it; upload entire textbooks, and it only answers from those.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-17 00:07:24 -04:00
migrations login 2026-09-15 22:09:19 -04:00
src human review 2026-09-17 00:05:46 -04:00
static better settings 2026-09-17 00:07:24 -04:00
.env.example updated attrs & env 2026-09-16 21:59:52 -04:00
.gitattributes updated attrs & env 2026-09-16 21:59:52 -04:00
.gitignore web panel & vectorizations 2026-09-08 21:44:15 -04:00
AGENTS.md human review 2026-09-17 00:05:46 -04:00
Cargo.lock text fallback 2026-09-13 22:56:38 -04:00
Cargo.toml text fallback 2026-09-13 22:56:38 -04:00
LICENSE Initial commit 2026-09-08 18:20:58 -04:00
README.md Update README.md 2026-09-16 22:01:04 -04:00

📚 notebook

An agent harness over your own sources: upload documents; an analyzer model vectorizes each one into a database so a researcher can easily index sources and ask questions with citations. It answers only from your sources, so it knows only what you give it and avoids hallucinations. Supports vaults; you can isolate and organize each source so it stays on the topic of that vault.

📽️ Video demonstration - Calculus prompt (data: two >700 page textbooks)

Running

Warning

When you first run, you'll be asked to set a password. Do not expose the site beyond locally until this has been done.

cargo run

When you first run, make sure you do not publicly expose the site, as you'll want to set a password first. The default bind is localhost:8080, so open http://127.0.0.1:8080. Once it's set up, click the model chip in the prompt bar and choose Configure, then add a provider. Any API endpoint that supports the OpenAI-style responses or chat completions, or any endpoint that supports the Anthropic-style messages endpoint will work.

.env (see .env.example) is optional and covers server settings only: bind address, database and upload paths.

Behind a reverse proxy

If you wish to serve this from a subdirectory, you can set the path in .env by setting the BASE_PATH.