Skip to main content

Local web viewer for AI agent sessions

Project description

agentsview

A local-first desktop and web application for browsing, searching, and analyzing AI agent coding sessions. Supports Claude Code, Codex, OpenCode, and 9 other agents.

Analytics dashboard

Desktop App

Download the desktop installer for macOS or Windows from GitHub Releases. The desktop app includes auto-updates and runs the server as a local sidecar -- no terminal required.

CLI Install

curl -fsSL https://agentsview.io/install.sh | bash

Windows:

powershell -ExecutionPolicy ByPass -c "irm https://agentsview.io/install.ps1 | iex"

The CLI installer downloads the latest release, verifies the SHA-256 checksum, and installs the binary.

Build from source (requires Go 1.25+ with CGO and Node.js 22+):

git clone https://github.com/wesm/agentsview.git
cd agentsview
make build
make install  # installs to ~/.local/bin

Why?

AI coding agents generate large volumes of session data across projects. agentsview indexes these sessions into a local SQLite database with full-text search, providing a web interface to find past conversations, review agent behavior, and track usage patterns over time.

Features

  • Full-text search across all message content, instantly
  • Analytics dashboard with activity heatmaps, tool usage, velocity metrics, and project breakdowns
  • Multi-agent support for Claude Code, Codex, OpenCode, and 9 other agents (full list)
  • Live updates via SSE as active sessions receive new messages
  • Keyboard-first navigation (vim-style j/k/[/])
  • Export and publish sessions as HTML or to GitHub Gist
  • Local-first -- all data stays on your machine, single binary, no accounts

Usage

agentsview              # start server
agentsview -port 9090   # custom port

On startup, agentsview discovers sessions from all supported agents, syncs them into a local SQLite database with FTS5 full-text search, and opens a web UI at http://127.0.0.1:8080.

For hostname or reverse-proxy access, set a public_url. This preserves the default DNS-rebinding and CSRF protections while explicitly trusting the external browser origin you expect.

# Direct HTTP on a custom hostname/port
agentsview -host 0.0.0.0 -port 8004 \
  -public-url http://viewer.example.test:8004

# HTTPS behind your own reverse proxy
agentsview -host 127.0.0.1 -port 8004 \
  -public-url https://viewer.example.test

agentsview can also manage a Caddy frontend for you. In managed-Caddy mode, keep the backend on loopback and let Caddy terminate TLS and optionally restrict client IP ranges. By default, managed Caddy binds to 127.0.0.1 and exposes the public URL on port 8443. To expose it on a non-loopback interface, set -proxy-bind-host explicitly and provide at least one -allowed-subnet.

Managed Caddy mode requires the caddy CLI to already be installed. This patch does not automate Caddy installation. Use your normal OS package manager or ask your coding agent to install Caddy for your platform first. Caddy supports Linux, macOS, and Windows.

For privileged ports such as 443 or 80, prefer leaving agentsview itself unprivileged and granting the Caddy binary permission to bind low ports. On Linux, that typically means:

sudo setcap cap_net_bind_service=+ep "$(command -v caddy)"

Then run agentsview normally as your user with -public-port 443 or -public-port 80. This avoids running the session viewer as root, which would otherwise change which home directory and agent session data it can see. If you do not need a privileged port, the default 8443 is the simpler option.

agentsview -host 127.0.0.1 -port 8080 \
  -public-url https://viewer.example.test \
  -proxy caddy \
  -proxy-bind-host 0.0.0.0 \
  -public-port 8443 \
  -tls-cert ~/.certs/viewer.crt \
  -tls-key ~/.certs/viewer.key \
  -allowed-subnet 10.0/16 \
  -allowed-subnet 192.168.1.0/24

You can persist the same settings in ~/.agentsview/config.toml:

public_url = "https://viewer.example.test"

[proxy]
mode = "caddy"
bind_host = "0.0.0.0"
public_port = 8443
tls_cert = "/home/user/.certs/viewer.crt"
tls_key = "/home/user/.certs/viewer.key"
allowed_subnets = ["10.0/16", "192.168.1.0/24"]

public_origins remains available as an advanced override when you need to allow additional browser origins beyond the main public_url.

Screenshots

Dashboard Session viewer
Dashboard Session viewer
Search Activity heatmap
Search Heatmap

Keyboard Shortcuts

Key Action
Cmd+K Open search
j / k Next / previous message
] / [ Next / previous session
o Toggle sort order
t Toggle thinking blocks
e Export session as HTML
p Publish to GitHub Gist
r Sync sessions
? Show all shortcuts

PostgreSQL Sync

agentsview can push session data from the local SQLite database to a remote PostgreSQL instance, enabling shared team dashboards and centralized search across multiple machines.

Push Sync (SQLite to PG)

Configure pg in ~/.agentsview/config.toml:

[pg]
url = "postgres://user:pass@host:5432/dbname?sslmode=require"
machine_name = "my-laptop"

Use sslmode=require (or verify-full for CA-verified connections) for non-local PostgreSQL instances. Only use sslmode=disable for trusted local/loopback connections.

The machine_name identifies which machine pushed each session (must not be "local", which is reserved).

CLI commands:

agentsview pg push          # push now
agentsview pg push --full   # force full re-push (bypasses heuristic)
agentsview pg status        # show sync status

Push is on-demand — run pg push whenever you want to sync to PostgreSQL. There is no automatic background push.

PG Read-Only Mode

Serve the web UI directly from PostgreSQL with no local SQLite. Configure [pg].url in config (as shown above), then:

agentsview pg serve              # default: 127.0.0.1:8080
agentsview pg serve -port 9090   # custom port

To have pg serve manage a Caddy TLS frontend directly:

The same managed-Caddy prerequisites and backend-loopback requirement described earlier for normal serve mode also apply here.

agentsview pg serve \
  -host 127.0.0.1 \
  -port 18080 \
  -public-url https://viewer.example.test \
  -proxy caddy \
  -proxy-bind-host 0.0.0.0 \
  -public-port 8443 \
  -tls-cert ~/.certs/viewer.crt \
  -tls-key ~/.certs/viewer.key \
  -allowed-subnet 10.0/16

This mode is useful for shared team viewers where multiple machines push to a central PG database and one or more read-only instances serve the UI. Uploads, file watching, and local sync are disabled. For managed-Caddy mode, keep the backend -host on loopback and use -proxy-bind-host / -public-port to expose the public listener. If you run plain pg serve without -proxy caddy, then using a non-loopback -host enables token-authenticated remote access and prints the auth token on startup.

The normal SQLite-backed serve mode and PostgreSQL-backed pg serve mode keep separate managed-Caddy state, so both can coexist on one host.

Known Limitations

  • Deleted sessions: Sessions permanently pruned from SQLite (via agentsview prune) are not propagated as deletions to PG. Sessions soft-deleted with deleted_at are synced correctly.
  • Change detection: Push uses aggregate length statistics rather than content hashes. Use -full to force a complete re-push if content was rewritten in-place.

Documentation

Full documentation is available at agentsview.io:

Development

make dev            # run Go server in dev mode
make frontend-dev   # run Vite dev server (use alongside make dev)
make desktop-dev    # run Tauri desktop app in dev mode
make test           # Go tests (CGO_ENABLED=1 -tags fts5)
make lint           # golangci-lint (auto-fix)
make e2e            # Playwright E2E tests
make install-hooks  # install pre-commit hooks via prek

Pre-commit hooks are managed with prek. Run brew install prek && make install-hooks after cloning. The hook runs make lint on every commit, auto-fixing formatting issues. If the hook rewrites files, re-stage and re-commit.

Desktop Development

The desktop app is a Tauri wrapper under desktop/. It launches the agentsview Go binary as a local sidecar and loads http://127.0.0.1:<port> in a native webview.

make desktop-dev                 # run desktop app in dev mode
make desktop-build               # build desktop bundles (.app/.exe)
make desktop-macos-app           # build macOS .app only
make desktop-windows-installer   # build Windows installer (.exe)

Desktop env escape hatch: ~/.agentsview/desktop.env (for PATH/API keys overrides).

Project Structure

cmd/agentsview/     CLI entrypoint
internal/config/    Configuration loading
internal/db/        SQLite operations (sessions, search, analytics)
internal/postgres/  PostgreSQL support (push sync, read-only store, schema)
internal/parser/    Session parsers (all supported agents)
internal/server/    HTTP handlers, SSE, middleware
internal/sync/      Sync engine, file watcher, discovery
frontend/           Svelte 5 SPA (Vite, TypeScript)

Supported Agents

Agent Session Directory Env Override
Claude Code ~/.claude/projects/ CLAUDE_PROJECTS_DIR
Codex ~/.codex/sessions/ CODEX_SESSIONS_DIR
Copilot ~/.copilot/ COPILOT_DIR
Gemini ~/.gemini/ GEMINI_DIR
OpenCode ~/.local/share/opencode/ OPENCODE_DIR
Cursor ~/.cursor/projects/ CURSOR_PROJECTS_DIR
Amp ~/.local/share/amp/threads/ AMP_DIR
iFlow ~/.iflow/projects/ IFLOW_DIR
VSCode Copilot ~/Library/Application Support/Code/User/ (macOS) VSCODE_COPILOT_DIR
Pi ~/.pi/agent/sessions/ PI_DIR
OpenClaw ~/.openclaw/agents/ OPENCLAW_DIR
Kimi ~/.kimi/sessions/ KIMI_DIR

Acknowledgements

Inspired by claude-history-tool by Andy Fischer and claude-code-transcripts by Simon Willison.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

agentsview-0.17.1-py3-none-win_amd64.whl (7.1 MB view details)

Uploaded Python 3Windows x86-64

agentsview-0.17.1-py3-none-manylinux_2_28_x86_64.whl (6.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

agentsview-0.17.1-py3-none-manylinux_2_28_aarch64.whl (6.3 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

agentsview-0.17.1-py3-none-macosx_11_0_x86_64.whl (7.0 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

agentsview-0.17.1-py3-none-macosx_11_0_arm64.whl (6.5 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file agentsview-0.17.1-py3-none-win_amd64.whl.

File metadata

  • Download URL: agentsview-0.17.1-py3-none-win_amd64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for agentsview-0.17.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a0aa1d7a0a2e27b4daa231d43e54af8ffb293ff99d2f87cf67812725117644ad
MD5 9f188630b19e5d6cf52041035793142a
BLAKE2b-256 1ecd2e4c983c1459bfa9b52d6ad4aeb42c78b72e6cd770e0f2fa6c8d3e8b3f0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentsview-0.17.1-py3-none-win_amd64.whl:

Publisher: release.yml on wesm/agentsview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentsview-0.17.1-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for agentsview-0.17.1-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c27211cba6f0358a9765ff663ffe293e2bd9f7dad73887a76159706b57c87330
MD5 0f7f3ae336a9c2a17714b4d16f48bff9
BLAKE2b-256 0a8320af13d37292181dd41e484303d8480df292bc8b3996447a46b9028681c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentsview-0.17.1-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on wesm/agentsview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentsview-0.17.1-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for agentsview-0.17.1-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0647ed1ed23e33448a15dfa361364f9b8242146da418ec3e8f51f6df6ea45616
MD5 e8e323e017b24e0f16513ee59088befe
BLAKE2b-256 7cdbda287271c0c66ccdfbe439a4dbdc1b36581fb3795b2976682aa6048b8d98

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentsview-0.17.1-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release.yml on wesm/agentsview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentsview-0.17.1-py3-none-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for agentsview-0.17.1-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 b4c50543ec28ba94316f321174925f22ccdae5beafbdbd2d6fc67821b14ac606
MD5 612e063623359bdfb0aa8177199dd399
BLAKE2b-256 858988001c6cd87eacf5fa809c316fad20ee30d211d010462029137a79b87e64

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentsview-0.17.1-py3-none-macosx_11_0_x86_64.whl:

Publisher: release.yml on wesm/agentsview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agentsview-0.17.1-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for agentsview-0.17.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64222dc73935adc2af1a5f5e7d8b3edc1794c8b1493593740646df76f686f418
MD5 8970f872e6ba7411baee6be8d6052792
BLAKE2b-256 844fbd0a8ce1dba10e284638b41fe58269af0d5b8b1c81e0a5065991faee8f8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for agentsview-0.17.1-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on wesm/agentsview

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page