Desktop workspace for writing specs, notes, and project files. Built with Tauri and SvelteKit.
Open folders as workspaces, browse files in the project panel, edit in tabs with CodeMirror, preview Markdown, and keep your session across restarts. A built-in console surfaces logs; workspace-scoped AI agents live in a dedicated sidebar and agent tabs.
- Notepad and workspaces — quick scratchpad plus folder-backed workspaces on the activity rail
- Project panel — file tree, open files in tabs, refresh and show/hide hidden files
- Editor — syntax highlighting, Markdown preview, find/replace, go to line, unsaved-change diff
- Console — resizable bottom panel with Logs only
- AI agents — workspace-scoped agents sidebar, agent tabs, Ask and Review modes, GLM provider (Debug for development)
- Session restore — reopen tabs and workspace layout after restart
Workspace-scoped AI agents with Ask and Review modes, GLM as the production provider (plus settings-gated Debug for development), multiple conversations per workspace, retry on failure, streaming on Debug with buffered GLM fallback, and file-read access checks before chat is enabled.
| Area | Status | What it covers |
|---|---|---|
| Agents UI | Done | Agents sidebar, agent tabs, multi-agent persistence, logs-only console |
| GLM provider | Done | Settings, adapter, inline setup CTA in agent tabs |
| Reliability & polish | Done | Retry last message, streaming fallbacks, error and recovery copy |
| Cursor SDK (optional extra) | Planned | Second production provider; not required for MVP |
- Attaching the active file or console logs to AI context
- Agent list subtitles
- Remote chat sync
- Cursor SDK provider (optional post-MVP — see
specs/ai-m-extra-1-execution-plan.md)
From the app/ directory:
npm install
npm run tauri devThis starts the Vite dev server and opens the desktop app. Type-check the frontend with:
npm run checkFrom the app/ directory:
npm testRun tests in watch mode while developing:
npm run test:watchTests live next to source as *.test.ts files under app/src/. Rust backend tests run from app/src-tauri/:
cargo testIf port 1430 is already in use (Vite is pinned to that port), free it and retry:
kill "$(lsof -t -iTCP:1430 -sTCP:LISTEN)"
npm run tauri devFrom the app/ directory:
npm install
npm run tauri buildInstallers and bundles are written to app/src-tauri/target/release/bundle/.
On macOS, CI builds a universal binary when you push a semver tag (v1.0.0).
