Note: To everyone who has starred the repo: thank you. You’ve made me genuinely happy, I published this 3 days ago and I’ll keep improving this app for the long run. If you’re a Linux developer, I’d really appreciate your help getting the app fully up and running on Linux. I’m still a bit lost with the different package formats and how to wire them all into the GitHub Actions release pipeline, so a PR on this front would be amazing. Next, I’ll be focusing on adding Cron jobs — similar in spirit to OpenClaw — plus hardening, modularizing some of the larger files, and fixing edge cases in the live Markdown preview. Obsidian, one of my favorite apps, has years of patches behind its editor, and getting CodeMirror to render Markdown, hide source decorations, and stay fast is surprisingly difficult. If you run into rendering bugs or weird editor behavior, please help me find and fix them. Thank you again for the support.
NeverWrite is a local-first knowledge workspace for people who need to handle workflows with multiple parallel agents and subagents. Built like a code editor, but for markdown. It has inline review changes, like Cursor and others. Please help me test it!
Today the repository combines:
- An Electron desktop app with a Rust sidecar that opens a local vault and keeps working state on disk.
- A Markdown, CSV, and text/code editing workflow with wikilinks, live preview, frontmatter editing, spellcheck, and grammar checking.
- Knowledge navigation tools such as backlinks, tags, advanced search, bookmarks, concept maps, and a 2D/3D graph view.
- An ACP-based AI layer with Codex, Claude, Gemini, and Kilo runtimes.
- An explicit AI change-review system with inline review inside the editor and a dedicated surface in chat and a tab with changes pending approval.
- A separate browser web clipper that can save directly into the desktop app through a local API, with deep-link fallback. Compatible with both Firefox and Chromium.
This README reflects the code currently present in the repository, not a future roadmap.
The current product already includes:
- Local vault opening with progress reporting, persisted snapshots, filesystem watching, and incremental re-sync
- A desktop workspace with tabs, sidebars, command palette, quick switcher, detached windows, and a developer terminal
- Native-feeling editing for Markdown notes, CSV files, PDFs, images, and generic text/code files
- Embedded Excalidraw-based concept maps stored as
.excalidrawfiles in the vault. The map format is visible and editable by agents. - A graph view with global, local, and overview modes plus 2D and 3D rendering
- AI chat sessions with attachments from the vault, slash commands, transcript persistence, and runtime-specific capabilities
- A real AI review pipeline so generated edits are not silently committed
- AI edits stay reviewable through an accumulated action log, inline controls, and a dedicated review tab. It is much more than a chat.
- The desktop app is not limited to Markdown notes; it already handles CSV files, PDFs, images, text/code files, and maps in the same workspace.
- It features a best-in-class multipane experience that lets the user parallelize multiple lines of work with agents while simultaneously reading and editing documents in the same window.
- The web clipper allows saving web articles quickly, securely, and efficiently.
- Open, index, and watch a local vault.
- Recent vaults, pinned vaults, reopen-last-vault behavior
- File tree with drag and drop, multi-selection, sorting, and context actions
- Persistent bookmarks per vault
- Persistent tabs and window session restore
- Detached note windows and separate vault windows
- Markdown editing with CodeMirror 6
- Wikilink suggestions, resolution, and navigation
- Live preview with tasks, tables, embeds, math, and YouTube previews
- Frontmatter/properties editing
- CSV editing with table and raw fallback views
- Editable text/code files with syntax highlighting and autosave
- PDF viewing with visual filters
- Internal image viewing with fit and zoom
- App-owned Hunspell-based spellcheck with bundled
en-USandes-ES - Grammar/style checks through LanguageTool
- Backlinks and outgoing links
- Tags extracted from content and frontmatter
- Advanced search with query builder, regex, negation,
OR, and property filters - Graph view in 2D and 3D
- Concept maps in
.excalidraw
- ACP runtime integration for Codex, Claude, Gemini, and Kilo
- Attachment flows for notes, folders, files, PDFs, audio, images, and screenshots
- Session history, transcript viewing, session export, fork, resume, and rename flows
- Inline review inside the editor when the tracked file has a reliable base
- A dedicated
Reviewtab plus anEditssurface for keep/reject workflows - Rust/WASM-backed diffing and change tracking
- Dedicated browser extension in
apps/web-clipper - Full page, selection, and URL-only clipping modes
- Markdown preview before save
- Template system with vault and domain scoping
- Local clip history
- Direct desktop save through
http://127.0.0.1:32145/api/web-clipper - Deep-link fallback when the desktop API is unavailable
apps/
desktop/ Main Electron + React desktop application
web-clipper/ Browser extension built with WXT + React
crates/
ai/ Shared AI domain types
diff/ Rust diff engine, plus WASM bindings for review flows
index/ Vault indexing, link resolution, and search primitives
types/ Shared DTOs and domain models
vault/ Vault scanning, parsing, filesystem watching, and PDF discovery
- Desktop shell: Electron 41, React 19, TypeScript 6, Vite 8, Tailwind CSS 4, CodeMirror 6, Excalidraw, PDF.js, electron-updater
- Desktop native backend: Rust 2021, Tokio,
notify,portable-pty,reqwest,spellbook, app-owned spellcheck runtime - Desktop main process: Electron IPC plus a Node HTTP server for the local web clipper API
- Shared Rust crates: vault parsing, indexing, search, diff, DTOs
- Browser extension: WXT, React, TypeScript, Chrome MV3 and Firefox MV3 targets
Important: there is no top-level JavaScript workspace package. JavaScript dependencies are installed per app.
- Rust and Cargo
- Node.js 22+ and npm for
apps/desktopand JavaScript tooling - pnpm for
apps/web-clipper(packageManageris pinned topnpm@10.33.0)
CI and release workflows are pinned to Node.js 22, so local development should use Node 22 or newer.
cd apps/desktop
npm install
npm run devThat starts the Electron desktop app plus the local renderer dev server.
If you only need the renderer dev server:
cd apps/desktop
npm run renderer:devcd apps/web-clipper
pnpm install
pnpm devBuild unpacked extension artifacts:
cd apps/web-clipper
pnpm buildThis produces:
apps/web-clipper/dist/chrome-mv3/apps/web-clipper/dist/firefox-mv3/
cargo testDesktop frontend tests:
cd apps/desktop
npm testWeb clipper validation:
cd apps/web-clipper
pnpm checkRust workspace tests:
cargo testThe repository already contains broad Vitest coverage in the desktop app and web clipper, plus Rust integration tests for vault and index behavior.
NeverWrite currently wires four ACP runtimes:
codex-acpclaude-acpgemini-acpkilo-acp
Current packaging status:
- Codex is intended to be bundled as a sidecar binary in desktop release builds.
- Claude is intended to be bundled through an embedded Node runtime plus vendored runtime files.
- Gemini is integrated in the app, but not bundled by default today.
- Kilo is integrated in the app, but not bundled by default today.
Useful runtime overrides during development:
NEVERWRITE_CODEX_ACP_BINNEVERWRITE_CLAUDE_ACP_BINNEVERWRITE_GEMINI_ACP_BINNEVERWRITE_KILO_ACP_BIN
For release builds, see apps/desktop/scripts/stage-electron-sidecar.mjs and release/appcast/README.md.
The web clipper talks to the desktop app through a local HTTP API on port 32145.
When developing against an unpacked extension build, the desktop app blocks arbitrary extension origins by default. To explicitly allow a local extension origin, start the desktop app with:
cd apps/desktop
NEVERWRITE_WEB_CLIPPER_DEV_ORIGINS="chrome-extension://<dev-id>,moz-extension://<dev-id>" npm run devUse exact origins only. Wildcards are intentionally unsupported.
NeverWrite is in a polish and hardening phase. Core systems already exist, but the project is still pre-1.0, in the process of resolving edge cases — help me find them!!
The areas with the highest product sensitivity right now are:
- AI review and change control
- Inline review and merge behavior
- Session persistence and multi-window workflows
- Desktop-to-clipper integration
- Using the 3D graph on large vaults has memory leaks; after using it, prefer restarting the application.
Apache-2.0. See LICENSE.