A local-first markdown document editor with Git versioning, built for seamless documentation. Canonic features a built-in AI assistant to help you think through requirements and ideas, without writing them for you. designed for people who want to do their own thinking first before building. inspire by the beauty of git, the tactileness of Zed and Atom before it, the sharing p2p sharing of local send
- Local-first Architecture: All your files stay on your machine.
- Git Version Control: Document versioning built-in. Every workspace is a Git repository, allowing branching, history, and conflict resolution directly within the app.
- AI Assistant: Context-aware AI assistant designed to help you brainstorm and review, configurable with different models (requires an LLM API key).
- Workspace Templates: Start with a blank canvas or jumpstart your projects with structured templates like the PM Framework.
- Sharing Scope & Permissions: Share securely via token-secured links with granular access controls (file, directory, or workspace level).
- Inline Comments: Anchor comments to specific document selections to collaborate effectively.
- Featureful editor: allows for refs, tags, tracking, and other fun stuff help you keep track of interdependencies
- Framework: Vue 3 + Vite
- Desktop Environment: Electron
- Editor: Milkdown
- Version Control: isomorphic-git
- State Management: Pinia
- Search: FlexSearch
- Node.js (v16+)
- npm or yarn
-
Clone the repository
git clone <repository-url> cd canonic-local
-
Install dependencies
npm install
-
Run the application in development mode
npm run dev
This will start both the Vite development server and the Electron application concurrently.
To create a production-ready application executable:
npm run buildThe output will be placed in the dist-electron directory.
Canonic is packaged and distributed using electron-builder.
- Build: Run
npm run buildto generate the production-ready assets and the Electron executable. - Publish: The CI/CD pipeline (or manual run) pushes the generated artifacts to GitHub Releases as defined in
package.json.- Provider:
github - Repository:
Canonical-AI/canonic
- Provider:
Updates are handled automatically via electron-updater.
- Check on Launch: Every time the app starts, it checks for a new version on GitHub.
- User Notification: If a new version is found and downloaded, a banner appears at the bottom of the screen prompting the user to "Restart & Update."
- Silent Backgrounding: Downloads happen in the background to avoid interrupting the user's flow.
- Interactive Check on Open: Instead of just silent checks, explicitly prompt the user if an update is found immediately after launch.
- Periodic Checks: Regularly check for updates while the app is open (e.g., every 4 hours).
- Ask Before Close: If an update is ready but hasn't been installed, prompt the user to "Update and Close" when they try to exit the app.
- Manual Check: Add a "Check for Updates" button in the Settings menu.
- Download Progress: Show a progress bar for background downloads to keep the user informed.
src/- Vue frontend source codeelectron/- Electron main process and IPC handlersdocs/- Project documentation and requirements (e.g.,REQUIREMENTS.md)public/- Static assets
- Configuration, such as user preferences and API keys, is stored locally in
~/.canonic/config.json. - Comments are persisted locally at
~/.canonic/comments/. - Git commands are executed transparently via
isomorphic-git, meaning no terminal interaction is required for typical version control workflows.
For a detailed breakdown of product requirements, architecture, and testing strategy, refer to docs/REQUIREMENTS.md.