Skip to main content

AI Control Plane — a local web UI for browsing AI agent session logs and tool configurations (GitHub Copilot, Claude Code, VS Code Chat).

Project description

AI Control Plane logo

AI Control Plane

A local web UI for browsing GitHub Copilot, Claude Code, and VS Code Chat agent session logs and tool configurations — all in one place.

Python 3.13+ License: MIT

AI coding agents produce rich session logs and configuration files. This tool turns those raw files into a readable, interactive dashboard so you can review sessions (prompts, reasoning, tool calls, sub-agents, errors) and inspect tool configurations (MCP servers, plugins, agents, skills, slash commands, hooks, feature flags) — all in one place.

Dashboard Session Timeline
Dashboard homepage Session timeline view
Tool Configuration Agents
Tool configuration page Agents page

Features

Dashboard & Navigation

  • Metrics dashboard — aggregated counts for MCP servers, plugins, agents, slash commands, hooks, feature flags, and sessions across all tools.
  • Tool cards — at-a-glance status for Claude Code, GitHub Copilot, and VS Code Chat with key stats per tool.
  • Shared navbar — sticky navigation with brand SVG icons, breadcrumbs, and dark/light theme toggle.

Session Browser

  • Multi-source support — browse sessions from GitHub Copilot, Claude Code, and VS Code Chat side by side, with color-coded source badges.
  • Search & filters — full-text search across session names, branches, directories, and models; filter by source on the sessions page, by event type in timelines.
  • Interactive timeline — color-coded conversation view with:
    • User messages (with file attachments)
    • Assistant responses (rendered Markdown, expandable reasoning/thinking)
    • Tool calls & results (expandable arguments / output)
    • Sub-agent launches & completions (expandable prompt / result)
    • System notifications, hooks, file snapshots, model changes
    • Errors and warnings
  • Statistics sidebar — message counts, token usage (input/output/cache), tool breakdown with visual bars, MCP tool usage, rewind snapshots.

Tool Configuration Inspector

  • Claude Code — MCP servers, plugins (official + external), agents, skills (standalone + plugin-bundled), slash commands, hooks, feature flags (including GrowthBook server-side flags), settings, policy limits, global memory files, remote settings, usage stats, enterprise managed settings (macOS, Linux/WSL, Windows via MDM/ADMX), MCP auth cache, plugin marketplaces & install counts.
  • GitHub Copilot — MCP servers, configuration, recent commands, skills.
  • VS Code Chat — MCP servers, agents, skills, AI settings, language models; VS Code Insiders sessions and config auto-discovered alongside Stable.
  • Vertical tool navigation — switch between tools from the sidebar.

Agents

  • Aggregated agents page — view all agents across Claude Code and VS Code in one place.
  • Clickable source filters — filter agents by tool (Claude / VS Code) with pill-style toggle buttons.

Skills

  • Skills browser (/skills) — deduplicated list of all installed skills across Claude Code, GitHub Copilot, and VS Code Chat, with source badges showing which tools each skill is installed in.
  • Skill detail page (/skills/<name>) — full rendered SKILL.md content with metadata sidebar (author, version, license, tools, homepage).

General

  • Dark / Light mode — toggle with one click; persisted in localStorage.
  • JSON API — programmatic access at /api/sessions, /api/session/<id>/events, /api/tools, and /api/tools/<tool>.
  • Security — UUID & backup-hash validation, path-traversal protection, Content-Security-Policy headers, localhost-only by default.

Quick start

Install from source

git clone https://github.com/l-teles/ai-control-plane.git
cd ai-control-plane
pip install .

Install from PyPI

pip install ai-ctrl-plane

Run

# Auto-detect default directories for all sources
ai-ctrl-plane

# Specify directories explicitly
ai-ctrl-plane --copilot-dir ~/.copilot/session-state/ --claude-dir ~/.claude/projects/ --vscode-dir "~/Library/Application Support/Code/User/"

# Or use the module directly
python -m ai_ctrl_plane

Then open http://127.0.0.1:5000 in your browser.

Default directories

Source macOS / Linux default Windows default Override flag Env variable
GitHub Copilot ~/.copilot/session-state/ %LOCALAPPDATA%\github-copilot\session-state --copilot-dir COPILOT_LOG_DIR
Claude Code ~/.claude/projects/ %LOCALAPPDATA%\claude\projects --claude-dir CLAUDE_LOG_DIR
VS Code Chat ~/Library/Application Support/Code/User/ (macOS) / ~/.config/Code/User/ (Linux) %APPDATA%\Code\User --vscode-dir VSCODE_LOG_DIR

Options

usage: ai-ctrl-plane [-h] [--copilot-dir DIR] [--claude-dir DIR]
                             [--vscode-dir DIR] [-p PORT] [--host HOST]
                          [--debug] [-V] [log_dir]

positional arguments:
  log_dir               Directory containing Copilot session log folders
                        (default: ~/.copilot/session-state/)

options:
  --copilot-dir DIR     Directory containing Copilot session log folders
                        (overrides positional arg)
  --claude-dir DIR      Directory containing Claude Code session logs
                        (default: ~/.claude/projects/)
  --vscode-dir DIR      Directory containing VS Code Chat session logs
                        (default: platform-dependent)
  -p, --port PORT       Port to listen on (default: 5000)
  --host HOST           Host to bind to (default: 127.0.0.1)
  --debug               Run in Flask debug mode (local development only)
  -V, --version         Show version and exit

Expected directory layouts

GitHub Copilot (~/.copilot/session-state/)

session-state/
├── 4e71aaa0-f131-41fd-aeee-8bcaa5efb315/
│   ├── workspace.yaml          # Session metadata
│   ├── events.jsonl            # Conversation event stream
│   ├── checkpoints/
│   │   └── index.md
│   └── rewind-snapshots/
│       ├── index.json          # Snapshot manifest
│       └── backups/            # File content snapshots
│           ├── ff627b50b0554488-1773312027139
│           └── ...
├── 8b3c9d7d-60f7-4e4c-a442-eb2ee7ee68e2/
│   └── ...
└── ...

Claude Code (~/.claude/projects/)

projects/
├── -Users-you-project-alpha/
│   ├── a1b2c3d4-e5f6-7890-abcd-ef1234567890.jsonl
│   ├── d4c3b2a1-f6e5-0987-dcba-0987654321fe.jsonl
│   └── ...
├── -Users-you-project-beta/
│   └── ...
└── ...

Each .jsonl file is a single session containing user/assistant/system events with tool calls, thinking blocks, and usage metadata.

VS Code Chat (~/Library/Application Support/Code/User/)

User/
├── workspaceStorage/
│   ├── abc123hash/
│   │   ├── workspace.json            # Maps to project folder
│   │   └── chatSessions/
│   │       ├── 88ca1adb-bf72-4478-9982-6886cb99785e.json
│   │       └── ...
│   └── ...
└── globalStorage/
    └── emptyWindowChatSessions/
        ├── 3a9ae123-2cbe-4c1d-b5af-3d4cd1f0ad2e.jsonl
        └── ...

Each .json file is a single chat session with user messages, assistant responses, tool call rounds, and timing metadata.

Development

# Install with dev dependencies
pip install -e ".[dev]"

# Lint
ruff check src/ tests/

# Test
pytest

Security

  • Localhost only — binds to 127.0.0.1 by default; never expose to the public internet without authentication.
  • Input validation — session IDs must be valid UUIDs; backup hashes are validated against a strict pattern.
  • Path-traversal protection — resolved file paths are verified via Path.relative_to() to stay within the configured log directory.
  • HTML sanitization — Markdown output is sanitized to strip dangerous tags (<script>, <iframe>, etc.) and event handler attributes.
  • Security headersX-Content-Type-Options, X-Frame-Options, Referrer-Policy, and Content-Security-Policy are set on every response.
  • No debug in production — debug mode is off by default and must be explicitly enabled via --debug.
  • Dependency monitoring — Dependabot is configured for automated security updates.

License

MIT

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

ai_ctrl_plane-0.6.1.tar.gz (110.0 kB view details)

Uploaded Source

Built Distribution

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

ai_ctrl_plane-0.6.1-py3-none-any.whl (99.0 kB view details)

Uploaded Python 3

File details

Details for the file ai_ctrl_plane-0.6.1.tar.gz.

File metadata

  • Download URL: ai_ctrl_plane-0.6.1.tar.gz
  • Upload date:
  • Size: 110.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ai_ctrl_plane-0.6.1.tar.gz
Algorithm Hash digest
SHA256 4645e58dbe851e4b2bbc7771e2d1fda53e56fcc0c8403a92fae82bf092cc0d2b
MD5 495a10b176e69cea27d4be604cf7eb6b
BLAKE2b-256 47636a8f9a97fea5fc3a8348d10ba999df4d85f46af21059727432798ba83668

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_ctrl_plane-0.6.1.tar.gz:

Publisher: publish.yml on l-teles/ai-control-plane

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

File details

Details for the file ai_ctrl_plane-0.6.1-py3-none-any.whl.

File metadata

  • Download URL: ai_ctrl_plane-0.6.1-py3-none-any.whl
  • Upload date:
  • Size: 99.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ai_ctrl_plane-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9b644d80a1b09c91d1fdf7e2e44fb4356c7fc3f4f423f36d883419e222f3f932
MD5 98448ff2cc224259c09f8a48d42a5bf7
BLAKE2b-256 8a15f3b841146930a79e2b9624e197b47d3f03bd761bc7ec0cdc3d35b854ca48

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_ctrl_plane-0.6.1-py3-none-any.whl:

Publisher: publish.yml on l-teles/ai-control-plane

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