AI Agent Activity Monitor - A tool for observing, querying, and analyzing activity from AI coding assistants.
aiobscura ingests activity logs from AI coding assistants (Claude Code, Codex, Aider, Cursor) and provides:
- Unified storage - Normalized SQLite database with lossless raw data preservation
- Session tracking - Monitor active and historical coding sessions
- Analytics - Token usage, tool call patterns, activity streaks
- Terminal UI - Real-time monitoring and historical exploration
Watch your AI coding sessions in real-time. See active sessions across multiple agents, with a live message stream showing prompts, responses, and tool calls as they happen.
Browse all your projects with aggregate statistics. See session counts, total tokens used, activity streaks, and when each project was last active.
Explore individual conversation threads across all projects. Filter by assistant type (Claude Code, Codex), see message counts, and identify main threads vs. spawned agents.
Drill into a specific project to see activity patterns by hour and day, top tools used, and most frequently edited files.
View Claude Code plan files associated with each project. Plans capture the assistant's implementation strategies and can be opened for detailed review.
See which files the AI assistant has edited most frequently, helping identify hotspots in your codebase.
Read through full conversation history with syntax-highlighted messages. See human prompts, assistant responses, and tool calls with their arguments.
Read plan documents with markdown rendering directly in the terminal.
Get a "Spotify Wrapped" style summary of your AI coding activity - yearly or monthly. See total sessions, tokens, tools used, and more with a festive animated display.
brew install kulesh/tap/aiobscuraRequires Rust (latest stable recommended).
git clone https://github.com/kulesh/aiobscura.git
cd aiobscura
cargo build --releaseThe binary will be at target/release/aiobscura.
# Option 1: run sync once, then launch the TUI
aiobscura-sync
aiobscura
# Option 2: run only the TUI (it can ingest itself when sync is not active)
aiobscura
# Option 3: run sync continuously (watch mode) without the TUI
aiobscura-sync --watchThe sync command will:
- Scan for installed AI agents (Claude Code, Codex, etc.)
- Create a SQLite database at
~/.local/share/aiobscura/data.db - Ingest available session logs (incremental - only new data)
Process coordination rules:
aiobscura-syncexits ifaiobscurais already running.- If
aiobscura-syncis already running,aiobscurastarts in read-only mode and only reads from the database.
| Agent | Location | Status |
|---|---|---|
| Claude Code | ~/.claude/ |
Supported |
| Codex | ~/.codex/ |
Supported |
| Aider | .aider.* |
Planned |
| Cursor | ~/.cursor/ |
Planned |
aiobscura/
├── aiobscura-core/ # Core library (parsing, storage, analytics)
├── aiobscura/ # Terminal UI and CLI binaries
├── aiobscura-wrapped/ # Wrapped summary CLI
├── docs/ # Architecture and requirements
└── tests/ # Integration tests
# Build
cargo build
# Run tests
cargo nextest run # or cargo test
# Lint
cargo clippy
# Format
cargo fmtSee CONTRIBUTING.md for detailed guidelines.
This project is under active development. See the docs/ folder for architecture and requirements documentation.
Use aiobscura as an edge sensor that forwards to a central CatSyphon collector:
Quick registration command on each edge machine:
aiobscura-collector register \
--server-url "https://catsyphon.yourdomain.com" \
--workspace-id "<WORKSPACE_UUID>"Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See CONTRIBUTING.md for how to get started.









