Working live

What the inspector itself offers while your agent works — live, keyboard-first, and with one clear editing boundary.

Getting around: four items, one model

The sidebar has exactly four items: Projects · Personas · Library · Activity (settings & docs live in the footer). One mental model runs the whole app: project → phases → rows; click = slide-over. The project is the home — everything a study produces (councils, reports, decisions, surveys, prototypes, sessions, assets) is a row in its phase. The Library is the cross-project browser: one page with tabs (Councils · Reports · Prototypes · Sessions · Surveys · Hypotheses · Decisions · Notes · Assets), the same rows everywhere. Assets — input files received (evidence, attached via MCP) and documents the software generated (deliverables) — have their own detail pages with provenance (source, direction, superseded versions); the “N files” chip in the project header opens all of a project's files chronologically. Clicking a row opens the full detail page as a slide-over (Notion-style): the list stays visible behind it, and the URL stays the list URL plus ?d=<detail path> — reloading or sharing it reproduces exactly this view (list + open panel). The ⤢ control expands to the full page (the canonical detail URL, which still renders full-page when loaded directly), and Esc/back restores the list and its URL. A project's run state shows as a chip in the project header (linking to the run journal).

Example projects

Two finished demo studies ship with Sonaloop — a B2B positioning study and a B2C pricing study (with a willingness-to-pay ladder and a head-to-head). On an empty database the home page shows a “Load example” button for each; your agent can load them via load_example, or sonaloop load-example from the CLI. Loading is idempotent (re-loading never duplicates), and remove_example removes only the example's data — never yours.

Live activity

Every inspector page is live: when your agent records something (a council, a persona, a report) a small toast appears with a link — and the page you're on reloads itself when it's affected. The Activity feed (g a) lists everything recent in order. You watch the study come together — no manual refreshing.

Runs

A status dot in the top bar shows whether studies are running right now — it turns amber when a project is stalled (the silent failure mode should be loud). In the project header every project carries its own run chip (state · last activity). Both link to the run journal (g r) — a deliberately plain telemetry page listing every project run with its last activity; it isn't a nav item.

Keyboard & palette

? opens the shortcut cheat sheet. ⌘K / Ctrl+K opens the command palette: search across everything (personas, councils, reports, sessions, hypotheses, decisions, surveys …) plus jump commands for every page. Navigate with chords: g h home, g p personas, g c councils, g s reports, g a activity, g r runs, g d docs. In lists and the project outline j/k move focus, Enter opens the row as a slide-over (the full detail page, real URL), o opens it straight as a full page, and Esc closes the panel. On detail pages [/] step to the sibling record. Everything is disabled while you type in a field.

Product tour

An optional 60-second tour walks the chrome in six steps. It never auto-starts: on your first visit a one-time dismissible note offers it; after that, “Take the tour” lives on the home page and “Restart tour” in the settings popover. Esc ends it any time.

What you can edit

The inspector is a reading surface with one clear boundary: inspect and edit, never create. New projects, notes or sections come exclusively from your agent (MCP/CLI) — the UI deliberately offers no button for them. Editing is fine: project, note and section metadata plus persona metadata (name, role, segment, industry). Deletion is deliberately subtle: the “…” menu in the page header opens a confirm dialog (projects and personas ask you to type the name). Generated text — councils, reports, prototypes — stays untouchable; memories, SOULs and evidence entirely so.

Filtering, Linear-style

The project outline and the Library carry a filter bar: “Filter” opens the facet menu (kind, phase, persona, status — in the Library project, status, plus direction on Assets) with honest per-value counts. Within a facet values OR, across facets they AND. Active filters become chips with ×; the state lives in the URL (?kind=council,decision&phase=…) — shareable, linkable, reload-proof. When a filter matches nothing, the page says so and offers “clear”.

Language

The chrome is bilingual (German/English) — the switcher lives in the settings popover, bottom left. The UI language is independent of the content language: generated content follows the language you write to your agent in, and the switcher never touches it.

Feedback

A feedback button sits at the bottom of the sidebar: a short message, optionally your email — the current page and app version are sent along visibly (nothing is collected silently). Submissions are read at /feedback or via sonaloop feedback; the form also links a prefilled GitHub issue as the public channel.

open
New here? Take the 60-second tour.

Feedback

Sent along, transparently: Page · Version 0.2.0

Or open a GitHub issue ↗