agentsview 0.33.0__py3-none-win_arm64.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,512 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: agentsview
|
|
3
|
+
Version: 0.33.0
|
|
4
|
+
Summary: Local web viewer for AI agent sessions
|
|
5
|
+
Home-page: https://github.com/kenn-io/agentsview
|
|
6
|
+
Author: Kenn Software LLC
|
|
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
|
+
Browse, search, and track costs across all your AI coding agents. One binary, no
|
|
16
|
+
accounts, everything local.
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<img src="https://agentsview.io/screenshots/dashboard.png" alt="Analytics dashboard" width="720">
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# macOS / Linux
|
|
26
|
+
curl -fsSL https://agentsview.io/install.sh | bash
|
|
27
|
+
|
|
28
|
+
# Windows
|
|
29
|
+
powershell -ExecutionPolicy ByPass -c "irm https://agentsview.io/install.ps1 | iex"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Or download the **desktop app** (macOS / Windows) from
|
|
33
|
+
[GitHub Releases](https://github.com/kenn-io/agentsview/releases) or via
|
|
34
|
+
homebrew: `brew install --cask agentsview`
|
|
35
|
+
|
|
36
|
+
Or run the published Docker image:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
docker run --rm -p 127.0.0.1:8080:8080 \
|
|
40
|
+
-v agentsview-data:/data \
|
|
41
|
+
-v "$HOME/.claude/projects:/agents/claude:ro" \
|
|
42
|
+
-v "$HOME/.forge:/agents/forge:ro" \
|
|
43
|
+
-e CLAUDE_PROJECTS_DIR=/agents/claude \
|
|
44
|
+
-e FORGE_DIR=/agents/forge \
|
|
45
|
+
ghcr.io/kenn-io/agentsview:latest
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Quick Start
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
agentsview serve # start server, open web UI
|
|
52
|
+
agentsview usage daily # print daily cost summary
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
On first run, agentsview discovers sessions from every supported agent on your
|
|
56
|
+
machine, syncs them into a local SQLite database, and opens a web UI at
|
|
57
|
+
`http://127.0.0.1:8080`.
|
|
58
|
+
|
|
59
|
+
## Remote / forwarded access
|
|
60
|
+
|
|
61
|
+
agentsview binds to loopback and validates the request `Host` header to guard
|
|
62
|
+
against DNS-rebinding attacks. When you reach it through SSH port-forwarding, a
|
|
63
|
+
reverse proxy, or a remote dev environment (exe.dev, Codespaces, Coder, WSL2),
|
|
64
|
+
the browser sends a `Host` that the server does not recognize, so API requests
|
|
65
|
+
such as `/api/v1/settings` are rejected with `403 Forbidden`.
|
|
66
|
+
|
|
67
|
+
To fix this, restart the server with `--public-url` set to the exact origin you
|
|
68
|
+
open in the browser:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# Browser opens http://127.0.0.1:18080 via `ssh -L 18080:127.0.0.1:8080 host`
|
|
72
|
+
agentsview serve --public-url http://127.0.0.1:18080
|
|
73
|
+
|
|
74
|
+
# Browser opens a forwarded hostname
|
|
75
|
+
agentsview serve --public-url https://your-workspace.exe.dev
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Use `--public-origin` (repeatable or comma-separated) to trust additional
|
|
79
|
+
browser origins. If you expose the UI beyond loopback, also enable
|
|
80
|
+
`--require-auth`.
|
|
81
|
+
|
|
82
|
+
## Docker
|
|
83
|
+
|
|
84
|
+
The container image defaults to local `agentsview serve`. Set `PG_SERVE=1` to
|
|
85
|
+
switch the startup command to `agentsview pg serve` instead.
|
|
86
|
+
|
|
87
|
+
`docker-compose.prod.yaml` is included as a production example:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
docker compose -f docker-compose.prod.yaml up -d
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The included compose file persists the agentsview data directory in a named
|
|
94
|
+
volume and mounts Claude, Codex, Forge, and OpenCode session roots read-only.
|
|
95
|
+
The container runs as root, so prefer a named volume for `/data` over a host
|
|
96
|
+
bind mount; if you do bind-mount, pre-create the directory with the desired
|
|
97
|
+
ownership to avoid root-owned files in your home directory.
|
|
98
|
+
|
|
99
|
+
The examples publish the UI on loopback only (`127.0.0.1`). If you need to
|
|
100
|
+
expose it beyond localhost, enable `--require-auth` and publish the port
|
|
101
|
+
intentionally.
|
|
102
|
+
|
|
103
|
+
Important: a containerized agentsview instance can only discover agent sessions
|
|
104
|
+
from directories you explicitly mount into the container. If you do not mount an
|
|
105
|
+
agent's session directory and point the matching env var at it, that agent will
|
|
106
|
+
not appear in the UI.
|
|
107
|
+
|
|
108
|
+
Example PostgreSQL-backed startup:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
docker run --rm -p 127.0.0.1:8080:8080 \
|
|
112
|
+
-e PG_SERVE=1 \
|
|
113
|
+
-e AGENTSVIEW_PG_URL='postgres://user:password@postgres.example.com:5432/agentsview?sslmode=require' \
|
|
114
|
+
ghcr.io/kenn-io/agentsview:latest
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Example DuckDB mirror startup:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Populate /data/sessions.duckdb from the mounted SQLite archive.
|
|
121
|
+
docker run --rm \
|
|
122
|
+
-v agentsview-data:/data \
|
|
123
|
+
-v "$HOME/.claude/projects:/agents/claude:ro" \
|
|
124
|
+
-e CLAUDE_PROJECTS_DIR=/agents/claude \
|
|
125
|
+
ghcr.io/kenn-io/agentsview:latest duckdb push --full
|
|
126
|
+
|
|
127
|
+
# Serve the populated mirror read-only.
|
|
128
|
+
docker run --rm -p 127.0.0.1:8080:8080 \
|
|
129
|
+
-v agentsview-data:/data \
|
|
130
|
+
ghcr.io/kenn-io/agentsview:latest duckdb serve
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Example Quack startup:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Expose the local DuckDB mirror over Quack from the host/container.
|
|
137
|
+
QUACK_TOKEN="$(openssl rand -base64 32)"
|
|
138
|
+
docker run --rm -p 127.0.0.1:9494:9494 \
|
|
139
|
+
-v agentsview-data:/data \
|
|
140
|
+
ghcr.io/kenn-io/agentsview:latest \
|
|
141
|
+
duckdb quack serve \
|
|
142
|
+
--bind quack:0.0.0.0:9494 \
|
|
143
|
+
--token "$QUACK_TOKEN" \
|
|
144
|
+
--allow-insecure
|
|
145
|
+
|
|
146
|
+
# Serve the web UI from a remote Quack endpoint.
|
|
147
|
+
docker run --rm -p 127.0.0.1:8080:8080 \
|
|
148
|
+
-e AGENTSVIEW_DUCKDB_URL='quack:https://duckdb.example.com' \
|
|
149
|
+
-e AGENTSVIEW_DUCKDB_TOKEN="$QUACK_TOKEN" \
|
|
150
|
+
ghcr.io/kenn-io/agentsview:latest duckdb serve
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Keep Quack on loopback or behind TLS. Plain HTTP Quack on a non-loopback bind
|
|
154
|
+
requires `--allow-insecure` and should only be used behind a trusted tunnel or
|
|
155
|
+
reverse proxy.
|
|
156
|
+
|
|
157
|
+
## Token Usage and Cost Tracking
|
|
158
|
+
|
|
159
|
+
`agentsview usage` is a fast, local replacement for ccusage and similar tools.
|
|
160
|
+
It tracks token consumption and compute costs across **all** your coding agents
|
|
161
|
+
-- not just Claude Code. Because session data is already indexed in SQLite,
|
|
162
|
+
queries are over 100x faster than tools that re-parse raw session files on every
|
|
163
|
+
run.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# Daily cost summary (default: last 30 days)
|
|
167
|
+
agentsview usage daily
|
|
168
|
+
|
|
169
|
+
# Per-model breakdown
|
|
170
|
+
agentsview usage daily --breakdown
|
|
171
|
+
|
|
172
|
+
# Filter by agent and date range
|
|
173
|
+
agentsview usage daily --agent claude --since 2026-04-01
|
|
174
|
+
|
|
175
|
+
# One-line summary for shell prompts / status bars
|
|
176
|
+
agentsview usage daily --all --json
|
|
177
|
+
agentsview usage statusline
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Features:
|
|
181
|
+
|
|
182
|
+
- Automatic pricing via LiteLLM rates (with offline fallback)
|
|
183
|
+
- Prompt-caching-aware cost calculation (cache creation / read tokens)
|
|
184
|
+
- Per-model breakdown with `--breakdown`
|
|
185
|
+
- Date filtering (`--since`, `--until`, `--all`), agent filtering (`--agent`)
|
|
186
|
+
- JSON output (`--json`) for scripting
|
|
187
|
+
- Timezone-aware date bucketing (`--timezone`)
|
|
188
|
+
- Works standalone -- no server required, just run the command
|
|
189
|
+
|
|
190
|
+
## Per-Session Details
|
|
191
|
+
|
|
192
|
+
`agentsview session usage <id>` prints per-session token statistics plus a cost
|
|
193
|
+
estimate for a single session. The output reports the session's total output
|
|
194
|
+
tokens and peak context tokens, plus a cost estimate in USD (`cost_usd`) when
|
|
195
|
+
pricing is available for the session's model(s) (`has_cost`). Cost is computed
|
|
196
|
+
from input/output and cache tokens internally, but only the output-token and
|
|
197
|
+
peak-context totals are reported alongside the cost.
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Print token usage and cost for a specific session
|
|
201
|
+
agentsview session usage <id>
|
|
202
|
+
|
|
203
|
+
# JSON output for scripting
|
|
204
|
+
agentsview session usage <id> --format json
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
The same per-session usage data is available from the REST API:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
GET /api/v1/sessions/{id}/usage
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
The response includes the `session_id`, `agent`, `project`,
|
|
214
|
+
`total_output_tokens`, `peak_context_tokens`, `has_token_data`, `cost_usd`,
|
|
215
|
+
`has_cost`, `models`, and `unpriced_models` fields from the CLI JSON schema.
|
|
216
|
+
HTTP responses also include `server_running: true`. Existing sessions return
|
|
217
|
+
`200` even when token or cost data is absent; missing sessions return `404`.
|
|
218
|
+
|
|
219
|
+
The deprecated alias `agentsview token-use <id>` remains available for
|
|
220
|
+
compatibility and now also reports cost estimates.
|
|
221
|
+
|
|
222
|
+
## Session Stats
|
|
223
|
+
|
|
224
|
+
`agentsview stats` emits window-scoped analytics over recorded sessions: totals,
|
|
225
|
+
archetypes (automation vs. quick/standard/deep/marathon), distributions for
|
|
226
|
+
session duration, user-message count, peak context, and tools-per-turn, plus
|
|
227
|
+
cache economics, tool/model/agent mix, and a temporal hourly breakdown. The
|
|
228
|
+
`--format json` output follows a versioned v1 schema (`schema_version: 1`)
|
|
229
|
+
suitable for downstream consumers.
|
|
230
|
+
|
|
231
|
+
By default, `stats` only reads the local SQLite archive. Git-derived outcome
|
|
232
|
+
metrics are opt-in because they can be slow or brittle on large/missing repos:
|
|
233
|
+
use `--include-git-outcomes` for commits/LOC/files changed, and
|
|
234
|
+
`--include-github-outcomes` for GitHub PR counts via `gh` (this also enables git
|
|
235
|
+
outcomes).
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Human-readable summary over the last 28 days
|
|
239
|
+
agentsview stats
|
|
240
|
+
|
|
241
|
+
# Machine-readable JSON over a fixed date range
|
|
242
|
+
agentsview stats --format json --since 2026-04-01 --until 2026-04-15
|
|
243
|
+
|
|
244
|
+
# Restrict to one agent and inspect the schema
|
|
245
|
+
agentsview stats --format json --agent claude | jq '.schema_version'
|
|
246
|
+
|
|
247
|
+
# Include expensive local git outcome metrics explicitly
|
|
248
|
+
agentsview stats --include-git-outcomes
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## Session Browser
|
|
252
|
+
|
|
253
|
+
| Dashboard | Session viewer |
|
|
254
|
+
| ------------------------------------------------------------- | ----------------------------------------------------------------------- |
|
|
255
|
+
|  |  |
|
|
256
|
+
|
|
257
|
+
| Search | Activity heatmap |
|
|
258
|
+
| --------------------------------------------------------------- | --------------------------------------------------------- |
|
|
259
|
+
|  |  |
|
|
260
|
+
|
|
261
|
+
- **Full-text search** across all message content (FTS5)
|
|
262
|
+
- **Token usage and cost dashboard** -- per-session and per-model cost
|
|
263
|
+
breakdowns, daily spend charts, all in the web UI
|
|
264
|
+
- **Analytics dashboard** -- activity heatmaps, tool usage, velocity metrics,
|
|
265
|
+
project breakdowns
|
|
266
|
+
- **Live updates** via SSE as active sessions receive new messages
|
|
267
|
+
- **Keyboard-first** navigation (`j`/`k`/`[`/`]`, `Cmd+K` search, `?` for all
|
|
268
|
+
shortcuts)
|
|
269
|
+
- **Export** sessions as HTML or publish to GitHub Gist
|
|
270
|
+
|
|
271
|
+
## Supported Agents
|
|
272
|
+
|
|
273
|
+
agentsview auto-discovers sessions from all of these:
|
|
274
|
+
|
|
275
|
+
| Agent | Session Directory |
|
|
276
|
+
| ------------------ | ------------------------------------------------------ |
|
|
277
|
+
| Claude Code | `~/.claude/projects/` |
|
|
278
|
+
| Codex | `~/.codex/sessions/` |
|
|
279
|
+
| Copilot CLI | `~/.copilot/` |
|
|
280
|
+
| Gemini CLI | `~/.gemini/` |
|
|
281
|
+
| OpenCode | `~/.local/share/opencode/` |
|
|
282
|
+
| OpenHands CLI | `~/.openhands/conversations/` |
|
|
283
|
+
| Cursor | `~/.cursor/projects/` |
|
|
284
|
+
| Amp | `~/.local/share/amp/threads/` |
|
|
285
|
+
| iFlow | `~/.iflow/projects/` |
|
|
286
|
+
| Zencoder | `~/.zencoder/sessions/` |
|
|
287
|
+
| Zed | `~/Library/Application Support/Zed/` (macOS) |
|
|
288
|
+
| VSCode Copilot | `~/Library/Application Support/Code/User/` (macOS) |
|
|
289
|
+
| Pi | `~/.pi/agent/sessions/` |
|
|
290
|
+
| Qwen Code | `~/.qwen/projects/` |
|
|
291
|
+
| OpenClaw | `~/.openclaw/agents/` |
|
|
292
|
+
| QClaw | `~/.qclaw/agents/` |
|
|
293
|
+
| Kimi | `~/.kimi/sessions/` |
|
|
294
|
+
| Kiro CLI | `~/.kiro/sessions/cli/`, `~/.local/share/kiro-cli/` |
|
|
295
|
+
| Kiro IDE | `~/Library/Application Support/Kiro/` (macOS) |
|
|
296
|
+
| Cortex Code | `~/.snowflake/cortex/conversations/` |
|
|
297
|
+
| Hermes Agent | `~/.hermes/sessions/` |
|
|
298
|
+
| WorkBuddy | `~/.workbuddy/projects/` |
|
|
299
|
+
| Forge | `~/.forge/` |
|
|
300
|
+
| Piebald | `~/.local/share/piebald/` |
|
|
301
|
+
| Warp | `~/.warp/` (platform-dependent) |
|
|
302
|
+
| Positron Assistant | `~/Library/Application Support/Positron/User/` (macOS) |
|
|
303
|
+
| Antigravity | `~/.gemini/antigravity/` |
|
|
304
|
+
| Antigravity CLI | `~/.gemini/antigravity-cli/` (see note below) |
|
|
305
|
+
|
|
306
|
+
Each directory can be overridden with an environment variable. See the
|
|
307
|
+
[configuration docs](https://agentsview.io/configuration/) for details.
|
|
308
|
+
|
|
309
|
+
### Antigravity CLI: high-resolution transcripts
|
|
310
|
+
|
|
311
|
+
Antigravity CLI sessions now appear in two on-disk formats. Newer releases store
|
|
312
|
+
conversation trajectories as SQLite `.db` files, which agentsview indexes
|
|
313
|
+
directly. Older releases stored assistant turns and tool calls in
|
|
314
|
+
AES-GCM-encrypted `.pb` files; for those sessions, agentsview falls back to
|
|
315
|
+
**summary mode** using your prompts from `history.jsonl` plus any plain-text
|
|
316
|
+
artifacts under `brain/` (plans, walkthroughs, checkpoints).
|
|
317
|
+
|
|
318
|
+
To unlock full transcripts for older `.pb` sessions, run
|
|
319
|
+
[agy-reader](https://github.com/mjacobs/agy-reader) alongside agentsview.
|
|
320
|
+
agy-reader talks to the local Antigravity daemon, decrypts each conversation,
|
|
321
|
+
and writes a `<uuid>.trajectory.json` sidecar next to the encrypted `.pb` file.
|
|
322
|
+
agentsview's file watcher detects the sidecar automatically and parses it in
|
|
323
|
+
place of summary mode -- no agentsview restart needed.
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
go install github.com/mjacobs/agy-reader@latest
|
|
327
|
+
|
|
328
|
+
# Generate sidecars for existing sessions...
|
|
329
|
+
agy-reader --sync
|
|
330
|
+
|
|
331
|
+
# ...or keep them fresh as you work.
|
|
332
|
+
agy-reader --watch
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
agy-reader auto-discovers the Antigravity daemon URL by parsing
|
|
336
|
+
`~/.gemini/antigravity-cli/cli.log`. If discovery fails (e.g. the log has
|
|
337
|
+
rotated), the command prints platform-specific instructions for locating the
|
|
338
|
+
port and exporting `ANTIGRAVITY_DAEMON_URL` manually.
|
|
339
|
+
|
|
340
|
+
Sidecars stay on your machine. agentsview makes no outbound request to produce
|
|
341
|
+
or read them, and treats sidecars as untrusted structured input -- see
|
|
342
|
+
[SECURITY.md](SECURITY.md) for the trust model.
|
|
343
|
+
|
|
344
|
+
## PostgreSQL Sync
|
|
345
|
+
|
|
346
|
+
Push session data to a shared PostgreSQL instance for team dashboards:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
agentsview pg push # push local data to PG
|
|
350
|
+
agentsview pg serve # serve web UI from PG (read-only)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Automatic push (background service)
|
|
354
|
+
|
|
355
|
+
To keep a shared PostgreSQL database current without running `pg push` by hand,
|
|
356
|
+
run the auto-push daemon. It watches your session directories and pushes shortly
|
|
357
|
+
after new sessions are recorded, with a periodic floor as a safety net:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
agentsview pg push --watch # foreground, Ctrl-C to stop
|
|
361
|
+
agentsview pg push --watch --debounce 1m # custom coalesce window
|
|
362
|
+
agentsview pg push --watch --interval 5m # custom floor interval
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
The daemon reads the same `[pg]` config as `pg push`, so the PostgreSQL DSN must
|
|
366
|
+
be set in your config file (or an environment variable it expands). Protect the
|
|
367
|
+
config file, since it holds credentials:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
chmod 600 ~/.agentsview/config.toml
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
To run it unattended as an OS service (launchd on macOS, `systemd --user` on
|
|
374
|
+
Linux):
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
agentsview pg service install # generate the unit, enable + start it
|
|
378
|
+
agentsview pg service status # show manager status
|
|
379
|
+
agentsview pg service logs -f # follow the service log
|
|
380
|
+
agentsview pg service uninstall # stop and remove
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
**Linux headless machines:** systemd `--user` services stop at logout and do not
|
|
384
|
+
start at boot unless lingering is enabled for your user. `install` detects this
|
|
385
|
+
and prints the command; you can also run it yourself:
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
loginctl enable-linger "$USER"
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
See [PostgreSQL docs](https://agentsview.io/postgresql/) for setup and
|
|
392
|
+
configuration.
|
|
393
|
+
|
|
394
|
+
## DuckDB Mirror and Quack
|
|
395
|
+
|
|
396
|
+
DuckDB support is a mirror backend, not a replacement for the local SQLite
|
|
397
|
+
archive. `agentsview serve` still performs primary ingestion into SQLite. Use
|
|
398
|
+
DuckDB when you want a portable analytics file, read-only local serving from a
|
|
399
|
+
mirror, or remote read access through DuckDB's Quack protocol.
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
agentsview duckdb push # mirror SQLite into DuckDB
|
|
403
|
+
agentsview duckdb status # show mirror sync status
|
|
404
|
+
agentsview duckdb serve # serve web UI from DuckDB (read-only)
|
|
405
|
+
agentsview duckdb quack serve # expose the local DuckDB file over Quack
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
`agentsview duckdb serve` reads `[duckdb].path` or `AGENTSVIEW_DUCKDB_PATH`. To
|
|
409
|
+
serve from a remote Quack endpoint, set `AGENTSVIEW_DUCKDB_URL` and
|
|
410
|
+
`AGENTSVIEW_DUCKDB_TOKEN` instead. Quack is still a new DuckDB protocol, so
|
|
411
|
+
agentsview keeps conservative defaults: local Quack serving binds to loopback,
|
|
412
|
+
requires a token, and rejects non-loopback plain HTTP unless `--allow-insecure`
|
|
413
|
+
is explicit. For remote use, prefer a TLS URL or put Quack behind an
|
|
414
|
+
authenticated tunnel/proxy.
|
|
415
|
+
|
|
416
|
+
Backend modes:
|
|
417
|
+
|
|
418
|
+
- SQLite: primary local archive, file sync, FTS5 search, and writable UI.
|
|
419
|
+
- PostgreSQL: optional shared team backend; push from SQLite, serve read-only.
|
|
420
|
+
- DuckDB: optional mirror file or Quack endpoint; push from SQLite, serve
|
|
421
|
+
read-only.
|
|
422
|
+
|
|
423
|
+
Troubleshooting:
|
|
424
|
+
|
|
425
|
+
- If `duckdb push` fails to open the mirror, confirm the binary was built with
|
|
426
|
+
the DuckDB Go driver for your platform and that `AGENTSVIEW_DUCKDB_PATH`
|
|
427
|
+
points to a writable file location.
|
|
428
|
+
- If Quack commands fail with extension errors, update the agentsview binary so
|
|
429
|
+
the embedded DuckDB runtime includes the Quack extension.
|
|
430
|
+
- If a remote attach fails, check the token, the `quack:` URL, TLS/proxy
|
|
431
|
+
termination, and whether the server was intentionally started with
|
|
432
|
+
`--allow-insecure` for plain non-loopback binds.
|
|
433
|
+
- DuckDB search currently uses substring/regex fallback behavior. SQLite FTS5
|
|
434
|
+
remains the indexed search path for primary local serving.
|
|
435
|
+
|
|
436
|
+
## Privacy
|
|
437
|
+
|
|
438
|
+
agentsview sends a limited anonymous `daemon_active` telemetry ping to PostHog
|
|
439
|
+
when the server starts and every 24 hours while it runs, using a stable random
|
|
440
|
+
install ID as the event `DistinctId`. The event includes
|
|
441
|
+
`application=agentsview`, app version, commit, OS, and CPU architecture, with
|
|
442
|
+
`$process_person_profile=false` and `$geoip_disable=true`. It does not include
|
|
443
|
+
session, project, prompt, file path, account, or machine identity. Disable
|
|
444
|
+
telemetry with `AGENTSVIEW_TELEMETRY_ENABLED=0` or `TELEMETRY_ENABLED=0`.
|
|
445
|
+
Telemetry is also hard-disabled in Go test binaries, regardless of environment.
|
|
446
|
+
|
|
447
|
+
All session data stays on your machine. The server binds to `127.0.0.1` by
|
|
448
|
+
default. The update check is optional and can be disabled with
|
|
449
|
+
`--no-update-check`.
|
|
450
|
+
|
|
451
|
+
## Documentation
|
|
452
|
+
|
|
453
|
+
Full docs at **[agentsview.io](https://agentsview.io)**:
|
|
454
|
+
[Quick Start](https://agentsview.io/quickstart/) --
|
|
455
|
+
[Usage Guide](https://agentsview.io/usage/) --
|
|
456
|
+
[CLI Reference](https://agentsview.io/commands/) --
|
|
457
|
+
[Configuration](https://agentsview.io/configuration/) --
|
|
458
|
+
[Architecture](https://agentsview.io/architecture/)
|
|
459
|
+
|
|
460
|
+
______________________________________________________________________
|
|
461
|
+
|
|
462
|
+
## Development
|
|
463
|
+
|
|
464
|
+
Requires Go 1.26+ (CGO), Node.js 22+.
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
make dev # Go server (dev mode)
|
|
468
|
+
make frontend-dev # Vite dev server (run alongside make dev)
|
|
469
|
+
make build # build binary with embedded frontend
|
|
470
|
+
make install # install to ~/.local/bin
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
```bash
|
|
474
|
+
make test # Go tests (CGO_ENABLED=1 -tags "fts5,kit_posthog_disabled")
|
|
475
|
+
make bench-backends # compare SQLite, DuckDB, and PostgreSQL store reads
|
|
476
|
+
make lint # golangci-lint + NilAway
|
|
477
|
+
make nilaway # NilAway through custom golangci-lint
|
|
478
|
+
make e2e # Playwright E2E tests
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
`make bench-backends` requires Docker. It starts a PostgreSQL container with
|
|
482
|
+
testcontainers, mirrors the same SQLite fixture into DuckDB and PostgreSQL, and
|
|
483
|
+
benchmarks the shared `db.Store` read queries for relative comparison. The
|
|
484
|
+
default fixture is 1,000 sessions and 64,000 messages; use
|
|
485
|
+
`BENCH_BACKENDS_SESSIONS` and `BENCH_BACKENDS_MESSAGES_PER_SESSION` to scale it.
|
|
486
|
+
When the Docker CLI uses a non-default socket, export `DOCKER_HOST` for that
|
|
487
|
+
socket before running the benchmark.
|
|
488
|
+
|
|
489
|
+
Pre-commit hooks via [prek](https://github.com/j178/prek): run `make lint-tools`
|
|
490
|
+
and `make install-hooks` after cloning (requires `prek` and `uv`).
|
|
491
|
+
|
|
492
|
+
### Project Layout
|
|
493
|
+
|
|
494
|
+
```
|
|
495
|
+
cmd/agentsview/ CLI entrypoint
|
|
496
|
+
internal/ Go packages (config, db, parser, server, sync, postgres)
|
|
497
|
+
frontend/ Svelte 5 SPA (Vite, TypeScript)
|
|
498
|
+
desktop/ Tauri desktop wrapper
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
## Acknowledgements
|
|
502
|
+
|
|
503
|
+
Inspired by
|
|
504
|
+
[claude-history-tool](https://github.com/andyfischer/ai-coding-tools/tree/main/claude-history-tool)
|
|
505
|
+
by Andy Fischer and
|
|
506
|
+
[claude-code-transcripts](https://github.com/simonw/claude-code-transcripts) by
|
|
507
|
+
Simon Willison.
|
|
508
|
+
|
|
509
|
+
## License
|
|
510
|
+
|
|
511
|
+
MIT
|
|
512
|
+
|
|
@@ -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=w550Xz9v0-8sKpyMSEziCC9A0NnqHYHcw40TjIX7Igg,27148288
|
|
4
|
+
agentsview-0.33.0.dist-info/METADATA,sha256=C63xU8ZJYJuyYcOTnwVfFTwCbqETiP80UUywPUNzyoQ,20675
|
|
5
|
+
agentsview-0.33.0.dist-info/WHEEL,sha256=5YJ5xtW4Ie1I6n82yBVxATGBwb8xfCzl0s8Lhw_xanI,101
|
|
6
|
+
agentsview-0.33.0.dist-info/entry_points.txt,sha256=4-mB9InmBn_2B4RAcxFu_3wqpNfXgOuFq1jvVn0Mg3U,47
|
|
7
|
+
agentsview-0.33.0.dist-info/RECORD,,
|