Web UI

The local browser workspace started by gno serve: search, browse, graph, edit, capture, API, and live indexing.

gno serve is the loopback browser workspace: add folders, watch indexing, search, ask, browse, inspect the graph, and edit Markdown. gno serve binds loopback; the index, models, and edits stay in the local GNO data directory.

What this is

Launch and manage

gno serve # foreground, http://localhost:3000
gno serve --dev # development bundle with HMR
gno serve --port 8080 # custom port
gno serve --index research # named index
gno serve --detach # background; prints pid + url
gno serve --status --json # machine-readable status
gno serve --stop # graceful stop

Live refresh and status performance

Exact watcher paths use content hashing. Ambiguous atomic-save, directory, missing-name, and recursive-delete events reconcile a bounded dirty scope against filesystem/index evidence, without routinely resyncing untouched siblings. Failure retains work; unsupported anchored handles or bounded overflow escalate to full collection sync. Changed documents and known backlinks refresh graph projection, while full sync performs one exact global graph reconciliation. Status queries use set-based aggregation, concurrent requests share one in-flight build, and the dashboard reuses that response for model readiness without keeping a stale cache.

Production home loads a small split first JavaScript file; non-home routes lazy-load, and syntax-highlighting grammars, the PDF viewer, and graph libraries stay off that first file. Measured localhost cold-cache nearest-rank P95 first paint of home chrome is at most 200ms, and time to first interaction is at most 1s. Filled Dashboard health data is not part of either bar.

Workspace pages

Quick capture

Press N to capture a note into an editable collection. The basic path is still title plus content; open Source only when you want provenance fields such as kind, URL, author, observed time, or external id. Choose a preset when you want a scaffold; idea-original, person, company-project, and meeting are tuned for second-brain pages.

Quick Capture writes structured source: frontmatter and shows the same receipt states as CLI, MCP, REST, and SDK capture: write result, FTS sync, and embedding. FTS sync may be pending, skipped, or failed independently from the file write. Embedding stays separate until you run embed or index.

The typed presets use the same synthesis/timeline pattern as CLI capture: current assessment above ## Timeline, raw notes and dated evidence below it. If contentTypes rules are configured, matching preset frontmatter or folder prefixes become contentType metadata in JSON search/query results.

Document outline Copy link stays human-readable: /doc?uri=…#anchor. The frozen integration template is {serveUrl}/doc?uri=<encodeURIComponent(uri)>, with an optional #anchor. gno peek --json exposes serve.url for that construction when detached serve is up. Older bookmarks keep working. Optional Copy citation link adds a versioned, size-bounded st query param with quote/context evidence for local recovery after heading edits. Citation links never embed a full section body and are not a public sharing format.

Opening a citation link resolves conservatively through the shared core: exact and uniquely recovered targets navigate to the current anchor and show a short status; ambiguous, stale, missing, or invalid selectors never navigate and never silently cite a different section. Quick Switcher section jumps continue to use readable anchors only.

Search and ask controls

The Web UI exposes the same retrieval controls as the CLI. Use exact search for names and phrases, vector search for conceptual matches, hybrid for normal research, and the Ask page when you want a grounded answer with citations. Turn on Verify for the closed-Capsule path. Its expandable receipt shows supported, contradicted, insufficient, and uncertain claims, evidence gaps, and unavailable or degraded verifier state without dumping the entire Capsule into the page.

Browser requests do not infer a filesystem project root. The Web UI therefore keeps project affinity at zero; use the local CLI when a trusted cwd or explicit project root should act as a bounded soft ranking signal.

Configured content-type boosts still apply across Web, REST, MCP, SDK, and CLI retrieval. One matched rule contributes at most ±0.05, cannot widen candidate retrieval or defer minScore, and cannot bypass collection, tag, date, category, author, or exclude filters. Hybrid applies the composed auxiliary score to normalized fusion before rerank blending.

term: "spaced repetition"
intent: personal knowledge base learning loop
hyde: A note explaining how repeated review turns saved notes into long-term memory.

Private trace history

Trace history is a local, opt-in evidence ledger. The Web page lists metadata-only summaries, opens one bounded detail receipt, accepts explicit relevant, irrelevant, or missing-expected labels, exports selected terminal traces, and confirms per-trace deletion or full purge. Open, completed, partial, failed, and cancelled remain visibly distinct; GNO never treats a missing click or failed request as negative feedback.

Qrels export retains only explicit judgments, canonical identities, exact line/hash provenance, ranks, capabilities, and outcomes. It never copies source or converted mirror text. Candidate replay fails closed when its saved manifest, linked receipt, or source hash has changed, and reports unchanged, stale, missing, inactive, or unindexed evidence state.

Safe editing model

Markdown and plain text stay editable. Converted binaries (PDF, DOCX, XLSX, PPTX) and logical export records stay read-only. Edit or regenerate the source export, or use Create editable copy in the doc view to spawn a markdown note with source provenance intact.

Native PDF viewer

PDFs stay read-only. Pages renders the original PDF with an aligned selectable text layer, page navigation, zoom, fit-width, fit-page, and Download original. A Pages / Text toggle keeps the indexed extracted text one click away.

Rendering remains local and offline-first. GNO serves PDF.js, its worker, character maps, standard fonts, and the original document bytes from the same loopback origin. Long documents stay responsive because only pages near the viewport receive live canvases.

If rendering fails and extracted text is available, GNO switches to Text and names the reason: corrupt file, password protection, network failure, or viewer bootstrap failure. Without extracted text, Pages keeps the designed error card with retry and download actions; selecting Text manually shows the explicit no-extracted-text state. Printing is not built in. Download the original and print it from a PDF reader. Page, zoom, fit mode, and Pages/Text choice reset when you leave the document.

Keyboard shortcuts

Next steps