Skip to main content

A lightweight, local-first web app to browse, inspect, and export logs from CLI-based AI coding agents

Project description

cli code log

A lightweight, local-first web app to browse, inspect, and export logs from CLI-based AI coding agents — Claude Code, OpenAI Codex, and Gemini CLI.

FeaturesSupported ToolsInstallationUsageScreenshots

Python 3.7+ Flask License MIT PRs Welcome

Gemini CLI Screenshot


Features

  • Multi-source support — View logs from Claude Code, OpenAI Codex, and Gemini CLI
  • Three-panel layout — Projects → Sessions → Conversation
  • Auto-sync — Backs up data from source directories every hour
  • Export — Download any session as a .txt file
  • Theme support — Light (soft blue) and Dark modes
  • Rich display — User/assistant messages, thinking blocks, tool usage, token stats
  • Search — Quickly find projects and sessions

Supported Tools

Tool Source Directory Status
Claude Code ~/.claude/projects/ ✅ Supported
OpenAI Codex ~/.codex/sessions/ ✅ Supported
Gemini CLI ~/.gemini/tmp/ ✅ Supported

Claude Code

  • Sessions organized by project directory
  • Displays summaries, messages, thinking blocks, and tool usage
  • Shows model metadata and token usage

OpenAI Codex

  • Sessions organized by date (YYYY/MM/DD/)
  • Groups sessions by working directory (cwd) as projects
  • Displays messages, function calls, and reasoning blocks
  • Filters out system prompts for cleaner inspection

Gemini CLI

  • Sessions stored as JSON files in {hash}/chats/session-*.json
  • Groups sessions by project hash
  • Displays messages, thoughts (thinking), and tool calls
  • Shows token usage (input, output, cached)

Installation

Via pip (Recommended)

pip install clicodelog

From source

git clone https://github.com/monk1337/clicodelog.git
cd clicodelog
pip install -e .

Usage

If installed via pip:

clicodelog

Or run directly from source:

./run.sh

Or manually:

pip install -r requirements.txt
python app.py

Open http://localhost:5050 in your browser.

CLI Options

clicodelog --help
clicodelog --port 8080        # Run on custom port
clicodelog --host 0.0.0.0     # Bind to all interfaces
clicodelog --no-sync          # Skip initial data sync
clicodelog --debug            # Run in debug mode

How It Works

  • Startup sync — Copies logs from source directories into local ./data/
  • Background sync — Automatically refreshes every hour
  • Manual sync — Trigger a sync for the active source via UI
  • Source switching — Switch between Claude Code, Codex, and Gemini CLI

Data Storage

data/
├── claude-code/          # Claude Code backup
│   ├── -Users-project1/
│   │   ├── session1.jsonl
│   │   └── session2.jsonl
│   └── -Users-project2/
├── codex/                # OpenAI Codex backup
│   └── 2026/
│       └── 01/
│           ├── 16/
│           │   └── rollout-xxx.jsonl
│           └── 17/
└── gemini/               # Gemini CLI backup
    ├── {project-hash-1}/
    │   └── chats/
    │       ├── session-2026-01-17T12-57-xxx.json
    │       └── session-2026-01-17T13-04-xxx.json
    └── {project-hash-2}/

Controls

Control Action
Source dropdown Switch between supported tools
📥 Export Download current session as .txt
🔄 Sync Manually refresh logs from source
☀️ / 🌙 Theme Toggle light/dark mode

Screenshots

Light Mode Dark Mode
Light Mode Dark Mode

Project Structure

clicodelog/
├── app.py              # Flask backend (multi-source support)
├── run.sh              # Run script
├── requirements.txt    # Dependencies
├── data/               # Synced logs (auto-created)
│   ├── claude-code/
│   ├── codex/
│   └── gemini/
└── templates/
    └── index.html      # Frontend

API Endpoints

Endpoint Method Description
/api/sources GET List available sources
/api/sources/<id> POST Set active source
/api/projects?source= GET List projects
/api/projects/<id>/sessions?source= GET List sessions
/api/projects/<id>/sessions/<id>?source= GET Fetch session
/api/sync?source= POST Trigger sync
/api/status?source= GET Sync status

Requirements

  • Python 3.7+
  • Flask 2.0+
  • flask-cors

Adding New Sources

To add support for another CLI-based AI tool, update app.py:

SOURCES = {
    "claude-code": {
        "name": "Claude Code",
        "source_dir": Path.home() / ".claude" / "projects",
        "data_subdir": "claude-code"
    },
    "codex": {
        "name": "OpenAI Codex",
        "source_dir": Path.home() / ".codex" / "sessions",
        "data_subdir": "codex"
    },
    "gemini": {
        "name": "Gemini CLI",
        "source_dir": Path.home() / ".gemini" / "tmp",
        "data_subdir": "gemini"
    },
    # Add new tool here
}

Then implement the corresponding parser for its log format.


License

MIT


Built for inspecting what AI coding agents actually did.

@misc{clicodelog2026,
  title = {clicodelog: Browse, inspect CLI-based AI coding agents},
  author = {Pal, Ankit},
  year = {2026},
  howpublished = {\url{https://github.com/monk1337/clicodelog}},
  note = {A lightweight, local-first web app to browse, inspect, and export logs from CLI-based AI coding agents — Claude Code, OpenAI Codex, and Gemini CLI.}
}

💁 Contributing

Welcome any contributions to open source project, including new features, improvements to infrastructure, and more comprehensive documentation.

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

clicodelog-0.1.0.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

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

clicodelog-0.1.0-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: clicodelog-0.1.0.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for clicodelog-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3b958f835b3f41131a339fbecdbd918899fea7d8f9fcaa75152fffd3c9f8b674
MD5 6ee45058604ae1c45aa6102b9c8ddbf7
BLAKE2b-256 bc7074f222622469a72c2a54e8df9ef69322e35a9d5728558d79c799e62d2231

See more details on using hashes here.

File details

Details for the file clicodelog-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: clicodelog-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for clicodelog-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 550483c4342f233c539257ebfbcbe6cfefcf32beadcabfd16f3df86f60310478
MD5 a1cbc1cd14e7a0cfdaea113bc09b5396
BLAKE2b-256 a5783e888a6f2562018fafc699f97ea60f273c7568982ce437375e3a82705082

See more details on using hashes here.

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