Local-first document editor for product teams — powered by Git.
Documentation · Install · Canonic Skills · Build From Source · Report a Bug
Write first. Build second. Canonic is a markdown editor for product managers that keeps your artifacts organized, versioned, and always on your machine — with an AI assistant designed to help you think, not to think for you.
Product work lives in too many places. strategy in Notion, specs in Confluence, decisions in Slack threads, and history nowhere. Canonic brings it together in one local-first workspace, backed by Git so nothing is ever lost.
-
Local-first. Plain markdown files on your machine. Open them in any editor; sync them however you want.
-
Git under the hood. Every workspace is a Git repo. Save checkpoints, branch per document, view full history — no terminal required.
-
AI autocomplete, not autopilot. Optional ghost-text completions as you type —
Tabto accept. No ghostwriting your docs. -
Run coding agents in-app. Drive Claude Code, Codex, Gemini CLI, OpenCode, or Pi from the Agent panel — they see your open docs and can read, edit, and comment via a local MCP server that wires itself up.
-
Built for product work. Inline comments, peer sharing, GFM tables, mermaid diagrams, wiki-links, find & replace across the workspace.
-
Works with your repos. Drop Canonic on an existing
.gitfolder and it adapts.
Full usage guide, keyboard shortcuts, and feature walkthroughs:
curl -fsSL https://raw.githubusercontent.com/Canonical-AI/canonic/main/install.sh | shDetects your OS, architecture, and Linux distro, downloads the right build, and installs it.
- macOS (Apple Silicon) →
/Applications/canonic.app - Linux (glibc, x64 / arm64) →
~/.local/bin/canonic(AppImage) - Arch / Alpine (x64 / arm64) → Flatpak
ai.canonic.app(AppImage can't run on musl-libc Alpine; Arch ships no FUSE by default)
To pin a specific version: curl -fsSL ... | sh -s -- --version v0.2.2-alpha
brew tap Canonical-AI/tap
brew install --cask canonicAppImage (most glibc distros — Ubuntu, Fedora, …):
chmod +x canonic_*.AppImage
./canonic_*.AppImageFlatpak (Alpine / postmarketOS / Arch — and any musl-libc distro; x86_64 & arm64):
flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user canonic_*.flatpak
flatpak run ai.canonic.appDebian / Ubuntu (.deb):
sudo apt install ./canonic_*.debFedora / RHEL (.rpm):
sudo dnf install ./canonic_*.rpmGrab the latest build for your platform from the Releases page:
- macOS —
.dmg(universal — Apple Silicon & Intel) - Windows —
.exe - Linux x64 —
.AppImage,.flatpak,.deb,.rpm - Linux arm64 —
.AppImage,.deb,.flatpak(Raspberry Pi, PinePhone, postmarketOS, ARM servers)
The Implementation panel runs an external coding agent's own CLI inside an embedded terminal — start and steer engineering work without leaving Canonic. Supported: Claude Code, Codex, Gemini CLI, OpenCode, Pi, or any custom CLI.
- Just install the agent's CLI (
claude,codex,gemini,opencode,pi). Canonic shows install status per agent. - MCP wires itself up. Canonic runs a local, loopback-only MCP server and registers itself into the agent's MCP config on first run — no
AGENTS.mdedits, no skills to install. The agent sees your focused doc and open tray and can read, edit, comment on, and create docs. - Sessions are tracked — history with one-click resume, plus a pop-out to your real OS terminal.
Pi doesn't use MCP; it gets the same workspace context inline via its system prompt.
See docs/HOWTO.md → Coding Agents for details.
canonic-skill is a separate companion repo — an agent CLI extension that lets coding agents (Claude Code, Gemini CLI, etc.) hand off design and requirements work to Canonic. The agent opens a markdown doc in Canonic, waits for you to review or edit it, then resumes with your changes as source of truth.
Install in your agent of choice:
Claude Code
npx skills add Canonical-AI/canonic-skill --localGemini CLI
gemini extensions install https://github.com/Canonical-AI/canonic-skill --auto-updateOther agents: see canonic-skill/INSTALL.md.
Once installed, invoke from your agent:
/canonic init # bootstrap a vision.md in a Canonic workspace
/canonic review path/to/doc.md # open a doc in Canonic, wait for human reviewA useful pattern is to create a .docs folder in your code repo with:
/canonic init .docs/Add .docs to .gitignore unless you want to commit docs to your repo. Alternatively, create a separate repo just for docs — that's what I do.
Requirements: Node 20+ and npm.
git clone https://github.com/Canonical-AI/canonic.git
cd canonic
npm installStarts Tauri dev server with hot reload:
npm run devnpm run build # current platformOutput lands in src-tauri/target/release/bundle/.
Run the test suite:
npm test # run vitest unit and integration testsRun npm test before committing — all unit and integration tests must pass.
See docs/CONTRIBUTING.md for branching conventions, commit message style, the spec-driven development rule, the demo-mode rule, and how the CI / release pipeline works (PR test matrix, build-then-commit releases, version-bump labels, and the no-release skip label).
Quick rules:
-
Always target the
devbranch in PRs, nevermain -
Run
npm testbefore pushing — all tests must pass -
Every new feature gets a Given / When / Then spec in
docs/specs/REQUIREMENTS.md -
Every new feature must work in demo mode (
src/demo/config.json)
| Layer | Technology |
|---|---|
| UI Framework | Vue 3 + Vite |
| Desktop Shell | Tauri (Rust) |
| Editor | Milkdown (ProseMirror) |
| Version Control | isomorphic-git |
| State Management | Pinia |
| Search | FlexSearch |
| AI | Any OpenAI-compatible provider via OpenRouter, OpenAI, Mistral, Groq, … |
Canonic is free and open source. If it's useful to you, you can support development here:
MIT — see LICENSE.
Built with care for people who think before they build.

