A free, open-source, ultra-lightweight WYSIWYG Markdown editor with a sandboxed private AI assistant.
ZarishNote is a desktop note-taking application that combines a rich Markdown editor (Milkdown/ProseMirror) with a sandboxed Wasmtime-based AI assistant — all running locally on your machine.
| Directory | Purpose |
|---|---|
src/ |
Svelte 5 frontend |
src-tauri/ |
Rust backend (Tauri v2) |
ingestion/ |
Python document ingestion engine |
docs/ |
Blueprint specifications, roadmaps, architecture docs |
| Layer | Technology |
|---|---|
| Framework | Tauri v2 (Rust backend, native WebView) |
| Frontend | Svelte 5 + TypeScript 6 + Vite 8 |
| Package manager | pnpm 11.x |
| Editor core | Milkdown 7.x (ProseMirror) |
| Sandbox | Wasmtime 46.x (Rust crate) |
| Vector store | In-memory HashMap + fastembed |
| Ingestion | Python CLI (MarkItDown + custom converters) |
| CI/CD | GitHub Actions |
Prerequisites: Node.js ≥24.15, pnpm ≥11.5, Rust toolchain (rustup), Tauri system dependencies.
# Clone
git clone https://github.com/devopsariful/zs-note.git
cd zs-note
# Install frontend deps
pnpm install
# Run in dev mode
pnpm dev:tauri
# Or just run Vite dev server (without Tauri window)
pnpm devStatus: Current version — v0.2.0
CI Status: See GitHub Actions for latest build status.
zs-note/
├── src/ # Svelte 5 frontend
│ ├── main.ts # Entry point
│ ├── app.css # Global styles / CSS variables
│ └── lib/
│ ├── components/ # Svelte components
│ ├── stores/ # Svelte 5 rune stores (.svelte.ts)
│ ├── commands/ # Tauri invoke wrappers
│ ├── milkdown/ # Milkdown editor setup
│ └── types.ts # TypeScript interfaces
├── src-tauri/ # Rust backend (Tauri v2)
│ ├── src/
│ │ ├── main.rs / lib.rs # Entry + plugin registration
│ │ ├── commands/ # Tauri command handlers
│ │ ├── sandbox/ # Wasmtime sandbox engine
│ │ ├── ai/ # AI provider implementations
│ │ ├── git/ # Git engine
│ │ ├── mcp/ # MCP client
│ │ ├── vector/ # Vector store
│ │ ├── config.rs / types.rs # Configuration and types
│ │ └── capabilities/ # Tauri v2 capability permissions
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── tests/ # Integration tests
├── ingestion/ # Python ingestion engine
│ ├── src/zarishnote_ingest/
│ │ ├── cli.py # CLI entry point
│ │ ├── converters/ # Format converters
│ │ └── ...
│ └── pyproject.toml
├── docs/ # Documentation
│ ├── README.md # Blueprint specification
│ ├── TODO.md # Implementation status
│ ├── ZARISHNOTE-COMPLETE-GUIDE.md
│ └── [subdirectories for specs]
├── scripts/
│ └── check-consistency.sh # Repository consistency checker
├── package.json # Frontend package config
├── tsconfig.json # TypeScript config
├── pnpm-workspace.yaml # pnpm workspace config
├── vite.config.ts # Vite build config
└── svelte.config.js # Svelte config
See CI Status for latest results.
| Check | Tool |
|---|---|
| Format | cargo fmt --check |
| Lint | cargo clippy |
| Tests | cargo test |
| TypeScript | pnpm typecheck |
| Python | ruff check src/ |
See the blueprint TODO for detailed status breakdown.
| Feature | Status |
|---|---|
| WYSIWYG Markdown editor | 🏗 Scaffolded |
| Source + Split modes | 🏗 Scaffolded |
| File tree + vault manager | 🏗 Scaffolded |
| Git auto-commit + history | 🏗 Scaffolded |
| Wasmtime sandbox | 🏗 Scaffolded |
| AI chat (OpenAI, Claude, Gemini, Ollama) | 🏗 Scaffolded |
| Document ingestion | 🏗 Scaffolded |
| MCP tool integration | 🏗 Scaffolded |
| Vector store / RAG | 🏗 Scaffolded |
| Voice dictation | 🏗 Scaffolded |
| Publish to GitHub | 🏗 Scaffolded |
The application follows a three-layer architecture:
- Rust Backend (
src-tauri/) — Tauri v2 commands handle file I/O, Git operations, sandboxed WASM execution, AI provider communication, MCP tool routing, and vector store indexing. - Svelte Frontend (
src/) — Reactive UI with Milkdown/ProseMirror for the editor, file tree sidebar, AI chat panel, settings, and modals. - Python Ingestion Engine (
ingestion/) — Standalone CLI that converts documents (PDF, DOCX, PPTX, XLSX, EPUB, HTML, CSV, Jupyter, YouTube, Wikipedia, RSS, SERP) to Markdown.
All AI tools, MCP servers, and plugins execute inside a Wasmtime sandbox with configurable capabilities (filesystem scoping, network allow-list, memory limits, timeouts).
# Check for inconsistencies
pnpm check:consistency
# Auto-fix common issues
pnpm check:consistency --fix# Frontend
pnpm typecheck
# Backend
cd src-tauri
cargo test
# Python ingestion
cd ingestion
pytest -v- Read the blueprint specifications to understand the design.
- Check the TODO for open tasks.
- File issues at github.com/devopsariful/zs-note/issues.
- Run
pnpm check:consistencybefore committing.
MIT — see LICENSE
Maintained by devopsariful