Local-first · No API key · On your own plan

Read papers.
Chat with them.
On your own plan.

Vellum is a desktop workspace for research papers — ingest, read, and ask questions grounded in the actual document. It runs on the Claude or Codex plan you already pay for, through the Agent Client Protocol. No hidden API bill, no OAuth bridge, nothing to sign up for.

Built on the tools you already trust

Claude Agent SDK Codex CLI ACP Electron SQLite TypeScript
Features

Everything you need to actually read a paper

No embeddings, no vector DB, no black box — the agent reads the file, the same way you would.

Ingest anything

Drop in an arXiv ID, a DOI, a raw PDF URL, or a local file. Vellum fetches it, converts it to clean markdown, and extracts sections and metadata with an agent — no fragile regex heuristics.

Full PDF reader

Paginated rendering, zoom, table of contents, and in-document search — with a selectable text layer, so highlighting and "ask about this" are one selection away.

Grounded chat

Ask a question and the agent reads paper.md directly — no retrieval step, no chunking loss. Replies cite the sections and quotes they came from. History persists per paper.

Switch models mid-read

One dropdown flips the whole session between Claude and Codex, each spawned as a first-party ACP adapter. Ask the same question to both, on the same grounded context.

Your plan, not a new bill

Auth comes straight from your signed-in Claude or Codex CLI. No ANTHROPIC_API_KEY, no OAuth bridging, no separate subscription to manage.

Your library, on disk

Papers live as plain files under data/papers/<slug>; state lives in a local SQLite database. Nothing leaves your machine except the model call itself.

How it works

Ingest → read → ask, end to end

The same vertical loop, proven on a real arXiv paper against a live Claude plan.

  1. 01

    Ingest a source

    Paste an arXiv ID, DOI, PDF URL, or local path. Vellum classifies it, fetches the PDF, converts it to markdown, and runs an on-plan agent turn to pull out title, authors, year, abstract, and section structure.

  2. 02

    Open it in the reader

    The library card grid opens the paper in a new tab: paginated PDF, zoom, outline, and in-document search, side by side with the right panel.

  3. 03

    Ask, grounded

    The Ask panel sends your question through ACP with paper.md as context. The agent reads the file itself and streams back an answer that cites the paper — no vector index in sight.

Architecture

A small, honest stack

One AI seam. One storage layer. No Python, no custom RAG.

electron/
  main.ts       main process — window, IPC, spawns ACP subprocesses
  preload.ts    typed window.vellum bridge
src/            React renderer — tabs, library, reader, right panel
core/
  acp/          unified ACP client + claude/codex adapters
  ingest/       arxiv/DOI/PDF → markdown + metadata
  store/        SQLite (better-sqlite3) schema + migrations
  library/      paper CRUD, collections, tags
data/           papers/<slug>/{paper.pdf,paper.md}, app.db

The AI seam

Vellum is an ACP client. Each backend — claude-code-acp or codex-acp — runs as a subprocess over stdio. Swapping models means spawning a different adapter; the client code never changes.

No RAG, on purpose

Chat passes the paper's markdown file path as context. The agent reads and greps it with its own tools — grep-and-read beats a vector index at personal-library scale, and there's nothing to embed or re-index.

Storage split

Relational state (library, tags, chat history) lives in SQLite. Paper content lives as plain files on disk. Simple to inspect, simple to back up.

Trust & guardrails

What Vellum will never do

No OAuth bridging. Subscription tokens are never smuggled into a third-party harness — that path is actively blocked and prohibited by Anthropic.

No raw API keys. Auth always comes from your already-signed-in Claude or Codex CLI, never an ANTHROPIC_API_KEY or OPENAI_API_KEY env var.

No Python. Pure Node/TypeScript end to end — one runtime, one packaging story.

No custom RAG. Agent-native file tools replace embeddings — unless a real large-corpus wall shows up.

Your papers. Your plan. Your machine.

Vellum is local-first and open. Clone it, ingest a paper, and start asking questions.