Operator front door for agent session logs.
aicx catalogs live Claude, Codex, Cursor, Grok, Gemini, Junie, Kimi, GitHub
Copilot CLI, oh-my-pi / pi, Antigravity CLI, Vibecrafted, and
operator-owned sources; renders readable whole-session extracts; and publishes
a lexical-first search index. Sources remain content truth. The compact catalog
owns session identity and topical project attribution.
There is no per-frame card mill and no aicx store command.
Runtime model
- Catalog —
~/.aicx/catalog/sessions.jsonlmaps a session to project, agent, date, cwd, canonical source path, title, machine, and live source fingerprint. - Extract —
aicx extract <agent> --session <id> --conversationrenders a readable user/assistant transcript. Caching under~/.aicx/extracts/is optional. - Index —
aicx indexincrementally parses changed sources, removes tool/internal/system noise, and atomically publishes the global_allTantivy generation. - Search —
aicx searchqueries CURRENT with lexical ranking plus a recency prior.--deepexplicitly adds dense mmap re-ranking.
aicx index # the one rebuild command: census + incremental parse + publish
aicx index status # lexical_status + dense_status planes
aicx index --semantic # opt-in dense on owner workstation
aicx catalog status # power user: identity staleness without a write (see --help-full)
aicx search 'arrows vc-frame'
aicx search --deep '…' # needs --semantic on this home
aicx search -p vetcoders/vibecrafted 'routing strzałek taby'
Multi-machine session sync, dense owner host, and HTTP serve: see docs/MULTI_MACHINE.md.
Project selection is metadata filtering over _all, not a requirement to build
parallel project indexes.
Why this shape
- One catalog row replaces thousands of duplicated frame cards.
- Source fingerprints make indexing incremental for both new and changed sessions.
- Human-readable extracts stay whole-session and optional.
- Default search does not load an embedder or stream multi-gigabyte NDJSON.
- Missing indexes have a typed, bounded fallback; corrupt or stale indexes fail honestly.
Source coverage
First-class roots include:
~/.claude/projects~/.codex/sessions~/.cursor/projects/*/agent-transcripts/<uuid>/<uuid>.jsonl~/.grok/sessions/*/chat_history.jsonl~/.gemini/tmp/*/chats/session-*.json~/.kimi-code/sessions/**/wire.jsonl~/.copilot/session-state/<session-id>/events.jsonl(optionalworkspace.yaml)~/.omp/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonland the same layout under~/.pi/agent/sessions~/.gemini/antigravity-cli/conversations/<cascade-uuid>.dband the same schema under~/.gemini/antigravity/conversations- Junie sources
- Vibecrafted
control_plane/runtime_runs/*/transcript.log - explicit operator markdown and Codescribe imports
Source opens go through a canonical allowlist resolver. Traversal, non-files, and symlink escapes are rejected.
GitHub Copilot CLI uses the canonical provider name copilot:
aicx extract copilot --session <session-id> --conversation
aicx extract all --provider copilot
aicx index
aicx search 'past decision' --agent copilot
aicx intents --agent copilot --emit json
See Copilot sessions for event coverage, source identity, direct-file extraction, and MCP usage.
oh-my-pi and upstream pi use the canonical provider name omp (pi and
oh-my-pi are aliases):
aicx extract omp --session <session-id> --conversation
aicx extract all --provider omp
aicx search 'past decision' --agent omp
aicx search 'past decision' --agent pi
aicx intents --agent omp --emit json
See oh-my-pi sessions for the active branch, human speech versus harness injection, and both session stores.
Antigravity CLI uses the canonical provider name agy (antigravity and
antigravity-cli are aliases). Legacy .pb exports and gemini-antigravity
stay on Gemini:
aicx sessions list --agent agy
aicx extract agy --session <cascade-id> --conversation
aicx extract all --provider agy
aicx search 'past decision' --agent agy
aicx search 'past decision' --agent antigravity
aicx intents --agent agy --emit json
See Antigravity CLI sessions for the SQLite trajectory schema, human speech versus worker contracts, and both conversation stores.
Intents and verification
The intent surface remains available over cataloged/indexed evidence:
aicx intents --kind decision --unresolved
aicx claims --session <id>
aicx results --session <id> --repo .
aicx clarify --session <id> --max 5
Indexes and agent claims are derived evidence, not automatic runtime truth. See ORACLE_CORPUS.md.
Other surfaces
sessions,list,sources— discover and protect raw sources.read,tail,dashboard,reports— inspect derived artifacts.serve— MCP over stdio or HTTP.wizard— daily-driver UI; it infers the exact current git project and its Refresh screen runs bounded catalog refresh then incremental index.doctor,health,index status— bounded diagnostics.legacy_archive— explicit read/recovery ownership for residual old card trees. It is not an ingestion path.
Use aicx --help and aicx <command> --help for the authoritative grammar.
The maintained overview is COMMANDS.md.
Installation
GitHub Release bundles are the supported user-facing path:
curl -fsSLO https://raw.githubusercontent.com/Loctree/aicx/v0.12.0/install.sh
AICX_INSTALL_MODE=release AICX_RELEASE_TAG=v0.14.0 bash install.sh
The installer selects the published bundle for the current platform, verifies
its adjacent SHA-256 sidecar, and installs both aicx and aicx-mcp.
For contributors working from a checkout:
cargo install --path . --locked --force --bin aicx --bin aicx-mcp
# Native GGUF embedder support:
cargo install --path . --locked --force --features native-embedder \
--bin aicx --bin aicx-mcp
See install-paths.md and RELEASES.md.
Development
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
Repository work starts with Loctree structural mapping. Security fixes close the path, ownership, or taint boundary directly; production silencers are not accepted.
Documentation
- Architecture
- Commands
- AICX home layout
- Context corpus
- Source protection
- GitHub Copilot CLI sessions
- oh-my-pi and pi sessions
- Antigravity CLI sessions
- Releases
Built so that months later the operator can still find the session, open the source, read the conversation, and prove which evidence was current.