Adam Danielsson3k downloadsAn agentic learning system. Grill keeps state on what you know, note by note. Chat, tests and your other agents all work from it.
I take a lot of notes to learn new material, and I needed a way to learn them more deeply. Grill is an agentic learning system for Obsidian: it keeps state on what you know, note by note. It tests you on your own notes, grades what you write and schedules each concept with spaced repetition. In turn, every answer goes into a record in your vault, and the chat reads that record before it replies. A new conversation therefore starts from the confusions you keep showing. Claude Code, Codex and other agents can read the same record, test you on it and add what you answer them.

Watch the 1-minute tour, with sound
Featured in This Week in Obsidian #44.
The home screen suggests where to go from your record: the questions you last missed, the notes not yet tested, the note you have open. Specifically, each suggestion states a fact (how many concepts are known, what was missed last time) and leaves the choice of what matters to you.
.mcp.json or imported from it. A server that needs an account is signed in to from the browser, as in Claude Code.npx skills add use. The model loads one when a request fits it.@ and / in the box: @ brings a note into the message and / picks a prompt. On Claude Code, your own commands and skills are in the list too.[[link]].==cloze== and ::/? cards and Anki's {{c1::…}} clozes are used as they are.> [!grill] callout in any note is asked verbatim.![[worksheet.pdf]] embed is read and quizzed on like any other note content.How each of these works is described in docs/features.md.



Grill Cloud is the easiest way to use Grill. Press Start free and it answers in Chat, writes the questions, grades your answers and explains them, with no API key and no sign-up. Grill makes a key on your device and, while each day's free credits last, you get some to try it.
What Grill Cloud gives you that the free options do not:
After that Grill Cloud is a monthly plan: $7.99 a month, plus tax where it applies, and you can cancel it whenever you like. The plan covers Chat and tests up to usage limits, which apply to any five hours, to any week and to each month. The limits are not given as figures, because what a session uses depends on how long your notes are and how much you ask of it. Importantly, a Chat turn that works in the vault takes several steps, and each step counts as a reply, so editing through Chat uses more than asking a question. When a limit is reached, Grill says so and roughly when it frees up. For anyone who wants to keep going at once, credit packs come up at that point: 400 credits for $3.99 or 1,100 for $9.99. Credits are used only past a limit, and they do not expire.
Grill Cloud runs on two of Anthropic's Claude models, each chosen by testing it on real notes and kept current. A fast model writes the test questions. A stronger one marks your answers and runs Chat, because marking is where the stronger model was clearly better.
One thing differs from every other way of running Grill. With Grill Cloud, the notes in a session, the images in them, your answers and your custom instructions go through my server to Anthropic. In Chat, the notes the model asks to read go the same way, as do the results of the tools it uses: a web page it reads, what an MCP server returns, a skill it loads. A web search is run by Anthropic and counts towards the plan's limits like the rest of a reply. My server does not keep them: it does not store or log your notes, the questions, or your answers. Anthropic keeps them for up to 30 days to watch for abuse and does not train on them. If you turn on the natural voice, the text being read aloud goes to OpenAI the same way. What my server does store is a short list, set out in the privacy policy.
Paying, cancelling, refunds and moving your plan to a new install are covered in docs/cloud.md.
Chat can run on the Claude Code or Codex already installed on your computer. Grill starts the program as it is, in your vault, and shows what it does; the sign-in is the one you made in a terminal, and Grill never sees it. As a result, Chat draws on the plan you already pay Anthropic or OpenAI for, within whatever that plan allows for use outside the provider's own apps.
The button under the chat box steps through the engines found on your computer, and the button beside it sets the permission level. Safe asks before a note is changed or a command is run. Plan reads and proposes, and changes nothing. Auto edits notes in the vault without asking. These are the programs' own permission systems, passed through; Grill adds none of its own.
The program runs with your own setup: your skills, MCP servers, hooks and CLAUDE.md come along, as they would in a terminal, and on Claude Code typing / lists your own commands and skills beside Grill's prompts. Grill adds its record to each of them. Claude Code, Codex and opencode can read your weak spots and offer a test as a button under the reply, as Grill Cloud can. What they cannot do in Grill is quiz you themselves, since testing belongs in Test, where answers are graded and scheduled.
opencode is an open-source program of the same kind that works with many models. Grill can install it: the Install button in the Agents tab of Grill's settings, or on the first run, downloads one pinned build (about 80 MB) from npm, where opencode publishes it, checks it against the published checksum, and keeps it in ~/.grill/opencode, outside your vault. Without an account it offers free models and any Ollama models on your computer; opencode auth login in a terminal adds your own accounts. Note that opencode's free models may keep what you send them to improve the model while they are free. For notes you would rather keep private, use a model with your own account, Ollama, or Grill Cloud.
Two limits apply. First, this works on desktop only, since there is a program to run. Second, tests are written and graded by Grill Cloud, your own key or Ollama when one is set up; only without one do they run on the program Chat uses.
Chat on Grill Cloud and on your own key can reach beyond the vault, and the model decides when to, as Claude Code does. Everything is set in Settings → Agents → Tools and skills; Claude Code, Codex and opencode bring their own versions of each.
.mcp.json, or press Import from Claude Code. A url server works on any device and a command server runs on your computer. Connect lists each server with its tools, and a server that needs an account offers Sign in, which opens its page in your browser and keeps the sign-in in Obsidian's keychain.Grill/Skills/ in your vault and, on desktop, from ~/.agents/skills and ~/.claude/skills. A skill's scripts are read, never run.The permission levels cover all of it. A tool that only reads runs without asking; any other tool asks first at Safe, as reading a web page does, and nothing that changes things runs at Plan. Details are in docs/features.md.
Grill's record is useful beyond Obsidian, so 8.5 opens it to the agents you already use. Settings → Agents → Connect an agent copies one line for Claude Code or Codex; pasted in a terminal, it adds grill-mcp, a small program that reads the record in your vault and writes back what you answer. From then on, an agent can call up your weak spots before explaining something, and test you when you ask it to. Its answers are added to the record while Grill is open, each agent session gets a session note like any other, and the schedule moves as it would after a test in Grill.
For anything outside a vault, such as a code repository or a book, there is the grill-test skill:
npx skills add theadamdanielsson/grill --skill grill-test
It works in Claude Code, Codex, Cursor and the other agents that read Agent Skills. It asks one question at a time, grades each answer against the source, and records every answer, so a concept you missed comes back the next time you ask to be tested, even in a new session. That record is kept in your home folder (~/.grill/record/), never in the project, and Grill's Progress screen shows it under Tested in other agents.

To pay a model provider directly, pick "use my own API key or Ollama" on first run, or choose a provider in settings. Grill works the same on Claude, GPT, Gemini, DeepSeek or any OpenAI-compatible endpoint, and on a local model through Ollama, where nothing leaves your machine. Your notes go straight from your machine to the provider you chose; my server is not involved. On Anthropic, OpenAI, DeepSeek and OpenAI-compatible endpoints, Chat can also read, search and change notes. Which model to pick is covered in docs/models.md.
Website: grill.onbridger.com
From Obsidian (recommended): Settings → Community plugins → Browse, search "Grill", Install, then Enable. If Community plugins are off, Settings → Community plugins → turn on "Turn on community plugins" first.
Manual install (a specific version, or before it's live in the community list): download main.js, manifest.json, and styles.css from a release and place all three in <vault>/.obsidian/plugins/grill/ (create the folder if it doesn't exist), then reload Obsidian and enable Grill in Community plugins. BRAT automates this if you want to track updates without waiting for the community list.
Build it yourself:
npm install
npm run build
then drop main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/grill/.
After installing, open Grill (the flame icon, or the "Open Grill" command). First run asks which model Grill should use, then shows what you can do with your notes.
The common ones are below; the full list is in docs/troubleshooting.md.
![[file.pdf]] with the !. A scanned PDF with no text layer, or a password-protected one, has nothing for Grill to extract.command server must be runnable from a terminal on your computer, and a url server must be reachable. "Needs sign-in" means pressing Sign in beside it.Grill/Inbox/ until then.Something broken? Open an issue. A question or an idea? Start a discussion.
Grill talks only to the model provider you configure. There are no analytics, there is no account, and no server of mine sits in the middle. The one exception is Grill Cloud, if you turn it on: the session then goes through my server to Anthropic. Installing opencode downloads it from npm (registry.npmjs.org), once, when you press Install. Connecting an agent runs grill-mcp from npm on your computer, and it makes no network requests of its own. The MCP servers you add receive what the model sends their tools, a page Chat reads is fetched straight from your computer, and search by meaning downloads its model from Hugging Face once and then runs on your computer. When Chat runs on opencode, Grill's record reaches it through an endpoint on your own computer (127.0.0.1), open only for that chat turn. If you choose to share context from Claude Code or Codex, Grill reads their conversation files outside your vault (~/.claude/projects and ~/.codex/sessions) on your computer. The parts about your notes go once to the model Chat uses, and Grill keeps a line or two a note in Grill/imported.json. A ChatGPT or Claude export you pick is read the same way. What leaves your machine and what Grill stores locally is set out in docs/privacy.md.
MIT