Desktop App¶
StrataFS ships with a Wails-powered desktop UI for users who'd rather not live in a terminal. It talks to the same REST API the daemon exposes — there is no separate codepath.
What you get¶
- Dashboard — daemon status, queue depth, error count, embedding model in use. Start / stop / restart from the menu bar.
- Search — hybrid / FTS / vector modes with a results pane that lets you preview chunks in-place.
- Sources — add, remove, enable, disable local and cloud sources without editing JSON. Cloud credentials are written back to
~/.stratafs/config.jsonlike everything else. - Export — kick off
stratafs fs exportfrom the UI; results land in a directory of your choice. - Settings — embedding model, worker count, ports. Changes apply on next daemon restart.
Architecture¶
The UI is a Vue 3 single-page app embedded in a Wails wrapper. It boots a local stratafs serve process if one isn't already running and talks to it via http://localhost:8080. The Wails Go bridge is intentionally thin — it only handles process supervision, OS-level keychain reads, and "show config in Finder/Explorer"-style affordances.
┌────────────────────────────┐ ┌────────────────────────────┐
│ Wails UI │ │ stratafs daemon │
│ ┌──────────────────────┐ │ │ ┌────────────────────┐ │
│ │ Vue 3 frontend │──┼────┼──│ REST API :8080 │ │
│ └──────────────────────┘ │ │ └────────────────────┘ │
│ ┌──────────────────────┐ │ │ ┌────────────────────┐ │
│ │ Go bridge (app.go) │──┼────┼──│ Process supervisor│ │
│ └──────────────────────┘ │ │ └────────────────────┘ │
└────────────────────────────┘ └────────────────────────────┘
If the daemon is already running (e.g., as a system service), the UI attaches to it rather than spawning a new one.
Building from source¶
Output binaries land in desktop/stratafs-ui/build/bin/. Wails handles platform-specific packaging — see Platform Notes for OS-specific install paths and tray integration.
Customizing¶
The UI reads the same ~/.stratafs/config.json as the CLI. Changes made through the UI write to that file using atomic rewrites — no surprise reformatting, no in-app config silo.