agentsview 0.16.1__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
agentsview/__init__.py
ADDED
agentsview/__main__.py
ADDED
|
Binary file
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: agentsview
|
|
3
|
+
Version: 0.16.1
|
|
4
|
+
Summary: Local web viewer for AI agent sessions
|
|
5
|
+
Home-page: https://github.com/wesm/agentsview
|
|
6
|
+
Author: Wes McKinney
|
|
7
|
+
License: MIT
|
|
8
|
+
Requires-Python: >=3.9
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Description-Content-Type: text/markdown
|
|
12
|
+
|
|
13
|
+
# agentsview
|
|
14
|
+
|
|
15
|
+
A local-first desktop and web application for browsing, searching,
|
|
16
|
+
and analyzing AI agent coding sessions. Supports Claude Code, Codex,
|
|
17
|
+
OpenCode, and 9 other agents.
|
|
18
|
+
|
|
19
|
+
<p align="center">
|
|
20
|
+
<img src="https://agentsview.io/screenshots/dashboard.png" alt="Analytics dashboard" width="720">
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
## Desktop App
|
|
24
|
+
|
|
25
|
+
Download the desktop installer for macOS or Windows from
|
|
26
|
+
[GitHub Releases](https://github.com/wesm/agentsview/releases).
|
|
27
|
+
The desktop app includes auto-updates and runs the server as a
|
|
28
|
+
local sidecar -- no terminal required.
|
|
29
|
+
|
|
30
|
+
## CLI Install
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
curl -fsSL https://agentsview.io/install.sh | bash
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Windows:**
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
powershell -ExecutionPolicy ByPass -c "irm https://agentsview.io/install.ps1 | iex"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
The CLI installer downloads the latest release, verifies the
|
|
43
|
+
SHA-256 checksum, and installs the binary.
|
|
44
|
+
|
|
45
|
+
**Build from source** (requires Go 1.25+ with CGO and Node.js 22+):
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git clone https://github.com/wesm/agentsview.git
|
|
49
|
+
cd agentsview
|
|
50
|
+
make build
|
|
51
|
+
make install # installs to ~/.local/bin
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Why?
|
|
55
|
+
|
|
56
|
+
AI coding agents generate large volumes of session data across
|
|
57
|
+
projects. agentsview indexes these sessions into a local SQLite
|
|
58
|
+
database with full-text search, providing a web interface to
|
|
59
|
+
find past conversations, review agent behavior, and track usage
|
|
60
|
+
patterns over time.
|
|
61
|
+
|
|
62
|
+
## Features
|
|
63
|
+
|
|
64
|
+
- **Full-text search** across all message content, instantly
|
|
65
|
+
- **Analytics dashboard** with activity heatmaps, tool usage,
|
|
66
|
+
velocity metrics, and project breakdowns
|
|
67
|
+
- **Multi-agent support** for Claude Code, Codex, OpenCode, and
|
|
68
|
+
9 other agents ([full list](#supported-agents))
|
|
69
|
+
- **Live updates** via SSE as active sessions receive new messages
|
|
70
|
+
- **Keyboard-first** navigation (vim-style `j`/`k`/`[`/`]`)
|
|
71
|
+
- **Export and publish** sessions as HTML or to GitHub Gist
|
|
72
|
+
- **Local-first** -- all data stays on your machine, single binary,
|
|
73
|
+
no accounts
|
|
74
|
+
|
|
75
|
+
## Usage
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
agentsview # start server
|
|
79
|
+
agentsview -port 9090 # custom port
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
On startup, agentsview discovers sessions from all supported
|
|
83
|
+
agents, syncs them into a local SQLite database with FTS5
|
|
84
|
+
full-text search, and opens a web UI at `http://127.0.0.1:8080`.
|
|
85
|
+
|
|
86
|
+
For hostname or reverse-proxy access, set a `public_url`. This
|
|
87
|
+
preserves the default DNS-rebinding and CSRF protections while
|
|
88
|
+
explicitly trusting the external browser origin you expect.
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Direct HTTP on a custom hostname/port
|
|
92
|
+
agentsview -host 0.0.0.0 -port 8004 \
|
|
93
|
+
-public-url http://viewer.example.test:8004
|
|
94
|
+
|
|
95
|
+
# HTTPS behind your own reverse proxy
|
|
96
|
+
agentsview -host 127.0.0.1 -port 8004 \
|
|
97
|
+
-public-url https://viewer.example.test
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
agentsview can also manage a Caddy frontend for you. In managed-Caddy
|
|
101
|
+
mode, keep the backend on loopback and let Caddy terminate TLS and
|
|
102
|
+
optionally restrict client IP ranges. By default, managed Caddy binds
|
|
103
|
+
to `127.0.0.1` and exposes the public URL on port `8443`. To expose it
|
|
104
|
+
on a non-loopback interface, set `-proxy-bind-host` explicitly and
|
|
105
|
+
provide at least one `-allowed-subnet`.
|
|
106
|
+
|
|
107
|
+
Managed Caddy mode requires the `caddy` CLI to already be installed.
|
|
108
|
+
This patch does not automate Caddy installation. Use your normal OS
|
|
109
|
+
package manager or ask your coding agent to install Caddy for your
|
|
110
|
+
platform first. Caddy supports Linux, macOS, and Windows.
|
|
111
|
+
|
|
112
|
+
For privileged ports such as `443` or `80`, prefer leaving
|
|
113
|
+
`agentsview` itself unprivileged and granting the Caddy binary
|
|
114
|
+
permission to bind low ports. On Linux, that typically means:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
sudo setcap cap_net_bind_service=+ep "$(command -v caddy)"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Then run `agentsview` normally as your user with `-public-port 443`
|
|
121
|
+
or `-public-port 80`. This avoids running the session viewer as root,
|
|
122
|
+
which would otherwise change which home directory and agent session
|
|
123
|
+
data it can see. If you do not need a privileged port, the default
|
|
124
|
+
`8443` is the simpler option.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
agentsview -host 127.0.0.1 -port 8080 \
|
|
128
|
+
-public-url https://viewer.example.test \
|
|
129
|
+
-proxy caddy \
|
|
130
|
+
-proxy-bind-host 0.0.0.0 \
|
|
131
|
+
-public-port 8443 \
|
|
132
|
+
-tls-cert ~/.certs/viewer.crt \
|
|
133
|
+
-tls-key ~/.certs/viewer.key \
|
|
134
|
+
-allowed-subnet 10.0/16 \
|
|
135
|
+
-allowed-subnet 192.168.1.0/24
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
You can persist the same settings in `~/.agentsview/config.toml`:
|
|
139
|
+
|
|
140
|
+
```toml
|
|
141
|
+
public_url = "https://viewer.example.test"
|
|
142
|
+
|
|
143
|
+
[proxy]
|
|
144
|
+
mode = "caddy"
|
|
145
|
+
bind_host = "0.0.0.0"
|
|
146
|
+
public_port = 8443
|
|
147
|
+
tls_cert = "/home/user/.certs/viewer.crt"
|
|
148
|
+
tls_key = "/home/user/.certs/viewer.key"
|
|
149
|
+
allowed_subnets = ["10.0/16", "192.168.1.0/24"]
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
`public_origins` remains available as an advanced override when you
|
|
153
|
+
need to allow additional browser origins beyond the main `public_url`.
|
|
154
|
+
|
|
155
|
+
## Screenshots
|
|
156
|
+
|
|
157
|
+
| Dashboard | Session viewer |
|
|
158
|
+
|-----------|---------------|
|
|
159
|
+
|  |  |
|
|
160
|
+
|
|
161
|
+
| Search | Activity heatmap |
|
|
162
|
+
|--------|-----------------|
|
|
163
|
+
|  |  |
|
|
164
|
+
|
|
165
|
+
## Keyboard Shortcuts
|
|
166
|
+
|
|
167
|
+
| Key | Action |
|
|
168
|
+
|-----|--------|
|
|
169
|
+
| `Cmd+K` | Open search |
|
|
170
|
+
| `j` / `k` | Next / previous message |
|
|
171
|
+
| `]` / `[` | Next / previous session |
|
|
172
|
+
| `o` | Toggle sort order |
|
|
173
|
+
| `t` | Toggle thinking blocks |
|
|
174
|
+
| `e` | Export session as HTML |
|
|
175
|
+
| `p` | Publish to GitHub Gist |
|
|
176
|
+
| `r` | Sync sessions |
|
|
177
|
+
| `?` | Show all shortcuts |
|
|
178
|
+
|
|
179
|
+
## PostgreSQL Sync
|
|
180
|
+
|
|
181
|
+
agentsview can push session data from the local SQLite database to a
|
|
182
|
+
remote PostgreSQL instance, enabling shared team dashboards and
|
|
183
|
+
centralized search across multiple machines.
|
|
184
|
+
|
|
185
|
+
### Push Sync (SQLite to PG)
|
|
186
|
+
|
|
187
|
+
Configure `pg` in `~/.agentsview/config.toml`:
|
|
188
|
+
|
|
189
|
+
```toml
|
|
190
|
+
[pg]
|
|
191
|
+
url = "postgres://user:pass@host:5432/dbname?sslmode=require"
|
|
192
|
+
machine_name = "my-laptop"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Use `sslmode=require` (or `verify-full` for CA-verified connections)
|
|
196
|
+
for non-local PostgreSQL instances. Only use `sslmode=disable` for
|
|
197
|
+
trusted local/loopback connections.
|
|
198
|
+
|
|
199
|
+
The `machine_name` identifies which machine pushed each session
|
|
200
|
+
(must not be `"local"`, which is reserved).
|
|
201
|
+
|
|
202
|
+
CLI commands:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
agentsview pg push # push now
|
|
206
|
+
agentsview pg push --full # force full re-push (bypasses heuristic)
|
|
207
|
+
agentsview pg status # show sync status
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Push is on-demand — run `pg push` whenever you want to sync to
|
|
211
|
+
PostgreSQL. There is no automatic background push.
|
|
212
|
+
|
|
213
|
+
### PG Read-Only Mode
|
|
214
|
+
|
|
215
|
+
Serve the web UI directly from PostgreSQL with no local SQLite.
|
|
216
|
+
Configure `[pg].url` in config (as shown above), then:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
agentsview pg serve # default: 127.0.0.1:8080
|
|
220
|
+
agentsview pg serve -port 9090 # custom port
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
To have `pg serve` manage a Caddy TLS frontend directly:
|
|
224
|
+
|
|
225
|
+
The same managed-Caddy prerequisites and backend-loopback requirement
|
|
226
|
+
described earlier for normal `serve` mode also apply here.
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
agentsview pg serve \
|
|
230
|
+
-host 127.0.0.1 \
|
|
231
|
+
-port 18080 \
|
|
232
|
+
-public-url https://viewer.example.test \
|
|
233
|
+
-proxy caddy \
|
|
234
|
+
-proxy-bind-host 0.0.0.0 \
|
|
235
|
+
-public-port 8443 \
|
|
236
|
+
-tls-cert ~/.certs/viewer.crt \
|
|
237
|
+
-tls-key ~/.certs/viewer.key \
|
|
238
|
+
-allowed-subnet 10.0/16
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
This mode is useful for shared team viewers where multiple machines
|
|
242
|
+
push to a central PG database and one or more read-only instances
|
|
243
|
+
serve the UI. Uploads, file watching, and local sync are disabled.
|
|
244
|
+
For managed-Caddy mode, keep the backend `-host` on loopback and use
|
|
245
|
+
`-proxy-bind-host` / `-public-port` to expose the public listener. If
|
|
246
|
+
you run plain `pg serve` without `-proxy caddy`, then using a
|
|
247
|
+
non-loopback `-host` enables token-authenticated remote access and
|
|
248
|
+
prints the auth token on startup.
|
|
249
|
+
|
|
250
|
+
The normal SQLite-backed `serve` mode and PostgreSQL-backed `pg serve`
|
|
251
|
+
mode keep separate managed-Caddy state, so both can coexist on one
|
|
252
|
+
host.
|
|
253
|
+
|
|
254
|
+
### Known Limitations
|
|
255
|
+
|
|
256
|
+
- **Deleted sessions**: Sessions permanently pruned from SQLite
|
|
257
|
+
(via `agentsview prune`) are not propagated as deletions to PG.
|
|
258
|
+
Sessions soft-deleted with `deleted_at` are synced correctly.
|
|
259
|
+
- **Change detection**: Push uses aggregate length statistics
|
|
260
|
+
rather than content hashes. Use `-full` to force a complete
|
|
261
|
+
re-push if content was rewritten in-place.
|
|
262
|
+
|
|
263
|
+
## Documentation
|
|
264
|
+
|
|
265
|
+
Full documentation is available at
|
|
266
|
+
[agentsview.io](https://agentsview.io):
|
|
267
|
+
|
|
268
|
+
- [Quick Start](https://agentsview.io/quickstart/) --
|
|
269
|
+
installation and first run
|
|
270
|
+
- [Usage Guide](https://agentsview.io/usage/) --
|
|
271
|
+
dashboard, session browser, search, export
|
|
272
|
+
- [CLI Reference](https://agentsview.io/commands/) --
|
|
273
|
+
commands, flags, and environment variables
|
|
274
|
+
- [Configuration](https://agentsview.io/configuration/) --
|
|
275
|
+
data directory, config file, session discovery
|
|
276
|
+
- [Architecture](https://agentsview.io/architecture/) --
|
|
277
|
+
how the sync engine, parsers, and server work
|
|
278
|
+
|
|
279
|
+
## Development
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
make dev # run Go server in dev mode
|
|
283
|
+
make frontend-dev # run Vite dev server (use alongside make dev)
|
|
284
|
+
make desktop-dev # run Tauri desktop app in dev mode
|
|
285
|
+
make test # Go tests (CGO_ENABLED=1 -tags fts5)
|
|
286
|
+
make lint # golangci-lint
|
|
287
|
+
make e2e # Playwright E2E tests
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Desktop Development
|
|
291
|
+
|
|
292
|
+
The desktop app is a Tauri wrapper under `desktop/`. It launches
|
|
293
|
+
the `agentsview` Go binary as a local sidecar and loads
|
|
294
|
+
`http://127.0.0.1:<port>` in a native webview.
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
make desktop-dev # run desktop app in dev mode
|
|
298
|
+
make desktop-build # build desktop bundles (.app/.exe)
|
|
299
|
+
make desktop-macos-app # build macOS .app only
|
|
300
|
+
make desktop-windows-installer # build Windows installer (.exe)
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Desktop env escape hatch: `~/.agentsview/desktop.env` (for
|
|
304
|
+
PATH/API keys overrides).
|
|
305
|
+
|
|
306
|
+
### Project Structure
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
cmd/agentsview/ CLI entrypoint
|
|
310
|
+
internal/config/ Configuration loading
|
|
311
|
+
internal/db/ SQLite operations (sessions, search, analytics)
|
|
312
|
+
internal/postgres/ PostgreSQL support (push sync, read-only store, schema)
|
|
313
|
+
internal/parser/ Session parsers (all supported agents)
|
|
314
|
+
internal/server/ HTTP handlers, SSE, middleware
|
|
315
|
+
internal/sync/ Sync engine, file watcher, discovery
|
|
316
|
+
frontend/ Svelte 5 SPA (Vite, TypeScript)
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Supported Agents
|
|
320
|
+
|
|
321
|
+
| Agent | Session Directory | Env Override |
|
|
322
|
+
|-------|-------------------|--------------|
|
|
323
|
+
| Claude Code | `~/.claude/projects/` | `CLAUDE_PROJECTS_DIR` |
|
|
324
|
+
| Codex | `~/.codex/sessions/` | `CODEX_SESSIONS_DIR` |
|
|
325
|
+
| Copilot | `~/.copilot/` | `COPILOT_DIR` |
|
|
326
|
+
| Gemini | `~/.gemini/` | `GEMINI_DIR` |
|
|
327
|
+
| OpenCode | `~/.local/share/opencode/` | `OPENCODE_DIR` |
|
|
328
|
+
| Cursor | `~/.cursor/projects/` | `CURSOR_PROJECTS_DIR` |
|
|
329
|
+
| Amp | `~/.local/share/amp/threads/` | `AMP_DIR` |
|
|
330
|
+
| iFlow | `~/.iflow/projects/` | `IFLOW_DIR` |
|
|
331
|
+
| VSCode Copilot | `~/Library/Application Support/Code/User/` (macOS) | `VSCODE_COPILOT_DIR` |
|
|
332
|
+
| Pi | `~/.pi/agent/sessions/` | `PI_DIR` |
|
|
333
|
+
| OpenClaw | `~/.openclaw/agents/` | `OPENCLAW_DIR` |
|
|
334
|
+
| Kimi | `~/.kimi/sessions/` | `KIMI_DIR` |
|
|
335
|
+
|
|
336
|
+
## Acknowledgements
|
|
337
|
+
|
|
338
|
+
Inspired by
|
|
339
|
+
[claude-history-tool](https://github.com/andyfischer/ai-coding-tools/tree/main/claude-history-tool)
|
|
340
|
+
by Andy Fischer and
|
|
341
|
+
[claude-code-transcripts](https://github.com/simonw/claude-code-transcripts)
|
|
342
|
+
by Simon Willison.
|
|
343
|
+
|
|
344
|
+
## License
|
|
345
|
+
|
|
346
|
+
MIT
|
|
347
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
agentsview/__init__.py,sha256=BjbaBtM3mOH2liyrj2Rt19UPJH2uJRAl8JMBhJQBVM0,238
|
|
2
|
+
agentsview/__main__.py,sha256=TmPx60CQc_hxduT618L0HffKfbfGKtSNUW9gHhxTBsY,36
|
|
3
|
+
agentsview/bin/agentsview.exe,sha256=GhunZ5WJm48F_-hrBr4cej8zZr4eqcKL6mNicSKT20c,18810880
|
|
4
|
+
agentsview-0.16.1.dist-info/METADATA,sha256=kpUhUGCGycUDd2YuD7KGSES05jKoItrcJ3Zh72pYtuY,11385
|
|
5
|
+
agentsview-0.16.1.dist-info/WHEEL,sha256=X5kTc0SppwMtt_l8mLffJ55SxTW2E2JAYfXV_1dyXVg,101
|
|
6
|
+
agentsview-0.16.1.dist-info/entry_points.txt,sha256=4-mB9InmBn_2B4RAcxFu_3wqpNfXgOuFq1jvVn0Mg3U,47
|
|
7
|
+
agentsview-0.16.1.dist-info/RECORD,,
|