Web UI
sivtr web serves a local web UI and a read-only JSON API over the unified archive (archive.db). Use it to browse terminal and agent sessions and to run full-text search ranked by BM25 relevance without opening the TUI.
Start the server
Section titled “Start the server”sivtr webThen open http://127.0.0.1:8080 in a browser.
| Option | Meaning |
|---|---|
--port <PORT> |
TCP port to bind (default 8080) |
--host <HOST> |
Loopback bind address (default 127.0.0.1). Non-loopback values are rejected. |
Using the UI
Section titled “Using the UI”- Session browser — filter sessions by provider, open a session, and copy its refs for use with
sivtr show. - Search — press
/anywhere to focus the search box; choose BM25, semantic, or hybrid ranking. BM25 is ranked per source;source=allconcatenates the agent list then the terminal list. - Usage and activity — the dashboard shows catalog-priced token usage, unpriced events, archive counts, and active days.
JSON API
Section titled “JSON API”The same surface is available as a read-only JSON API:
| Endpoint | Purpose |
|---|---|
GET /api/v1/health |
Server health check |
GET /api/v1/providers |
List registered providers |
GET /api/v1/sessions?provider=&limit=&offset= |
List sessions with optional filters |
GET /api/v1/sessions/{provider}/{session_id} |
One full session |
GET /api/v1/search?q=&source=all|all:agent|all:terminal|<selector>&limit=&semantic=&hybrid= |
BM25, semantic, or hybrid search |
GET /api/v1/usage?provider=&session_id=&since=&until= |
Token usage and costs |
GET /api/v1/stats?provider=&since=&until= |
Activity, outcomes, projects, privacy, and usage statistics |
Privacy
Section titled “Privacy”The server binds loopback only (127.0.0.1, localhost, ::1). Non-loopback --host values are rejected, so the unauthenticated UI cannot be exposed on the network. The HTTP API is read-only; startup may refresh the local archive via ensure_fresh(). With a loopback bind, data never leaves the machine. The server also validates the browser Host header to guard against DNS rebinding.
Changing --port also changes the accepted Host, so requests must target the same host:port the server is bound to.