Skip to main content

Search, browse, and watch your cross-agent coding chat history (Claude, Codex, opencode, Antigravity, Kimi, Cline) in one place.

Project description

agrep

Every AI coding agent you run writes its full history to disk — Claude Code, Codex, opencode, Antigravity, Kimi CLI, Cline. agrep reads those stores directly and makes your entire cross-agent history greppable from the shell, with a local web explorer (tilt) on top for browsing, organizing, and live-watching everything.

No hooks, no agent-side install, no telemetry. agrep never modifies the agents or their data — it only reads. Everything stays on your machine.

uvx agrep "race condition"      # or: pipx run agrep "race condition"

That fetches a small prebuilt package (the rust ingest binary + the app — no clone, no cargo), indexes your agent stores on first run (one-time, ~30s for years of history), and greps. After that, searches are instant — a derived full-text index answers cold CLI calls in well under a second.

agrep deadlock --agent codex    # filter to one agent
agrep -E 'TODO|FIXME'           # regex
agrep -l auth                   # list matching chats, not every line (like grep -l)
agrep "memory leak" --json      # one JSON object per hit, for piping
agrep "flaky test" --semantic   # meaning search (needs a running server)
agrep around 00da9752 144       # the conversation around a hit, tool calls inline
agrep resume 00da9752           # reopen that session in its own agent, cd'd there
agrep ui                        # tilt: the web explorer

Bare agrep prints where your index stands and the commands that matter. Keyword search exits like grep (1 when nothing matched), so it composes in scripts and pipes. When a server is running and your terminal supports it, each result header is a clickable link that opens the chat in the app (AGREP_NO_HYPERLINKS=1 to disable).

From a hit to the story: around

Search tells you which session touched a thing. around tells you what happened — the local story of a hit (the error, the attempts, the fix) for a few KB instead of a whole transcript:

agrep around 00da9752 144           # ±4 turns around turn 144 of that session
agrep around 00da9752:144 -n 10     # wider window; colon form pastes from --json
agrep around 00da9752 144 --full    # nothing truncated
agrep around 00da9752 144 --json    # one object per message/event

Tool calls render inline (name, input, ok/failed) but never their output — the token bomb — unless you opt in with --tool-output N. Long messages are capped, and every truncation marker carries the exact command that prints the rest, so the follow-up never needs guessing.

Your agents can use it too

An agent that solved a gnarly bug last week re-derives it from zero today — session context dies, transcripts don't. agrep makes that history queryable at the moment it's needed: --json everywhere, grep exit codes, stateless addressing (session:turn), and around defaults tuned for token budgets.

One line in your agent's instructions does it:

Before deep-diving an unfamiliar error, agrep "<the error string>" --json; pull context on a hot hit with agrep around <session> <turn>.

The first search builds the index by itself, so this works on a box where nothing was ever set up (--no-auto opts out for strict scripts).

tilt: the explorer

agrep ui opens the human surface — a single local web app over the same index:

  • One searchable history across every supported agent. Keyword search is exact and instant; semantic search and topic clustering light up with the optional model tier.
  • A live board of every running session — across all agents at once — with real state (thinking, which tool is running, queued prompts, errors, durations) read straight from the stores. No hooks: it sees sessions you started in any terminal, and the subagents they spawn. Images an agent reads or sends render inline. (Live tailing and native resume cover claude/codex/opencode/antigravity today; kimi and cline are search/browse-only so far.)
  • Per-chat detail: the full transcript with the tool/subagent event tree, and a one-click "resume this session in its own CLI".
  • Native resume: jump back into any past session in its own agent, cd'd to the directory it ran in.

While the server runs it re-indexes automatically after new agent activity settles; you never run a command to see new chats.

The three tiers

The core works on a bare install and gets better as you add pieces. Nothing past the first tier is required.

Tier Needs Unlocks
Core Python 3.10+ (Rust only if building from source) Grep, around, resume, browse, live view, event trees. Titles come from each chat's first message.
Smart one click in the app's setup panel (torch et al.) Semantic search, topic/concept clustering, mood arcs.
Named Ollama + a small local model Clean generated titles, summaries, concept names, and arc verdicts instead of first-message fallbacks.

The model tiers run only at index time — a model loads, does its pass, releases its memory. Nothing stays resident, and the server itself needs no GPU. agrep doctor reports which tiers are live and the exact command to unlock each missing one (--fix does the safe setup itself).

Where it reads

agrep discovers sessions under your home directory. Read-only, always:

Agent Store
Claude Code ~/.claude/projects/<slug>/*.jsonl
Codex ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
opencode ~/.local/share/opencode/*.db (SQLite)
Antigravity ~/.gemini/antigravity-cli/brain/<uuid>/
Kimi CLI ~/.kimi/sessions/<workdir-hash>/<uuid>/
Cline each editor's globalStorage/saoudrizwan.claude-dev/tasks/, plus ~/.cline/data/

Whichever of these exist get indexed; missing ones are skipped. Works on Windows, macOS, and Linux.

Commands

agrep <pattern>          # grep your history (first run builds the index)
agrep around <id> <turn> # the conversation around a hit
agrep resume <id>        # reopen a past session in its own agent, cd'd there
agrep ui                 # tilt: index, serve, open the app
agrep doctor             # what's installed + what each tier needs (--fix does setup)
agrep index              # rebuild the base index only (fast, no models)
agrep reindex            # full pipeline: embeddings + affect + topics + arcs
agrep serve --port N     # just the server (auto-indexes in the background)

To hack on it, clone and use the same commands as python cli.py <cmd> (needs Rust for the ingest binary — https://rustup.rs):

git clone https://github.com/dannyisbad/agrep && cd agrep
python cli.py ui

A dev checkout also has thin wrappers: agrep.cmd (Windows) forwards the full CLI, and ./tilt / tilt.cmd is shorthand for agrep ui — type tilt, get the explorer.

Privacy

Everything is local. agrep makes no network calls except to a local Ollama if you opt into that tier; the one exception is the web explorer, which loads its fonts from Google Fonts (none of your data goes with it — and the app works fine offline on system-font fallbacks). Your index lives in a per-user data dir (in a dev checkout: the gitignored data/) and is never committed. The server binds to 127.0.0.1 only.

How it's built

A Rust ingest (crates/agrep-core + crates/agrep-cli) reads the stores and writes a compact index; a sqlite FTS5 index derived from it makes cold CLI searches instant; a read-only Python server (py/) serves the single-file web app (web/app.html). The Rust ingest is the only required dependency for the core experience; the Python ML scripts are the optional enhancement layer. See CONTRIBUTING.md for the layout and how to add an adapter for another agent.

License

MIT — see LICENSE.

Project details


Download files

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

Source Distribution

agrep-0.1.0.tar.gz (216.1 kB view details)

Uploaded Source

Built Distributions

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

agrep-0.1.0-py3-none-win_amd64.whl (1.6 MB view details)

Uploaded Python 3Windows x86-64

agrep-0.1.0-py3-none-manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

agrep-0.1.0-py3-none-macosx_11_0_arm64.whl (1.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

agrep-0.1.0-py3-none-macosx_10_12_x86_64.whl (1.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file agrep-0.1.0.tar.gz.

File metadata

  • Download URL: agrep-0.1.0.tar.gz
  • Upload date:
  • Size: 216.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agrep-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b5cbc531ca41cdc094bd098c4f82e335e3341a137196e6a4a2a1bed022d8f5b4
MD5 135194d69bb1ca8ec9d32971fefe1208
BLAKE2b-256 7c56b8a063182df5d898e6e8d55647991b81f07225c729a40ce560cb26ebd6b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for agrep-0.1.0.tar.gz:

Publisher: release.yml on dannyisbad/agrep

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

File details

Details for the file agrep-0.1.0-py3-none-win_amd64.whl.

File metadata

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

File hashes

Hashes for agrep-0.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 82e8e04b3a722486ae65acff24f2f682f0109a0fbb2d492fbeee20859adeb012
MD5 4ceb8071a5deb8ad9ef7cd1e29610a29
BLAKE2b-256 25a3e9e7469511edc55fb4bfbae7dd006daa4452704721980ed979a4cefe1762

See more details on using hashes here.

Provenance

The following attestation bundles were made for agrep-0.1.0-py3-none-win_amd64.whl:

Publisher: release.yml on dannyisbad/agrep

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

File details

Details for the file agrep-0.1.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for agrep-0.1.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6491ddd62b3e119ac4c81ac4f0dd65cb5948f0cfe8f55303c9c2827e03a56836
MD5 8e8dab1158f8c48ea43745235b20e1d3
BLAKE2b-256 480ab89d40cb4da9f0439cb157031f00e4d0e4cdef9337d8e2f1435c88ea35f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for agrep-0.1.0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on dannyisbad/agrep

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

File details

Details for the file agrep-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: agrep-0.1.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agrep-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b74ebb03c83de51ebdaf2bbbf2768f9752e3465d25e5910e610d22199f2ac7fc
MD5 dfd559e36617aaf5c0d7b78a2c372b1e
BLAKE2b-256 b0bf4eb1961916374db1d9679633b12d1f6b28ce5542be84e669248af5b12122

See more details on using hashes here.

Provenance

The following attestation bundles were made for agrep-0.1.0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on dannyisbad/agrep

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

File details

Details for the file agrep-0.1.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for agrep-0.1.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f81822fd36a3d8d204d218d072d315ed454c6bf40add438b76fc1f80aa2f64b5
MD5 043dab625b0284315b3d2c1c3a17b7a9
BLAKE2b-256 d8d3b0981cbba3c1f6c07f8446beb69a5cdff3fa93f3fba809fba8de37a6334e

See more details on using hashes here.

Provenance

The following attestation bundles were made for agrep-0.1.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on dannyisbad/agrep

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