Dashboard for monitoring claude code sessions.
$ npx -y skills add JayantDevkar/claude-code-karma --agent claude-code
FAQ
claude-code-karma is a Claude Code plugin with 1 hand-picked skill for development work, indexed on Flowy. Install it with the command on its page. It includes link-ticket-to-session. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Repo: JayantDevkar/claude-code-karma
If you use Claude Code, you already have a goldmine of data sitting in ~/.claude/ β every session, every tool call, every token. But it's all buried in JSONL files you'll never read.
Warning: Claude Code only keeps session data for about 30 days. Older JSONL files in
~/.claude/projects/are automatically cleaned up. Since Karma reads directly from those files, deleted sessions will disappear from the dashboard too.
Claude Code Karma reads that local data and gives you a proper dashboard. No cloud. No accounts. No telemetry. Just your data, on your machine.
It works with both Claude Code CLI and Claude Desktop (Claude Code mode) sessions β any session that writes to ~/.claude/ shows up automatically.
Browse all your Claude Code sessions in one place. Search by title, prompt, or slug. Filter by project. See live sessions at the top with real-time status badges β and a >_ button that raises the terminal window a live session is running in.
Dive into any session to see exactly what happened β every prompt, tool call, thinking block, and response laid out chronologically. The overview tab shows key stats like message count, duration, model used, and which tools were called.
Each session page has dedicated tabs that break down different aspects of what happened during the session.
Tasks β See all tasks Claude created and completed during the session, displayed in a flow view with status tracking.
Files β Every file operation in a sortable table β reads, writes, edits β with timestamps, actors, and the tools that made each change.
Subagents β Agents spawned during the session, grouped by type. Expand each to see message counts, tool calls, and what they were asked to do.
Skills β Skills invoked via /skill commands during the session, with their source plugin and invocation count.
Shells β Long-running background shells spawned during the session, with live status, the command each one ran, and runtime.
Analytics β Per-session cost breakdown, token usage, cache hit rates, tool distribution with a donut chart, and a ranked list of every tool used.
See all your Claude Code workspaces organized by git repository. Each project card shows session count and when it was last active. Expand git repos to see individual project directories inside them.
Track your token usage, costs, velocity trends, cache hit rates, and coding rhythm across all projects. See which models you use most and how your usage patterns change over time.
See every tool Claude Code uses β built-in ones like Read, Edit, and Bash, plus any MCP integrations you've added (the MCP page in the nav). Grouped by server with call counts and session coverage. Switch to the Usage Analytics tab for activity trends and top tools over time.
Click into any tool for detailed stats β total calls, session count, main vs subagent split, usage trend over time, and a full session history.
Browse all your agents β built-in, custom, and plugin-provided. See total runs, token consumption, and filter by category to understand how your agent ecosystem is being used. The Usage Analytics view shows activity trends and your most-used agents.
Drill into any agent for run counts, token usage, average duration, usage trends, project breakdown, and a session history showing every time that agent was used.
Visualize all your Claude Code hooks organized by lifecycle phase β session start/end, tool use, agent lifecycle, and permissions. See which hooks can block execution and how many registrations each event has.
View all installed Claude Code plugins with their agents, skills, and commands. Filter between official and community plugins. See version info and when each was last updated.
Click into any plugin to see everything it provides β agents, skills, commands, MCP tools, and hooks β along with usage analytics showing activity trends and top-used components.
Track which skills are invoked across sessions, grouped by plugin or shown individually. Click into any skill for usage stats, context split (main vs subagent), and a full session history showing every time that skill was used.
Attach your Claude Code sessions to the tickets they were about. Karma stays read-only β it stores the link and caches the title/status, but never writes back to your ticket provider.
Three ways to link:
/link-ticket-to-session ABC-123 (or ask the agent in natural language) in any Claude Code session β uses your Linear / Atlassian / GitHub MCP server to fetch the titleSessionStart hook that watches for keys like feat/LINEAR-123-foo and links silently in the backgroundThen browse:
/tickets index showing every ticket touched, filterable by provider and projectclaude-karma/frontend/ also shows on the main claude-karma projectTickets Index β All linked tickets in a filterable table. Switch between All, Issues, and PRs on GitHub.
Filter by Provider β GitHub shows sub-pill filtering ([All N] [Issues N] [PRs N]) to toggle between categories.
Ticket Detail β View a ticket with all linked sessions. Cross-project rollup shows "N sessions Β· M projects" with tabs per project.
Project Tickets Tab β Every project page has a Tickets tab that aggregates across all git identity checkouts, so the same ticket appears even if linked from different branch directories.
Ctrl+K / Cmd+K# Clone the repository
git clone https://github.com/JayantDevkar/claude-code-karma.git
cd claude-code-karma
# Start API (Terminal 1)
cd api
pip install -e ".[dev]" && pip install -r requirements.txt
uvicorn main:app --reload --port 8020
# Start Frontend (Terminal 2)
cd frontend
npm install && npm run dev
Open http://localhost:5180 to view the dashboard.
This only gets you the historical dashboard. Karma's core feature β live session tracking as sessions actually run β needs one more step, Tier 2 in SETUP.md. Install through Tier 2 by default; the rest of SETUP.md's tiers are optional polish on top.
Two terminals every time gets old. Install a desktop icon that starts both servers for you and opens the dashboard:
python3 scripts/install_karma_app.py # macOS: /Applications/Karma.app
# Windows: a Desktop shortcut
python3 scripts/install_karma_app.py --dock # macOS: also pin it to the Dock
python3 scripts/install_karma_app.py --uninstall
Click the icon and Karma starts whichever servers aren't already running, then opens the dashboard. The first launch after a reboot has to compile the frontend (a minute or two), so it posts a "Starting Karmaβ¦" desktop notification straight away β the click never looks like it did nothing β and opens the dashboard once the servers answer.
Nothing is hardcoded: the installer works out your repo location from its own path and finds a Python interpreter on the machine, so a clone anywhere works.
Optional: start at login. Toggle it in Settings β Desktop App, or:
python3 scripts/install_karma_app.py --autostart # on
python3 scripts/install_karma_app.py --no-autostart # off
This adds a launchd agent (macOS) or a Startup-folder entry (Windows) so the servers are already up when you log in β the dashboard is simply always there, with no icon to click first. It costs roughly 150β350 MB of memory and almost no CPU while idle.
It's also what makes a browser-installed Karma work on its own: a PWA is only a window and cannot start servers, so with autostart you never need the launcher icon at all.
macOS notifies you that a background item was added and lists it under System Settings β General β Login Items; Windows shows it in Task Manager β Startup. You can disable it there at any time. Note that the dashboard's toggle reflects whether the login item is installed, not whether the OS currently has it enabled β if you switch it off in Login Items / Task Manager, the shortcut stays on disk and the toggle still reads on. Use those system settings, or the Remove button, to be sure.
Windows notes. SmartScreen may warn the first time, and Windows will show a firewall prompt when the servers first bind their ports β allow it for private networks. The shortcut runs via
pythonw.exe, so no console window flashes.
Claude Code already saves everything locally β sessions, tool calls, token counts β as JSONL files in ~/.claude/. Claude Code Karma simply reads those files and serves them through a local dashboard.
~/.claude/projects/ β FastAPI (port 8020) β SvelteKit (port 5180)
your data parses & serves visualizes it
Nothing leaves your machine. The API reads your local files, indexes metadata in a local SQLite database, and the frontend renders it all in the browser.
claude-code-karma/
βββ api/ # FastAPI backend (Python) β port 8020
β βββ models/ # Pydantic models for Claude Code data
β βββ routers/ # API endpoints
β βββ services/ # Business logic
βββ frontend/ # SvelteKit frontend (Svelte 5) β port 5180
β βββ src/routes/ # Pages
β βββ src/lib/ # Components and utilities
βββ captain-hook/ # Pydantic library for Claude Code hooks
βββ hooks/ # Hook scripts (symlinked to ~/.claude/hooks/)
βββ live_session_tracker.py
βββ session_title_generator.py
βββ plan_approval.py
This is Karma's core feature β without it, Karma is just a historical viewer. Enable real-time session monitoring by installing Claude Code hooks. See Tier 2 in SETUP.md for setup instructions.
Live sessions also get an "open terminal" button (on the session page, the home strip, and /sessions) that raises the terminal window the session is running in β Karma runs locally, so the API can ask the OS window manager directly. macOS Terminal.app and iTerm2 get the exact window/tab, tmux gets the exact pane, other macOS terminals are raised app-level, and Linux needs X11 with xdotool or wmctrl. Design details in docs/feature/open-terminal/spec.md.
| State | Meaning |
|---|---|
LIVE | Session actively running |
WAITING | Waiting for user input |
STOPPED | Agent finished, session open |
STALE | User idle 60+ seconds |
ENDED | Session terminated |
| Endpoint | Description |
|---|---|
GET /projects | List all projects |
GET /projects/{encoded_name} | Project details with sessions |
GET /sessions/{uuid} | Session details |
GET /sessions/{uuid}/timeline | Session event timeline |
GET /sessions/{uuid}/tools | Tool usage breakdown |
GET /sessions/{uuid}/file-activity | File operations |
GET /sessions/{uuid}/subagents | Subagent activity |
| Endpoint | Description |
|---|---|
GET /analytics/projects/{encoded_name} | Project analytics |
GET /analytics/dashboard | Global dashboard metrics |
| Endpoint | Description |
|---|---|
GET /agents | List all agents |
GET /agents/{name} | Agent details |
GET /skills | List all skills |
GET /live-sessions | Real-time session state |
POST /live-sessions/{id}/focus-terminal | Raise the session's terminal window |
| Method | Endpoint | Description |
|---|---|---|
POST | /sessions/{uuid}/tickets | Link a ticket to a session |
GET | /sessions/{uuid}/tickets | List tickets linked to a session |
DELETE | /sessions/{uuid}/tickets/{id} | Unlink a ticket from a session |
GET | /tickets | List all tickets (filters: provider, project, q) |
GET | /tickets/{provider}/{key} | Get ticket details |
GET | /tickets/{provider}/{key}/sessions | Sessions linked to a ticket |
PUT | /tickets/{provider}/{key} | Refresh metadata from MCP |
POST | /admin/repair-github-urls | Repair stale /issues/ URLs to /pull/ |
| Endpoint | Description |
|---|---|
GET /cron/system | Host OS crontab (user crontab, /etc/crontab, /etc/cron.d/*, run-parts), grouped by origin |
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on:
This project is licensed under the Apache License 2.0. See LICENSE for details.
Built and maintained by Jayant Devkar
.DS_Store
.github/
ISSUE_TEMPLATE/
bug_report.yml
feature_request.yml
PULL_REQUEST_TEMPLATE.md
workflows/
api-tests.yml
desktop-launcher.yml
frontend-ci.yml
.gitignore
.superpowers/
sdd/
task-9-remediation-report.md
api/
__init__.py
.gitignore
.playwright-mcp/
home-view-screenshot.png
nested-projects-verification.png
nested-projects-view.png
phase1-homepage.png
phase1-verification.png
phase2-project-page.png
phase2-sessions-page.png
phase6-analytics.png
phase6-home-preview.png
phase6-hover-effect.png
phase6-project-view.png
phase6-session-overview.png
phase6-sessions-list.png
session-overview-screenshot.png
sessions-view-screenshot.png
timeline-view-screenshot.png
todo-update-expanded.png
benchmarks/
bench_endpoints.py
CHANGES.md
CLAUDE.md
collectors.py
command_helpers/
__init__.py
categories.py
cli_js.py
parsing.py
plugins.py
config.py
db/
__init__.py
connection.py
indexer_shells_cron.py
indexer.py
queries_shells_cron.py
queries.py
schema.py
ticket_queries.py
docs/
bug/
agent-slug-is-not-unique/
info.md
CLAUDE_CODE_SYNC.md
claude-code-local-storage-research.md
claude-karma-information-architecture.md
data-flow-logic-for-views/
home-view.md
improve/
api-phase-1.md
api-phase-2.md
api-phase-3.md
api-phase-4.md
README.md
test.md
ui-ux--index.md
ui-ux--phase-1.md
ui-ux--phase-2.md
ui-ux--phase-3.md
ui-ux--phase-4.md
ui-ux--phase-5.md
ui-ux--phase-6.md
project-view.md
review/
observations.md
ui-ux-observations.md
session-view.md
design/
live-session-reconciler.md
periodic-sqlite-reindexing.md
session-chain-architecture.md
feature/
agent-work-summary/
backend.md
frontend.md
nested-projects-detection/
v0.md
show-todo-of-session/
backend.md
FRONTEND_ENGINEER_PROMPT.md
frontend.md
research.md
subagent-type/
backend.md
frontend.md
README.md
implementation/
sqlite/
README.md
improvement/
ui-redesign/
index.md
phase-1.md
phase-2.md
phase-3.md
phase-4.md
review.md
optimization/
performance-gap.md
performance-optimization.md
research/
redisgn_dashboard_ui/
philosophy.md
session-slug-and-resume-behavior.md
tracking_custom_agents_and_skills/
research.md
review/
api-zen-review.md
sessions/
api.md
sqlite-optimization.md
ui-tech-stack.md
find_session_api.py
http_caching.py
LICENSE
main.py
middleware/
__init__.py
models/
__init__.py
agent.py
async_session.py
background_shell.py
base_cache.py
batch_loader.py
bounded_cache.py
compaction_detector.py
content.py
conversation.py
cron_job.py
history.py
hook.py
jsonl_utils.py
live_session.py
message.py
plan.py
plugin.py
project.py
README.md
session_index.py
session_relationship.py
session.py
task.py
ticket.py
todo.py
tool_result.py
usage.py
new_service/
file_watcher/
v0.md
parallel.py
pyproject.toml
README.md
requirements.txt
routers/
__init__.py
admin.py
agent_analytics.py
agents.py
analytics.py
background_shells.py
commands.py
cron.py
desktop_app.py
docs.py
history.py
hooks.py
live_sessions.py
memory.py
plans.py
plugins.py
projects.py
sessions.py
settings.py
skills.py
subagent_sessions.py
system_cron.py
tickets.py
tools.py
schemas.py
scripts/
backfill_titles.py
hooks.yaml
live_session_tracker.py
plan_approval.py
SETUP.md
services/
__init__.py
conversation_endpoints.py
desktop_sessions.py
git_identity.py
live_session_store.py
session_filter.py
session_lookup.py
session_reconciler.py
session_relationships.py
session_title_cache.py
subagent_types.py
terminal_focus.py
ticket_cleanup.py
ticket_parser.py
ticket_session_enrichment.py
session_story.py
SETUP.md
tests/
__init__.py
api/
__init__.py
conftest.py
test_admin_repair.py
test_agents_performance.py
test_analytics.py
test_background_shells_router.py
test_cron_router.py
test_live_sessions_terminal.py
test_memory.py
test_plans.py
test_plugins.py
test_project_identity_helpers.py
test_projects.py
test_schemas.py
test_session_relationships.py
test_session_search_filters.py
test_sessions.py
test_set_session_title.py
test_subagent_sessions.py
test_system_cron.py
test_tickets.py
test_tool_results_service.py
test_utils.py
conftest.py
test_agent.py
test_compaction_detector.py
test_content.py
test_conversation_endpoints.py
test_cross_platform_paths.py
test_db.py
test_desktop_app_guard.py
test_desktop_sessions.py
test_git_identity.py
test_indexer_shells_cron.py
test_invocation_source.py
test_jsonl_utils.py
test_live_session_store.py
test_message.py
test_phase4.py
test_plan_approval.py
test_plugin.py
test_project.py
test_schema_tickets.py
test_session_cache.py
test_session.py
test_task.py
test_terminal_focus.py
test_ticket_parser.py
test_ticket_session_enrichment.py
test_todo.py
test_tool_result.py
test_usage.py
test_user_message_flags.py
test_utils_prompt_extraction.py
ui-ux-research.md
utils_io.py
utils.py
captain-hook/
.gitignore
CLAUDE.md
docs/
hooks/
CwdChanged-info-available.md
Elicitation-info-available.md
ElicitationResult-info-available.md
FileChanged-info-available.md
InstructionsLoaded-info-available.md
Notification-info-available.md
PermissionDenied-info-available.md
PermissionRequest-info-available.md
PostToolUse-info-available.md
PreCompact-info-available.md
PreToolUse-info-available.md
SessionEnd-info-available.md
SessionStart-info-available.md
Stop-info-available.md
SubagentStop-info-available.md
TaskCompleted-info-available.md
TaskCreated-info-available.md
TeammateIdle-info-available.md
UserPromptSubmit-info-available.md
WorktreeCreate-info-available.md
WorktreeRemove-info-available.md
file_index.md
LICENSE
models.py
README.md
src/
__init__.py
captain_hook/
__init__.py
agent_hooks.py
base.py
context_hooks.py
fs_hooks.py
outputs.py
session_hooks.py
setup_hooks.py
team_hooks.py
tool_hooks.py
user_hooks.py
worktree_hooks.py
tests/
__init__.py
test_models.py
CHANGELOG.md
CLAUDE.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
docs/
about/
api-reference.md
architecture.md
features.md
hooks-guide.md
overview.md
quick-start.md
AGENT_TELEMETRY_NOTES.md
claudekarm-14-review-findings.md
design/
design-briefs/
2026-05-18-ticket-linking-ui-log.md
2026-05-18-ticket-linking-ui.md
2026-05-19-nav-header-redesign.md
2026-05-19-tickets-kanban.md
iterations/
2026-05-18/
critique-notes.png
Q1-provider-language-4-directions.png
Q2-empty-state-3-variants.png
Q3-detail-title-first.png
Q4-link-input-state-spec.png
Q4b-link-input-live-demo.png
Q5-section-placement-3-variants.png
Q6-unlink-destructive-treatment.png
Q9a-project-tickets-touched-3-placements.png
Q9b-ticket-sessions-grouped-3-variants-v2.png
Q9b-ticket-sessions-grouped-3-variants.png
ticket-ui-review.html
tickets-populated-interactive-v1.png
tickets-populated-interactive-v2.png
2026-05-19/
C-icon-first-compact.html
C-icon-first-compact.png
session-search-feature.md
feature/
agents-page/
plan.md
hooks-page/
plan.md
research.md
ui-design.md
mcp-tools-page/
DESIGN.md
open-terminal/
spec.md
pagination/
plan.md
state.md
plugins-page/
plan.md
session-search/
api.md
frontend.md
features/
2026-03-19-agent-walkie-talkie.md
2026-03-19-sync-v4.md
2026-04-06-claude-code-audit-action-items.md
2026-04-07-multi-file-memory-ui.md
agent-session/
plan.md
agent-status/
feature.md
session-titles/
feature.md
implementation.md
... 555 moreΒ© 2026 Flowy Β· Free and open source
Built for Claude Code Β· Not affiliated with Anthropic