anamnesis

anamnesis: the transcendentalist demo brain, 9,233 dated entries drawn as stipple, turning slowly while region names surface and fade a local-first second brain that measures itself.

anamnesis gathers what you write and read (notes, journals, obsidian vaults, pdfs, feeds, web clips, chats) into one brain on your own machine. every item is a dot in a turning 3d stipple cloud; similar items gather into regions that keep their identity as the brain grows, and you can replay how they were born, split and merged. everything that changes the brain is an event in an append-only, hash-chained log, and that log drives a built-in evaluation that asks one question of your own writing:

is learning recollection? what share of the links i later make by hand was already latent in what i had written?

it is one rust binary with a browser ui. it works with no model at all, brings your own model when you want one (local, api key, or your chatgpt plan through openai’s sign-in), and is also an mcp server, so claude code, codex, gemini cli and claude desktop can read and write your brain with the subscriptions you already have.

the brain: a stipple point cloud in the shape of a brain, with region labels, the view panel on the right and the lineage timeline below chat answering from the brain, with cited items
the evaluation panel: latent links, retrieval, resurfacing, growth, each with an interval and a status when you wrote: writing over time by speaker
regions packed as spheres threads: decisions, open questions, plans and rejections found in the notes
a journal entry in the reader, with provenance and link suggestions settings: models, continue with chatgpt, the claude cli switch and routing

the pictures show the transcendentalist demo brain (9,233 dated entries from thoreau’s and emerson’s public-domain journals, embedded locally), served by a real anamnesis. the evaluation panel reads “measuring” because nobody has used that brain yet: those numbers only exist once a person does.

what it does

the demo brain growing: each dot appears in the order it was written, from 1820 to 1876, above a timeline of writing per year, with a red ring where a region is born

the brain keeps its history. every entry carries the date it was written, so the brain can be replayed in that order, and every region carries its lineage: when it was born, what it split from, what it merged into.

quick start

anamnesis is a desktop app: it opens in its own window, and the whole backend (storage, embeddings, search, the brain) runs inside it, on your machine. nothing goes to a server unless you connect a model and ask it something.

install (no build needed): download the installer for your system from the releases page.

system file notes
windows 10 / 11 anamnesis-<version>-windows-x86_64-setup.exe (or the .msi, or a portable .zip) installs for you only, no admin. unsigned for now: smartscreen says “windows protected your pc” → more info → run anyway. uses webview2, which windows 10 and 11 already have.
macos anamnesis_<version>_aarch64.dmg unsigned for now: right-click the app → open the first time.
linux .AppImage or .deb needs webkitgtk 4.1 (present on current gnome/kde desktops).

open anamnesis from the start menu, launchpad or app list. the first launch opens straight onto a demo brain, already built and embedded: 1,100 dated entries from the journals of thoreau and emerson (1820–1876, public domain in the us and brazil). turn it, open regions, search (“walden pond”, “friendship”), read entries, ask the chat. then file → import folder… (or “import a folder…” on the banner) to bring your own notes or obsidian vault, or “start empty”. the demo stays apart from your brain; “show a demo brain” in the view panel brings it back.

in the background, the first launch downloads the local embedding model (~465 MB, once). until it is ready, search matches words only; everything else works at once.

build from source: rust 1.90+ and a c compiler (on windows, the visual studio build tools with “desktop development with c++”; on linux, libwebkit2gtk-4.1-dev).

git clone https://github.com/aphesist/anamnesis
cd anamnesis
cargo run --release -p anamnesis-desktop     # the app
cargo build --release -p anamnesis-server    # the headless `anamnesis` cli: serve, import, mcp, verify, eval

the headless cli is also installed next to the app, for the mcp server (anamnesis mcp) and scripting. details per os, gpu builds, data locations and troubleshooting: docs/install.md; a tour: docs/using.md; the demo brain: docs/demo.md.

bring your own model

the routes to a model (local models, api keys, continue with chatgpt, your installed claude cli, marked grey) and the brain as an mcp server, with threads of stipple flowing into the brain

anamnesis never ships or resells a model. it routes each task to a backend you configure, local first; background work never runs on a subscription, and nothing falls back silently to a paid backend. the terms column is each provider’s own terms as of 2026-11-11, with dated quotes and links in docs/models.md.

provider route in anamnesis terms
anthropic your claude code / claude desktop / claude.ai connector, over mcp yes allowed
  api key yes allowed
  your own installed claude cli, signed in by you opt-in, chat only grey
  collecting claude.ai tokens, in-app claude login, account rotation no not offered
openai codex over mcp yes allowed
  api key (or any openai-compatible host, openrouter) yes allowed
  Continue with ChatGPT (openai’s sign-in for open-source local apps) yes, chat only, experimental allowed (preview)
  reusing codex’s stored login no not offered
google gemini cli / antigravity over mcp yes allowed
  gemini api key (ai studio) yes allowed
  consumer-plan logins (gemini cli / antigravity oauth) no not offered: google’s terms prohibit third-party use
local ollama, llama.cpp, lm studio, vllm (auto-detected) yes, the default allowed

the installed-cli route is off until you turn it on, and shows this notice wherever it appears:

uses your own claude login through anthropic’s official cli. anthropic has not explicitly approved third-party apps doing this and could restrict it at any time; the safest routes are the mcp server and an api key. anamnesis never reads your credentials.

the cli route also cleans its environment (no stray api key, endpoint or cloud-provider switch can move it off your login) and, by default, keeps your own claude code setup (CLAUDE.md, auto memory, hooks, skills, slash commands) out of anamnesis chats.

optional, grey: label requests as anamnesis

off by default. when you turn it on (settings → connections → claude cli · relabel), requests from the installed claude cli are labelled anamnesis instead of the cli’s own label, which changes how they are likely to be metered against your plan. other tools do the same (openbot; nous research’s hermes plugin). anthropic has not documented the weighting or said whether third-party apps may do this, so it could be treated as getting around your plan’s limits; it affects only your own account, and the project removes the option the moment anthropic says it is not allowed. you see this before it turns on:

label requests as “anamnesis” instead of the cli’s own label. claude code meters requests differently depending on how they say they were made; scripted (agent sdk) requests have been reported to count about twice as heavily against your plan limits. with this on, anamnesis’s requests identify themselves as coming from anamnesis rather than as agent sdk calls, so they are likely to be metered like interactive use. anthropic has not documented this weighting or said whether third-party apps may do this. it is a grey area: it could be treated as getting around your plan’s limits, and anthropic can restrict or suspend accounts without notice. it affects only your own account. anamnesis turns this off for everyone if anthropic says it is not allowed.

what anamnesis will not do

privacy

docs/privacy.md says exactly what is and is not covered.

the evaluation

a note is written; one suggested link is shown, another is predicted but held out and never shown; later a hand-drawn link lands on the held-out prediction, marked latent

built in, measured on your own use, from the event log (docs/evaluation.md):

the honesty table

claim status basis
on beir scifact, ndcg@10 is 0.327 (hash), 0.659 (bm25), 0.682 (multilingual-e5-small, the default embedder) measured lab benchmark, 300 queries, 95% bootstrap intervals in lab/README.md
on beir nfcorpus, ndcg@10 is 0.125 / 0.305 / 0.306 measured lab benchmark, 323 queries
layout trustworthiness ≈ 0.67 (umap, warm-started umap and pacmap; 2,000 demo notes, hash embeddings); warm-started umap roughly halves drift between growing snapshots measured lab benchmark (python reference methods; the rust layout is not yet in that harness)
regions over 20,000 × 384-d vectors take 0.1–0.16 s; a fresh layout 5.5–7.9 s measured anamnesis-mind benchmark on a loaded 4-core machine
search finds what you consider relevant measured per user, in the app your relevance labels; “measuring” below 25 queries
resurfaced items are more useful than a random pick measured per user, in the app micro-randomised trial; a hypothesis until each arm has ~95 ratings
a share of the links you make by hand was already latent in what you had written modelled, per user, in the app inverse-propensity estimate on held-out suggestions; assumes exposure does not change your unpredicted links; needs ≥ 50 hand links
link suggestions on the demo brain demonstration its links were added by a script; never reported as a metric
“it thinks like you” hypothesis not measured
learning is recollection hypothesis the philosophical frame: the number informs it, it cannot prove it

architecture

flowchart LR
  subgraph sources
    F[folders · vaults · pdfs<br/>feeds · web · json apis · plugins]
    E[editor · chat]
    M[mcp clients<br/>claude code · codex · gemini cli · desktop]
  end
  F --> C[anamnesis-connectors]
  C --> L[(anamnesis-core<br/>append-only, hash-chained event log<br/>+ sqlite projections · fts5 · vectors)]
  E --> L
  M <--> P[anamnesis-mcp] <--> L
  L --> EM[anamnesis-embed<br/>onnx · ollama · openai-compatible]
  EM --> L
  L --> MI[anamnesis-mind<br/>regions + lineage · layout · links · threads · review]
  MI --> L
  L --> EV[anamnesis-eval<br/>metrics from the log]
  L --> S[anamnesis-server<br/>http api · jobs · chat]
  S --> H[anamnesis-harness<br/>router · egress gate]
  H -->|only if you chose one| X[model provider]
  H --> L
  S --> U[ui/app + ui/theme<br/>webgl2 brain · panels]
  D[anamnesis-desktop<br/>native window · menus] --> S
  D --> U

every change is an event; items, links, threads, regions and suggestions are projections that replay from the log; embeddings and the layout are caches. more in docs/architecture.md.

repository layout

path what
crates/anamnesis-core data model, event log, sqlite storage, chunking, hybrid search, bundles
crates/anamnesis-connectors built-in connectors and the plugin runtime (PLUGINS.md)
crates/anamnesis-embed embedding backends
crates/anamnesis-mind regions, lineage, layout, link suggestion, threads, distil, resurfacing
crates/anamnesis-eval the built-in evaluation (README)
crates/anamnesis-harness model backends, routing, limits, usage, egress gate
crates/anamnesis-mcp the mcp server
crates/anamnesis-server the backend as a library, and the headless anamnesis cli
crates/anamnesis-desktop the desktop app (tauri 2): a native window with the backend in-process
ui/app the interface (plain es modules, webgl2, no build step), shown in the app’s window
ui/theme tokens, themes, fonts, settings, layout config (README)
demo/ the demo brain: 1,100 curated public-domain entries and a prebuilt, embedded snapshot shipped inside the app
packaging/ installers (windows nsis / msi / zip cross-build)
lab/ optional python lab: demo-brain builders and benchmarks (README)
docs/ install · using · models · mcp · evaluation · privacy · connectors · theming · architecture · demo · faq · http api
assets/readme/ the animated pictures in this readme, drawn from the demo brain’s real layout and dates

contributing: CONTRIBUTING.md. security: SECURITY.md.

licence

apache-2.0 (LICENSE, NOTICE). the bundled Special Elite font is apache-2.0, © 2010 Astigmatic.

the default theme ships the aphes.ist identity assets under their own terms: the Aphesis Script typeface under the SIL Open Font License 1.1 (reserved font name “Aphesis Script”), and the φ mark and wordmark as trademarks of their owner, not licensed for use by forks. forks should set their own mark (the theme falls back to a placeholder φ without it). see docs/theming.md. the pictures in assets/readme/ embed subsets of both fonts and the φ under the same terms.