Releases: AlexGladkov/quickai
Release list
quickai v0.4.0 — live-capture proxy (experimental)
Live-capture proxy (experimental)
Analytics for harnesses that don't persist per-turn usage on disk — capture it live off the wire.
quickai proxy # transparent reverse-proxy on :8787
# point the agent's base_url at it, e.g. Codex ~/.codex/config.toml:
# [model_providers.quickai] base_url = "http://localhost:8787/v1"
quickai index --source proxy # ingest captured usage
quickai report
How it works
The proxy forwards every request to the real provider untouched — your API key passes straight through and is never stored. It tees the response, extracts usage, and appends one native JSONL line per turn (~/.quickai/proxy/). The source=proxy adapter ingests it over the same pipeline as the file adapters.
Reliability invariant: usage extraction is best-effort after your bytes are forwarded — a parse error can never break the agent.
- OpenAI Chat + Responses APIs, streaming (SSE) and non-streaming
- nets cached tokens out of input, captures reasoning tokens
- new
source=proxyinindex/export
⚠️ Experimental — read this
- Codex e2e not yet verified end-to-end (verified against a simulated OpenAI upstream). Real-Codex confirmation pending.
- OpenAI prices are list-ballpark (flagged in code) — token counts are exact, cost is approximate until confirmed.
- The proxy sits in the agent's critical path; autostart (launchd) is a follow-up. Run it yourself for now.
- Principle: proxy is a fallback only for harnesses without their own logs — Claude/OpenCode keep using the zero-config file adapters.
Also
File adapters (Claude, OpenCode from 0.3.0) unchanged.
quickai v0.3.0 — pluggable data sources + OpenCode
Pluggable data sources
quickai now indexes more than Claude Code. A real source/adapter boundary lets other SWE-agents plug in as thin adapters, and this release ships OpenCode as the first one.
quickai index --source claude # default, unchanged
quickai index --source opencode # new
What's new
- OpenCode adapter — reads
~/.local/share/opencode/storage(per-message JSON + parts + session), maps tokens/model/cost/tool-calls/prompt text into the same aggregates. Uses OpenCode's own cost (its models aren't in the Anthropic pricing table). - DataSource boundary — each adapter owns its traversal, incremental cursor and parsing, emitting a normalized event stream; the indexer just applies + aggregates. Adding a source no longer touches the indexer, schema or reports.
sourcecolumn across sessions/tasks/turns/agent_runs/tool_calls;exportgains aby_sourcebreakdown.- In-place migration — existing DBs gain the new columns automatically (default
claude), no reindex, no data loss. - Re-reading immutable source files can't duplicate turns (stable
ext_id+ unique index).
Notes
- Claude Code indexing behaviour is unchanged; source-scoped rebuild keeps sources isolated.
- Codex isn't supported yet — its local store only keeps a per-thread token aggregate, not the per-turn tokens/cache/cost quickai needs. Tracked in the pluggable-sources epic.
Thanks @keksmd for the export groundwork in 0.2.0.
quickai v0.2.0
export command — machine-readable JSON aggregate dump for external ingestion (quickai export [--project X] [--pretty] [--format json]). Thanks @keksmd for the initial implementation (#3).
- summary + by_project/model/agent_type + tools + waste + latency in one stable JSON with
schema_version --formatenum (json today; extensible)- pure serialization of existing query aggregates — no new SQL, backwards compatible
quickai v0.1.0
Initial release — Claude Code profiler (tokens, cost, time). CLI + HTML report + MCP.