A desktop AI-powered writing app for Typst and Markdown.
Built with Tauri v2, React 19, and Rust. Features a Monaco editor with Typst language support, a WYSIWYG Markdown editor (Milkdown), live PDF preview via tinymist, LSP integration, version snapshots, AI chat (Claude CLI / Ollama), LaTeX import, and a fully customizable panel layout.
- Dual editors — Monaco (source mode with Typst syntax highlighting) or Markdown (WYSIWYG for Markdown). Supports Typst (
.typ) and Markdown (.md); Markdown is transparently converted to Typst for live preview. - Live PDF preview — Edit on the left, see the rendered PDF on the right. Toggle with View → Toggle Sidecar Preview (
⌘⇧P). - LSP support — Diagnostics, hover info, autocompletion, and go-to-definition via tinymist, bridged through WebSocket.
- File management — Tab-based editing, file tree explorer (create / rename / delete), workspace folders, and file watchers for external changes.
- PDF export — Export any
.typfile to PDF and open the result immediately. - Version snapshots — Automatic snapshots on save; browse and restore earlier versions from the history panel.
- AI assistant — Chat panel supporting Claude CLI and Ollama. Fork sessions, rename chats, and continue conversations.
- LaTeX import — Import LaTeX template bundles (
.zip) and convert them to Typst projects with a detailed report. - References panel — Manage papers via local PDFs,
.bibentries, and links with citation keys. - Writing mode — Distraction-free mode that hides the preview panel.
- Customizable layout — Panels for AI Chat, Editor, Preview, Outline, and PDF Viewer. Switch between horizontal (side-by-side) and vertical (stacked) arrangements.
- Dark theme — "dark" and "claude" theme variants.
Node.js 20+
Install via nvm (recommended) or directly from nodejs.org:
# Using nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash
nvm install 22
nvm use 22Rust
Install via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shXcode Command-Line Tools (macOS)
xcode-select --installnpm install
npm run tauri dev # dev build with hot reload
npm run tauri build # production app bundleA bundled tinymist binary is resolved at startup — no separate installation is needed.
npm run test:run # frontend (Vitest, jsdom)
cargo test --manifest-path src-tauri/Cargo.toml # Rust side