A browser-native, local-first workspace for reading, experimenting, and creating with AI, powered by pi.
Try Gamma Reader. Your documents stay in your browser, and there is no account to create.
The app opens on a Tutorial project that shows every feature in use; its chapters are also readable in tutorial/.
- Read PDF, Word, Excel, CSV, Markdown, HTML, images and source code in tabs, each with the controls its format allows.
- Write Markdown with formulas, diagrams and images, and save it in the browser.
- Link notes by name with
[[…]], see what links back, and embed one note, section or passage in another. - Run code in Labs, Markdown with Scheme, Clojure, Python and TypeScript cells, and embed p5 sketches and HTML pages at any size.
- Ask the assistant about what you read: it searches and reads your files, compares sources, runs Lab cells, searches the web when allowed, and writes notes. Its agent loop runs in the browser.
- Organise files in projects, bring in folders and links, and keep a project in step with a source.
| Way | Files live in | Changes go back |
|---|---|---|
| The online reader | This browser's IndexedDB | They stay in this browser |
| A server following a repository | A clone the server keeps pulling, copied into each browser | Not yet; the server only brings files in |
| A working tree on your machine | A git checkout on disk, copied into the browser | Save writes them to the folder; you review and commit with git |
The online reader needs nothing installed. A working tree needs Node 24 and git, and one command run in it:
npx gamma-reader # the current folder, at http://127.0.0.1:3302
npx gamma-reader ~/notes --exclude tmp,output # or name one; --help lists the optionsThe project is named after the folder. Chat uses GLM_API_KEY or DEEPSEEK_API_KEY from the environment, or a model added in the reader. A server following a repository is a deployment of its own and must sit behind a sign-in; see Sync from a repository.
Files are copied into IndexedDB, and previewing, parsing, searching and the pi agent loop all run in the browser. AI inference runs at the model provider: on the shared allowance through a small Node proxy that holds the credentials and keeps no files or conversations, and with a reader's own key straight from the browser. When a reader turns on web search, the agent's queries go through this server to Tavily. See Self-hosting for the allowance and what the proxy records.
Use Node 24 and pnpm 10.14.0.
corepack enable
pnpm install
pnpm devOpen http://localhost:5302. Reading, editing, and experiments work without keys; chat needs GLM_API_KEY, DEEPSEEK_API_KEY, or both in an untracked root .env, or a reader's own model. To read a working tree with the code as it is, name it when starting:
GAMMA_SOURCE_NAME=notes GAMMA_SOURCE_WORKTREE=$HOME/notes pnpm devpnpm check runs Biome, TypeScript, and package tests without rewriting source. Tests do not call external model services. AGENTS.md describes the packages and how the web source is layered, and Self-hosting lists every variable and covers deploying with Docker and releasing a version.
The independent React Code Lab package lives in ui-packages/code-lab. Run its standalone examples with pnpm --filter @gamma-reader/code-lab-playground dev.
tutorial/ ships with each deployment and is served at /api/tutorial, listed afresh on each request. Every reader has a Tutorial project kept in step with it: a first visit opens it, and after a deployment that changes the folder, the project offers Update. To write for it, edit the folder and run pnpm dev; the open Tutorial offers the change at once. Add a section to What's new.md when a release adds a feature.
