KatmerCode: A Multi-Provider AI Sidebar for Obsidian
Multi-provider AI sidebar for Obsidian — Claude, Gemini, Codex, Antigravity. Per-tab routing, same-tab consult, inline diff, CLAUDE.md auto-mirror, academic research skills.
At a glance
- What is it?
- KatmerCode puts Claude, Gemini, Codex and Antigravity behind one Obsidian sidebar with per-tab routing and inline diff editing. It is a desktop-only plugin that wraps provider CLIs, so the install is two steps rather than one.
- Who is it for?
- Adopt KatmerCode if you already pay for at least one provider subscription, work on desktop, and want model comparison and inline diffs inside Obsidian rather than a browser tab. Skip it if you need mobile, if you want a single hosted API key instead of local CLI logins, or if you expect the academic skills to produce publishable judgements.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem KatmerCode solves for Obsidian writers
Obsidian users who want AI help usually end up in a browser tab, pasting text back and forth. The plugin's stated audience is narrower than that: researchers who write in Obsidian and want to compare model takes, edit manuscripts, check citations, and run peer-review workflows without leaving the editor. The comparison part matters. A single chat window gives you one model's opinion, and a second opinion normally means a second window, a second login, and manual copying.
KatmerCode's answer is to treat each chat tab as its own session with its own provider and model. You can run Codex in one tab while Gemini works in another. The same-tab Consult button spawns a second provider in the background, renders its reply as a consultation card, and then asks the active model to synthesize the two views inside the same conversation. That is a workflow decision, not just a UI feature: it assumes you want disagreement visible rather than resolved silently.
The second problem is editing. Inline diff editing renders word-level track changes in the editor with accept and undo controls, so a model's suggested rewrite lands as a reviewable change rather than a block of text you paste over your draft.
How per-tab routing and the provider adapters work
The README describes a ProviderAdapter interface sitting behind Claude, Gemini, Codex and Antigravity. Claude is the original integration and goes through the Claude Agent SDK, which package.json pins at @anthropic-ai/claude-agent-sdk 0.2.86. The other three are driven through their own command line tools.
That difference in transport shows up in behaviour. Claude gets the full feature set listed in the README: streaming, tools, inline diff, thinking blocks, MCP. Gemini streams text and tool calls and supports inline diff by aliasing its replace tool to Edit. Codex applies edits directly, because according to the README its CLI does not expose old and new text for inline rendering. Antigravity is chat only, and the README is explicit about why: agy v1.0.2 does not yet expose structured output. It is presented as a migration path before the June 18 2026 sunset of Gemini CLI for Google AI Pro accounts, not as a peer of the other three.
Authentication is per provider and inherits the subscription model of each CLI. Claude uses an Anthropic Pro or Max subscription via claude login, Gemini uses a Google login that works with AI Pro or One, Codex needs ChatGPT Plus or Pro via codex login, and Antigravity reuses the Google login through agy browser auth. There is no shared API key layer. If a provider is not authenticated, clicking the picker chip runs the CLI's login flow for Claude and Codex, or opens Terminal with the right command for Gemini and Antigravity, then polls until the auth status changes.
Two smaller mechanisms are worth knowing because they change how you write. Mid-conversation switch markers insert a divider when you change provider or model mid-thread, and a provider switch also warns that previous context is not carried across CLIs. The context strip tracks input tokens against each model's actual window, which the README gives as 1M for the Gemini 2.5 and 3.x family, 400K for Codex GPT-5.x, and 200K to 1M for Claude, driven by a catalog rather than a generic 200K fallback.
Installing KatmerCode and running a first consult
Installation has two halves. First install at least one provider CLI and authenticate it. The README orders them by friction, lowest first, and these are the exact commands it gives.
npm install -g @anthropic-ai/claude-code && claude
npm install -g @google/gemini-cli && gemini
npm install -g @openai/codex && codex login
curl -fsSL https://antigravity.google/cli/install.sh | bash && agyThen clone and build the plugin. The build script in package.json runs tsc with noEmit and skipLibCheck before esbuild in production mode.
git clone https://github.com/hkcanan/katmer-code.git
cd katmer-code
npm install
npm run buildThe output is main.js, manifest.json and styles.css. Copy those three files into your vault's plugin folder, then enable the plugin in Obsidian.
mkdir -p <your-vault>/.obsidian/plugins/katmer-code/
cp main.js manifest.json styles.css <your-vault>/.obsidian/plugins/katmer-code/In Obsidian, open Settings, then Community Plugins, and enable KatmerCode. From there the first real use is a consult. Open the sidebar, pick a provider and model for the tab, send a prompt, and when a reply arrives press Consult another model on that reply. The README states that the consulted model's response and the active model's synthesis appear in the same conversation, so you should see a consultation card plus a synthesis rather than a new tab. If you want the academic skills, enable them in Settings under Academic Skills and turn on Allow Web Requests, since the skills query external databases.
Inline diff editing and the CLAUDE.md mirror
Inline diff editing is the feature most likely to decide whether this plugin fits your writing. The README shows word-level track changes with red strikethrough for removals and green underline for additions, plus accept and undo controls. It works for Claude and Gemini. Codex applies edits directly instead, which means you get the change without a reviewable diff, so a Codex tab is a poorer fit for manuscript editing where you want to inspect every alteration.
The shared-instructions feature is quieter but affects every provider. Toggling Auto-mirror CLAUDE.md to other providers copies your CLAUDE.md into GEMINI.md and AGENTS.md, at both global and vault scope. The plugin watches those files and re-syncs on edit. The practical consequence is that you maintain one set of rules and three files change underneath you. If you already keep GEMINI.md or AGENTS.md under version control with provider-specific content, the mirror will fight you, and the README does not document an exclusion list or a way to scope the mirror to a single file.
Academic skills are installed as slash commands and run across all four providers. The README states they run natively on Claude through ~/.claude/commands/ and via prompt injection on the other three, with the same markdown and the same output. The README's own framing is worth repeating because it sets expectations correctly: the skills query Semantic Scholar, CrossRef, OpenAlex, Unpaywall, arXiv and PubMed and apply structured analysis, but the outputs are starting points. A /peer-review report will not replace a human reviewer, and a /cite-verify run may flag a valid reference as unverified when the database lacks coverage.
Where KatmerCode is the wrong tool
Desktop only is not a soft limitation. The plugin requires the corresponding provider CLIs, and those CLIs are what carry authentication and model access. There is no mobile path, and the README labels the platform desktop only in the badge at the top. If you read and annotate on a phone or tablet, this plugin does not enter that workflow at all.
Antigravity is the second boundary. The README says agy v1.0.2 does not expose structured output, so the integration is chat only. Choosing Antigravity means giving up inline diff and the structured features the other providers support. It exists as a migration path ahead of the June 18 2026 Gemini CLI sunset for Google AI Pro accounts, and the README does not promise feature parity later.
The third boundary is context continuity. Switching provider mid-thread inserts a marker and warns that previous context is not carried across CLIs. If your work depends on a long conversation that survives a model change, per-tab routing works against you: the tab boundary is the context boundary, and moving between providers means restating what you had.
Finally, the academic skills are research aids by the project's own description, not oracles. Treating a generated peer-review report or citation check as a verdict is a misuse of the tool, and the README says so directly.
KatmerCode compared with a single-provider Obsidian setup
The obvious alternative is a single-provider Obsidian plugin, or one of the general chat plugins that talk to a hosted API with one key. The difference is architectural rather than cosmetic. A hosted-API plugin gives you one model family, one credential, and no local CLI dependency. KatmerCode gives you four providers but requires each CLI to be installed and authenticated on the machine, and it inherits whatever those CLIs expose, which is why Codex has no inline diff and Antigravity has no structured output.
If your goal is simply to ask questions about a note, a single-provider plugin is less to maintain: no npm global installs, no CLI version drift, no build step. KatmerCode earns its complexity when the comparison itself is the point. Running the same prompt through Claude and Gemini in adjacent tabs, or pressing Consult on a reply to get a second model's take and a synthesis, is the workflow a single-provider plugin cannot reproduce. The trade is that you maintain four moving parts instead of one, and a provider CLI update can change plugin behaviour without a KatmerCode release.
There is also a middle option the README implies but does not recommend: install only one CLI and use KatmerCode as a single-provider sidebar with a diff editor. That works, but you are paying the multi-provider setup cost for one provider's benefit.
Maintenance, upgrades and the MIT licence
The repository is not archived and the last push was on 2026-05-26, which is roughly three and a half months before today. Releases 0.5.0, 0.5.1 and 0.5.2 all landed on that same day, covering multi-provider support, community plugin compliance, and review hygiene. The cadence is bursty rather than continuous, and the README does not describe a release schedule or a support commitment.
Upgrade cost is worth stating plainly. The build produces three files that you copy into .obsidian/plugins/katmer-code/ yourself. There is no in-app update path described in the README, and no rollback procedure documented either. Every upgrade means re-running the build and re-copying, which is fine for a developer and friction for anyone else. The dependency list is small, with esbuild, TypeScript, the Obsidian types and diff-match-patch on the build side, and the Claude Agent SDK, CodeMirror state and view, and diff-match-patch at runtime. The Claude Agent SDK version is pinned exactly at 0.2.86, so an SDK update requires a plugin change rather than resolving automatically.
The licence is MIT, which permits commercial and private use and modification, and requires the copyright notice and permission notice to be included in copies or substantial portions. That is a permissive arrangement, but it says nothing about the provider CLIs you install alongside it, which carry their own terms and subscription requirements. Read those separately; this is not legal advice.
Editorial conclusion
Adopt KatmerCode if you already pay for at least one provider subscription, work on desktop, and want model comparison and inline diffs inside Obsidian rather than a browser tab. Skip it if you need mobile, if you want a single hosted API key instead of local CLI logins, or if you expect the academic skills to produce publishable judgements. Before installing, confirm that your Obsidian vault is on a desktop machine, that the relevant CLI authenticates outside the plugin, and that you accept a manual rebuild and copy into .obsidian/plugins/katmer-code/ for every upgrade.
Frequently asked questions
Does KatmerCode work on Obsidian mobile?
No. The README marks the plugin desktop only and states that it requires the corresponding provider CLIs, which are not available in the mobile app.
Which AI providers does KatmerCode support?
Claude, Gemini, Codex and Antigravity. Claude goes through the Claude Agent SDK and has the full feature set, while Gemini, Codex and Antigravity are driven through their own command line tools.
How do I install KatmerCode?
Install and authenticate at least one provider CLI first, then clone the repository, run npm install and npm run build, and copy main.js, manifest.json and styles.css into your vault's .obsidian/plugins/katmer-code/ folder before enabling the plugin in Obsidian.
Why does KatmerCode not show an inline diff for Codex?
The README states that Codex applies edits directly because its CLI does not expose the old and new text needed for inline rendering. Inline diff editing is available for Claude and Gemini.
What does Consult another model do in KatmerCode?
It spawns the target provider in the background and renders its response as a consultation card, then has the active model synthesize the two views in the same conversation, so you do not switch tabs.
What is the licence for KatmerCode?
MIT. The repository carries an MIT licence, which permits use and modification provided the copyright and permission notice are included in copies or substantial portions.
Community notes