Cabbage is a local-first, cross-platform desktop application for personal knowledge management. It stores all notes as plain Markdown files inside a Git repository, giving you versioning, offline use, and full data portability — no proprietary database, no cloud account, no vendor lock-in.
A vault is simply a local directory on your file system. Open any folder in Cabbage and it becomes your vault — if it is not already a Git repository, Cabbage runs git init automatically.
Notes are standard .md files. As you edit, Cabbage saves your changes and silently commits them to the local repository. Syncing with another machine is a regular git push and git pull --rebase against any remote you configure (GitHub, GitLab, a self-hosted server — anything that speaks Git over SSH or HTTPS).
The core read/write/sync loop is working:
[[wiki-links]] highlighted inline; Ctrl/Cmd+click navigates to the linked note (creates it if it does not exist)git fetch + git pull --rebase + git pushThe application is structured as a decoupled system:
[[wiki-link]] extension.walkdir on vault open.Git operations currently use shell subprocess wrappers. The roadmap includes migrating to native Rust Git bindings (gitoxide or libgit2).
[[wiki-link]] highlighting and click-to-navigategit log + version preview + restore)Prerequisites: Rust toolchain, Node.js (v18+), pnpm, Git, and the Tauri system dependencies for your OS.
git clone https://gitlab.com/moloo4ni/cabbage.git
cd cabbage
pnpm install
pnpm tauri dev
Build a release binary:
pnpm tauri build
# Output: src-tauri/target/release/bundle/
Cabbage does not track user metrics, require registration, or communicate with any external servers other than the Git remotes you configure yourself. Everything runs locally on your machine.