Skip to content

Web Dashboard

The SessionFS dashboard is a management interface for browsing sessions, organizing projects, handling team handoffs, and configuring sync. It is not a chat UI — you interact with your AI tools natively and use the dashboard to review, resume, and share the resulting sessions.

The hosted dashboard is at app.sessionfs.dev. Self-hosted deployments serve the dashboard from their own domain (see Self-Hosted).

Log in with your API key. You can generate one with sfs auth login or from the Settings page if you already have an account. After login, the dashboard remembers your session until you explicitly log out.


The home page (/) is For You: one ranked list of what needs you across reminders, approvals, assigned tickets, Review Loop items, handoffs, questions on your tickets, meeting and chat action items and what changed this week. Every card says why it is there, and you can approve, reject, claim, raise a loop’s limit, mark done, hide or snooze from the card, with Undo. To land on your sessions instead, choose Sessions as home under For You → Home; For You then lives at /for-you.


The Sessions page (/sessions) lists all synced sessions grouped by date. Links to the old home with a session filter (/?view=trash, /?model=…) redirect here. Each card shows the tool badge, title or first message, model, message count, token usage, and relative timestamp.

At the top of the list, the most recent session from each tool is highlighted with a one-click resume command you can copy to your terminal. This is the fastest way to pick up where you left off.

Forked and resumed sessions are grouped under their root session. Expanding a lineage group shows the full chain of parent and child sessions so you can trace how a conversation evolved.

  • Tool filter — narrow to a single tool: Claude Code, Codex, Gemini CLI, Copilot, Cursor, Amp, Cline, Roo Code, Kilo Code, or Antigravity.
  • Model filter — narrow to one or more models, populated from your sessions with counts. Model ids that carry a trailing date stamp (like gpt-5-20250127) show a friendlier name (the date is stripped for display only; filtering uses the raw id, and screen readers hear the raw id). Sessions with no recorded model appear as Unknown model. The selection lives in the page URL, so it survives a refresh or a shared link; a selected model that isn’t in the current list (another tool filter, or a shared link) still shows with a 0 count so you can untick it, and Clear models resets the filter. Sorting by model is done on the server, across every page.
  • Date range — Last 24 hours, 7 days, 30 days, or all time.
  • Sort — by date, tool, model, message count, token count, or title.

Check the box on multiple sessions to delete them in bulk. The Find Duplicates button scans for sessions with identical content (common when the same session is imported by multiple watchers) and lets you remove extras.

The left sidebar shows bookmark folders. Drag a session onto a folder or use the bookmark button on any session card to organize your work. Folders are user-level — they do not affect the underlying .sfs data.


Click a session to open its detail view (/sessions/:id). The header shows the tool, model, alias, cost estimate, and token counts.

The default tab displays the full captured conversation as a readable transcript with paginated messages (50 per page). Tool calls and tool results are rendered with tool-aware formatting — file edits, command runs, and search results show as structured blocks rather than raw JSON. Use the order toggle to switch between oldest-first and newest-first. Sidechain and empty messages can be filtered out for readability. Click a page number or use the jump control to navigate long sessions.

Lists every file the agent created, edited or deleted in the session, with line counts and a diff per file (v0.23.0). It is rebuilt from the edit, write and patch tool calls captured for Claude Code, Codex, Cursor, Gemini CLI, Cline, Roo Code, Kilo Code, Amp, Copilot CLI and Antigravity. Diffs come from the stored, already-redacted session, so a redacted secret never reappears. A session that only read files shows no changes. API: GET /api/v1/sessions/{id}/changes.

Shows the deterministic summary (key decisions, files touched, commands run) and, if available, the narrative LLM summary generated during sync.

Displays the LLM Judge trust score (0–100), individual findings with CWE mapping and confidence levels, and linked evidence from the conversation. Each finding can be dismissed or confirmed. Use the Export button to download the audit report as JSON.

  • Ask the helper — opens the session helper scoped to this session (Enterprise).
  • Resume — copies the sfs resume command for this session to your clipboard.
  • Handoff — opens the handoff modal to send the session to a teammate.
  • Share — creates a public share link. The recipient sees the session as a read-only page at /s/{token} — no account required. Links are owner-revocable, can be password-protected, are never cached or search-indexed, and are hard-gated by a DLP scan of exactly the content served (tool inputs included), re-run whenever the underlying session changes.
  • Alias — click the alias field to set a short memorable name (e.g., auth-refactor). Aliases are unique per user and can be used in place of session IDs in the CLI.
  • Bookmark — add the session to a folder from the more menu.

Press Cmd+K (or Ctrl+K) from any page to open the command palette. Type to search sessions by title, alias, or message content. Arrow keys navigate results; Enter opens the selected session; Escape closes the palette.

The full search page (/search) adds tool and date-range filters on top of the text query. Results show matching snippets with the search term highlighted.


The Projects page (/projects) lists all project contexts linked to your repositories. Each card shows the project name (or normalized git remote), session count, and a preview of the context document. Project pages are addressed by project id (/projects/proj_...); older links by git remote redirect there, and a merged project’s link opens the project it was merged into.

Click New Project to create one. Provide a name and optionally link a git remote. The project is the container for shared context, knowledge entries, and wiki pages.

A project is organized into five sections. The header is one line: Projects / project name / a menu of the sections, the current section’s sub-tabs, then Compile (with the number of entries waiting, for editors) and Ask the helper. The current section and sub-tab are kept in the address bar, so you can link straight to them and the back button works.

  • Overview — when the context was last compiled and how many claims are waiting, with a one-click compile when it is out of date, then the project’s compiled context document, shown as a readable document (lists, quotes, tables, task lists and code blocks render properly) with an On this page list of its sections beside the text that highlights the one you’re reading; on a phone the list is a collapsible menu above the text. Click Edit to change it in the markdown editor. This document is injected into sessions via MCP or --append-system-prompt-file.
  • Knowledge — Entries (structured facts captured with add_knowledge, with type, text, confidence and creation date), Pages (wiki pages with backlinks, including compiled section pages) and History (past compilations).
  • Work — Tickets, Meetings, Agent runs and Agents (the AI roles your tools work as; org-wide ones are marked Org). Tickets opens on saved views with counts — Mine, Triage, Needs review, Blocked, Overdue and All — and can be grouped (by status, Issue or assignee), sorted (by priority, due date or last update), filtered and searched; the view is kept in the address bar. Each ticket is one line: a status icon, its id and title, signals for its review round and verdict, what it is waiting on, an Issue’s progress and its Jira key, then due date, priority, assignee and age. The status icon opens a menu of the moves you can make from the dashboard (approve, dismiss after a confirm, close an Issue), and the assignee opens the reassign editor. Tick the boxes on several tickets (Shift-click selects a range) to Assign, Approve, Dismiss or Follow them together; tickets that fail stay selected. B switches to a board with six columns. New ticket asks for the title first; criteria, due date and estimate are under More details, and Cmd/Ctrl+Enter creates it. Opening a ticket shows it in a detail pane — beside the list on wide screens, as a slide-over on smaller ones, full screen on a phone — with a Next step card that says what happens next, and tabs for Overview (description, acceptance criteria, notes, dependencies and details), Activity, Review (verdict, rounds, findings and merge readiness), Child tasks and Jira. The Activity tab merges comments, trusted review verdicts (marked with their round), Jira sync events and the ticket’s full change history (status, assignment, priority, due date, estimate and other edits, each with who made it) in time order, and ends with the comment box. Press ? on the Tickets tab for every keyboard shortcut (see Keyboard Shortcuts). A due date and an estimate in Jira duration syntax (3d, 2d 4h, 30m) can be set when creating a ticket or edited later (v0.28.0). On a ticket, Promote to Jira opens an editable Jira preview, and Link existing issue attaches the ticket to an issue already in Jira (Enterprise). The assignee picker lists personas and teammates: a teammate assigned directly gets a “Your turn” notification, and the picker warns when the chosen persona represents nobody, so no one would be notified. Mine lists your tickets. On an agent run, Replay queues a copy with an edited prompt or context, and Compare shows which findings were added, removed or unchanged between two runs. Clicking an org persona opens its recent activity. Meetings lists the project’s stored transcripts with search and an upload dialog (paste text or choose a .txt, .md, .vtt or .srt file); opening one shows the numbered transcript with its action items, decisions and participants beside it, where you can run Extract, match participants by hand and Create ticket from an action item through an editable preview. Project group pages have the same view for group meetings (v0.29.0). See Meetings. Review loops (v0.29.2) show as runs with a story of each ticket (brief, run, round, finding, fix, verdict, merge) and a Checklist panel for the project’s review traps; Raise limit lifts a token, dollar or round limit and Close item settles an item the loop handed back to a person. Dollar amounts appear only for org owners and admins, or the owner of a personal project. From v0.29.3 the Review loops page under Inbox lists the loops of every project you can see, and each loop has a Loop Board with one lane per ticket, a ring per review round sized by harmful findings and a budget forecast, plus Ship Reports with image and markdown export, a model scoreboard and a Needs you panel that includes proposed checklist items. See Worker Review Loop.
  • Rules & Skills — Rules (canonical project rules compiled into each tool’s instruction file) and Skills (the project’s installed skills and pending install requests from the marketplace).
  • Settings — grouped into About (the repository path, the number of linked repositories and when the project was created and last updated), General (rename the project), Knowledge (the narrative summary toggle and the Scheduled KB compile: nightly, weekly or off, with an optional pending-claims threshold), Repositories (linked repos, and merging another project into this one), Access & ownership (the project groups that include it, and transferring it) and Danger zone (deleting it).

The Handoffs page (/handoffs) has two tabs: Inbox (handoffs sent to you) and Sent (handoffs you created).

When you receive a handoff, its status is pending. Click it to see the session context card — a summary of the session being handed off, including tool, model, message count, and the sender’s note. Click Claim to accept. The session is copied to your account and the status moves to claimed. Unclaimed handoffs expire after the configured TTL.

Each handoff shows a three-step progress indicator: Created, Claimed, Completed. This makes it easy to see at a glance where things stand across your team.


Account settings live at /settings, split into sections that each have their own address (for example /settings/sync). On a phone the section list becomes a menu.

  • Account (/settings/account) — your account and plan, last sync, and the Capture Health card. If a tool ships a format change that silently breaks capture, the daemon detects it (an idle tool is never flagged) and the card surfaces it here — the same signal reported by sfs doctor.
  • Preferences (/settings/preferences) — appearance, including light or dark theme.
  • Integrations (/settings/integrations) — your server URL and API key, the GitHub Integration for PR-linked sessions and PR comments, and the GitLab Integration for merge request comments on gitlab.com or a self-managed instance (connect, update or disconnect; the access token and webhook secret are write-only and never shown back). See Git Integration.
  • Data protection (/settings/data-protection) — automatic audit on sync (LLM Judge) and your DLP secret-scanning policy.
  • Sync (/settings/sync) — autosync mode: off (local only), all (sync every session), or selective (sync only sessions on your watchlist).

The Billing page (/settings/billing) shows your current tier and usage.

  • Tier display — shows your plan (Free, Starter, Pro, Team, Enterprise, or Admin) and the features included.
  • Upgrade — select a higher SessionFS Cloud tier.
  • Manage subscription — opens the subscription page where you can update payment methods, view invoices, or cancel.
  • Organization billing — if you belong to an org, billing is managed at the org level. The effective tier is resolved from the org, not your individual account. If you belong to several orgs, the page shows your default org’s plan; anything tied to a project or a named org uses that org’s plan.

The Organization page (/settings/organization) has these tabs: Members (members, roles and invites), Personas (org-wide agent personas, each with an activity panel), Policies (organization defaults, the weekly digest opt-out under Notifications and, on Enterprise, the session helper AI key), Integrations (Jira Cloud and Confluence Cloud, Enterprise: one summary row each, with Manage opening that integration’s settings) and, for admins, Security (single sign-on). Members inherit the org tier for all sync and feature limits. If you belong to more than one organization, the page shows your default organization and a switcher at the top changes it; see Your default organization.


The Admin page (/admin) is only visible to users with the admin tier.

  • User Management — view all users, their tiers, last activity, and client versions. Adjust tiers or disable accounts.
  • Activity Log — chronological feed of key events (syncs, handoffs, audits, logins).
  • Licenses — manage self-hosted license keys, view activation status, and handle grace periods.

Shortcut Action
Cmd+K / Ctrl+K Open command palette (search, and Ask the helper on Enterprise)
Escape Close any open modal or palette
Arrow Up / Arrow Down Navigate search results
Enter Open selected search result

On the Tickets tab, when you aren’t typing in a field:

Shortcut Action
J / K (or arrow keys) Next / previous ticket
Enter or O Open the ticket
Escape Close the panel or clear the selection
X / Shift+click Select a ticket / a range
S / A Change status / assign
C New ticket
/ Search
B Switch between list and board
1–6 Switch view
[ / ] Previous / next detail tab
? Show these shortcuts

The left sidebar puts For You (with a count of what is waiting on you), Sessions, Projects and Handoffs first, then groups the rest into Library (Marketplace), Inbox (Invites, Transfers) and Manage (Organization, Billing). The marketplace pages share one sub-navigation. On Enterprise, Ask the helper in the sidebar opens the session helper drawer, where answers stream in with links to the sessions they cite and earlier threads are listed under Conversations. The session list supports both list and grid layouts — toggle between them to scan many sessions at a glance or focus on detail.

Product terms (such as claim, verdict or trusted reviewer) explain themselves when you hover, focus or tap them, with a link to the docs. Every icon button has a tooltip, and a disabled button says why it can’t be used.

The dashboard works on phones: every page fits a 375 px screen without sideways scrolling, the sidebar becomes a menu, and tab bars scroll instead of overflowing. Tabs follow the standard keyboard pattern (arrow keys, Home, End), and notifications are announced to screen readers.


The dashboard is dark-first and supports both light and dark themes. It follows your system preference by default. You can override the theme from the layout header or in Settings → Preferences.