Observed since 20 Oct, 23:21 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
agent-session-viewer
A web viewer for AI agent coding sessions (Claude Code, Codex, etc.)
Browse, search, and revisit your AI coding sessions. Never lose track of that clever solution your AI pair programmer came up with three weeks ago.

AI coding sessions pile up fast. Finding that one conversation where you solved a tricky bug or implemented a specific pattern means digging through session files by hand. This tool gives you instant full-text search across every session from Claude Code and Codex, organized by project.
r~/.agent-session-viewer/# With uv (recommended)
uv tool install agent-session-viewer
# With pip
pip install agent-session-viewer
# If installed via uv tool install or pip
agent-session-viewer
# Or run directly without installing
uvx agent-session-viewer@latest
Opens a browser at http://localhost:8080.
Options:
--port 9000 - Use a custom port--no-browser - Don't open browser automatically--host 0.0.0.0 - Bind to all interfaces| Key | Action |
|---|---|
j / k | Next / previous message |
] / [ | Next / previous session |
o | Toggle message order |
r | Sync sessions |
e | Export session as HTML |
p | Publish session to Gist |
⌘K | Focus search |
? | Show all shortcuts |
Share your AI coding sessions with teammates, for blog posts, or to document how you solved a problem.
Press e or click Export to download the current session as a self-contained HTML file.
Press p or click Publish to instantly share a session via GitHub Gist.
First-time setup:
gist scope)After setup, publishing is one click. You'll get two URLs:
| URL | Purpose |
|---|---|
| View URL | Shareable link that renders the HTML directly in the browser |
| Gist URL | Link to the gist on GitHub (for editing or deleting) |

Your token is stored locally in ~/.agent-session-viewer/config.json with restricted file permissions.
~/.claude/projects/~/.codex/sessions/The viewer syncs sessions from each agent's local storage into its own database with full-text search indexing. When you're viewing an active session, it watches the source file and updates the UI within seconds of new messages.
Inspired by claude-history-tool by Andy Fischer and claude-code-transcripts by Simon Willison.
MIT
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
apschedulerEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | apscheduler>=3.10.0 | runtime |
fastapiEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | fastapi>=0.109.0 | runtime |
python-multipartEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | python-multipart>=0.0.6 | runtime |
uvicornEnvironment{
"extras": "standard",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | uvicorn[standard]>=0.27.0 | runtime |
pytest-asyncioEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest-asyncio>=0.23.0; extra == "dev" | runtime |
pytestEnvironment{
"extras": "",
"marker": "extra == \"dev\"",
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | pytest>=8.0.0; extra == "dev" | runtime |
bdist_wheel · 1,473.55 KB · Python py3
sdist · 1,529.87 KB · Python source
Observed since 20 Oct, 23:21 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:870526bb28b71222a7463848d2d678809cdfb1be37b6f67e5fa5bfa4937f32bc