Use existing subscriptions and local models.
Bring your Claude Code, Codex, Gemini CLI, Copilot, or Cursor subscription. Route a thread through a gateway, Ollama, LM Studio, or Apple’s on-device model. Every answer shows which provider wrote it.
Alchemy is a local-first research notebook for macOS. Import papers, repositories, folders, and links. Ask questions with citations, then create documents, decks, and podcasts. Inspired by NotebookLM, built to stay private: Alchemy indexes and stores the library on your Mac. Every cited passage opens in the source. The decisions remain yours.
Requires macOS on Apple Silicon · Signed and notarized · Free and open source (MPL-2.0)
$brew install --cask thrashr888/tap/alchemy
Import source material and ask questions with citations. Generate a brief, deck, or podcast in the same notebook.
Bring your Claude Code, Codex, Gemini CLI, Copilot, or Cursor subscription. Route a thread through a gateway, Ollama, LM Studio, or Apple’s on-device model. Every answer shows which provider wrote it.
Add a Git repository or local checkout without turning it into a text upload. Documentation stays navigable, code stays searchable, and Alchemy re-syncs through your Git credentials.
Hybrid semantic and exact search finds the evidence. Each citation opens the source at the matching passage; Deep Research and Ask Everything widen the search only when needed.
Turn current notebook sources into editable documents, 16:9 decks, quizzes, mind maps, UML diagrams, infographics, tables, or a narrated Audio Overview—without exporting your context first.
The localhost MCP server lets Codex, Claude Code, Gemini CLI, and other agents search, add, and write in the notebook you already use—no copy/paste handoff. The same server answers the alchemy command line: add files, URLs, or piped text and search from any shell.
$npx skills add thrashr888/alchemy@alchemy$brew install thrashr888/tap/alchemy-cliSources are extracted, indexed, and stored on your Mac. Every notebook also lives as files you can inspect, edit, and move. You choose what chat context reaches a provider; Ollama and Apple’s on-device model keep chat offline. Alchemy copies the whole library every night and keeps a week of copies plus four weekly ones, so a bad day is something you restore from rather than recover from.
Alchemy’s search is tested against public BEIR benchmarks. The built-in engine scores 0.737 on SciFact, higher than BM25 (0.665) and TAS-B (0.643), with everything running on your Mac. That figure includes an on-device reranking pass. Ollama embeddings score higher without one — reranking a stronger set of results makes them worse — so each row quotes the setting that wins for it.
A fresh install picks its starting model by how much memory your Mac has, from 8GB up to a 512GB Studio. The table is for choosing your own: each model is evaluated against the full pipeline, meaning retrieval, citation of the known-correct evidence, and per-claim support. The test suite is reproducible from the repository.
| Model | Evidence cited | Two‑source questions | Faithfulness | Notes |
|---|---|---|---|---|
qwen3.8:27b-mlx$ ollama pull qwen3.8:27b-mlx |
76% | 88% | 0.69 / 0.95 | Fast, precise citations, but it overstates what sources say. The verify pass corrects it. |
ornith-1.5:9b$ ollama pull ornith-1.5:9b |
76% | 84% | 0.69 / 0.99 | Best citations of the small models. Never declines, so its misses arrive confident. |
muse-glimmertwo-source pick$ ollama pull muse-glimmer |
68% | 88% | 0.89 / 0.94 | Best at two-source citations. The 30B variant costs more, scores the same. |
nemotron-3.5-lightning$ ollama pull nemotron-3.5-lightning |
68% | 84% | 0.62 / 0.96 | Answers everything. A third of its cited claims don’t hold up. Skip it for work you’ll cite. |
gemma4:31b-mlxlarge-Mac pick$ ollama pull gemma4:31b-mlx |
68% | 80% | 0.91 / 0.98 | Highest faithfulness of the large models. Shortest answers. |
gemma4:12b-mlxsmall-Mac pick$ ollama pull gemma4:12b-mlx |
64% | 72% | 0.80 / 0.95 | The default under 32GB. Declines cleanly when the sources don’t answer. |
bonsai-8bspeed pick$ ollama pull bonsai-8b |
60% | 26% | 0.91 / 0.70 | 1.2 GB, 4–20× faster than the rest. The follow-up search covers its two-source gap. |
lfm2.5:8b$ ollama pull lfm2.5:8b |
52% | 44% | 0.85 / 0.98 | 5 GB and quick. Occasionally writes citation brackets the checker can’t read. |
gpt-oss:120b$ ollama pull gpt-oss:120b |
24% | 12% | 1.00 / 0.83 | Declines often, and cites in a bracket format the app cannot parse. |
Rows sort by evidence cited, then two-source score. SciFact claims and HotpotQA two-source questions, 25–50 per model, run through the same pipeline the app ships, on the built-in search engine. Faithfulness is the share of cited sentences the source actually supports, checked on your Mac and calibrated against a stronger cloud model (shown SciFact / HotpotQA). Every number is reproducible: cargo test --lib judged_.
Some of what Alchemy asks a model is not writing but deciding: is this claim supported by these excerpts, is this message a command or a question, is this name worth a registry card. Since Ollama 0.35, decision models answer those in one pass with a probability per option, and Alchemy uses one when it finds it installed. Pull one with ollama pull clef-flash; nothing else changes.
| Model | Claim verdicts | Chat commands | Per decision | Notes |
|---|---|---|---|---|
clef-flashdefault$ ollama pull clef-flash |
40 / 40 | 36 / 36 | 1.8–2.3 s | 9B, 12 GB. Every answer it was confident about was right. |
clef$ ollama pull clef |
40 / 40 | 36 / 36 | 4–7 s | 27B, 18 GB. Same verdicts as Flash, at twice the wait. |
nimble$ ollama pull nimble |
38 / 40 | 34 / 36 | 2 s | 9B. Flagged both of its wrong verdicts as uncertain. |
tev1:4b$ ollama pull tev1:4b |
35 / 40 | 33 / 36 | 1.4 s | 4.5 GB. Reads “weak” support as none. |
jev-1.13cloud~/.config/typesafe/api-key |
40 / 40 | 36 / 36 | 0.1 s | TypeSafe’s hosted model; used only when you add a key and have no local decision model. |
Claim verdicts: 40 labeled claim-and-excerpt cases, four verdict classes, through the Second Look path. Chat commands: 36 messages judged command-or-question over the real tool catalog. Per decision is the median on an M5 Max with nothing else running. Without a decision model the same work runs through the chat model, where the best local result was 38 / 40 and the on-device Apple model 12 / 40. Scoring on a rubric (which registry cards to recommend) is more sensitive to how much you send at once: on 24 labeled cards, clef-flash, nimble and the hosted model scored 24 when asked a dozen at a time and under half when asked all 24 together, so Alchemy keeps those requests small. Reproducible: cargo test --lib eval_judge_.
Alchemy follows your macOS text size, adds notebooks to Spotlight, and accepts links from Services. A menu bar extra and alchemy:// links keep it close at hand.
Press ⌘K to open a notebook, add a source, or run a generator. Type / for the same actions in chat.
Explain or compare a passage in place.
Every notebook is an Open Knowledge Format folder: markdown with frontmatter, plus the PDFs and images behind it. Keep it in iCloud Drive and it opens on your other Mac. Share the folder and it opens as a linked notebook on theirs. Edit a note in any editor and Alchemy reads it back.
Clip signed-in pages from your own tab, watch folders and OKF bundles, read scans locally, and refresh URLs on a schedule.
Assertions, facts, and open questions stay connected to the passages behind them.
Sources refresh while you sleep, and a page that changed overnight is weighed against the conclusions you already recorded. Night Shift writes notes and reports. It will not act outward.
“Three decisions need you.”
A text-first daily review of changes across your notebooks.
Questions your notebook answered thinly become standing questions. Alchemy proposes files already on your Mac, pages your sources keep citing, and — if you turn it on — results from the web. Nothing is added until you say so.
Run on a timer or when a source changes. Each result is saved as a note.
Free and open source under MPL-2.0. Requires a Mac with Apple Silicon; builds are signed and notarized. Use an existing subscription or API key. Ollama and Apple’s on-device model work offline.
$brew install --cask thrashr888/tap/alchemy