{"id":51223080,"url":"https://github.com/JayantDevkar/claude-code-karma","last_synced_at":"2026-07-16T19:01:07.608Z","repository":{"id":341448156,"uuid":"1128651978","full_name":"JayantDevkar/claude-code-karma","owner":"JayantDevkar","description":"Dashboard for monitoring claude code sessions. ","archived":false,"fork":false,"pushed_at":"2026-07-10T13:23:01.000Z","size":39445,"stargazers_count":234,"open_issues_count":8,"forks_count":27,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-07-10T15:09:14.803Z","etag":null,"topics":["agents","agentskills","claude-code","claude-code-plugin","claude-code-skills","dashboard","hooks","mcp","mcptool","mcptools","monitoring","observability","plugins","sessions","skills","visibility"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JayantDevkar.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-06T00:46:23.000Z","updated_at":"2026-07-09T03:51:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/JayantDevkar/claude-code-karma","commit_stats":null,"previous_names":["jayantdevkar/claude-code-karma"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/JayantDevkar/claude-code-karma","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JayantDevkar%2Fclaude-code-karma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JayantDevkar%2Fclaude-code-karma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JayantDevkar%2Fclaude-code-karma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JayantDevkar%2Fclaude-code-karma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JayantDevkar","download_url":"https://codeload.github.com/JayantDevkar/claude-code-karma/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JayantDevkar%2Fclaude-code-karma/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35555509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agents","agentskills","claude-code","claude-code-plugin","claude-code-skills","dashboard","hooks","mcp","mcptool","mcptools","monitoring","observability","plugins","sessions","skills","visibility"],"created_at":"2026-06-28T09:00:31.117Z","updated_at":"2026-07-16T19:01:07.593Z","avatar_url":"https://github.com/JayantDevkar.png","language":"Python","funding_links":[],"categories":["Source Catalog"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/banner.png\" alt=\"Claude Code Karma\" width=\"200\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eClaude Code Karma\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eYour Claude Code sessions deserve more than a terminal.\u003c/strong\u003e\u003cbr /\u003e\n  A local-first, open-source dashboard that turns your \u003ccode\u003e~/.claude/\u003c/code\u003e data into a visual story — sessions, timelines, costs, and live activity, all on your machine.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.apache.org/licenses/LICENSE-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" alt=\"License: Apache-2.0\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.python.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Python-3.9+-blue.svg\" alt=\"Python 3.9+\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://nodejs.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Node-18+-green.svg\" alt=\"Node 18+\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://kit.svelte.dev/\"\u003e\u003cimg src=\"https://img.shields.io/badge/SvelteKit-2-FF3E00.svg\" alt=\"SvelteKit 2\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"docs/screenshots/home.png\" target=\"_blank\"\u003e\n    \u003cimg src=\"docs/screenshots/home.png\" alt=\"Claude Code Karma Dashboard\" width=\"100%\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Why Claude Code Karma?\n\nIf 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.\n\n\u003e **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.\n\nClaude Code Karma reads that local data and gives you a proper dashboard. No cloud. No accounts. No telemetry. Just your data, on your machine.\n\nIt works with both **Claude Code CLI** and **Claude Desktop** (Claude Code mode) sessions — any session that writes to `~/.claude/` shows up automatically.\n\n## Features\n\n### Session Browser\n\nBrowse 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/sessions.png\" alt=\"Session Browser\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Session Timeline \u0026 Overview\n\nDive 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-overview.png\" alt=\"Session Overview\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-timeline.png\" alt=\"Session Timeline\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Session Detail Tabs\n\nEach session page has dedicated tabs that break down different aspects of what happened during the session.\n\n**Tasks** — See all tasks Claude created and completed during the session, displayed in a flow view with status tracking.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-tasks.png\" alt=\"Session Tasks\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Files** — Every file operation in a sortable table — reads, writes, edits — with timestamps, actors, and the tools that made each change.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-files.png\" alt=\"Session Files\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Subagents** — Agents spawned during the session, grouped by type. Expand each to see message counts, tool calls, and what they were asked to do.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-subagents.png\" alt=\"Session Subagents\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Skills** — Skills invoked via `/skill` commands during the session, with their source plugin and invocation count.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-skills.png\" alt=\"Session Skills\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Commands** — Slash commands used during the session, showing built-in and plugin commands with usage counts.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-commands.png\" alt=\"Session Commands\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Analytics** — Per-session cost breakdown, token usage, cache hit rates, tool distribution with a donut chart, and a ranked list of every tool used.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/session-analytics.png\" alt=\"Session Analytics\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Projects\n\nSee 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/projects.png\" alt=\"Projects\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Analytics\n\nTrack 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/analytics.png\" alt=\"Analytics Dashboard\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Tools\n\nSee every tool Claude Code uses — built-in ones like Read, Edit, and Bash, plus any MCP integrations you've added. Grouped by server with call counts and session coverage. Switch to the Usage Analytics tab for activity trends and top tools over time.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/tools.png\" alt=\"Tools Browser\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/tool-analytics.png\" alt=\"Tool Usage Analytics\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\nClick into any tool for detailed stats — total calls, session count, main vs subagent split, usage trend over time, and a full session history.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/tool-detail.png\" alt=\"Tool Detail\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/tool-history.png\" alt=\"Tool History\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Agents\n\nBrowse 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/agents.png\" alt=\"Agents Browser\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/agent-analytics.png\" alt=\"Agent Usage Analytics\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\nDrill 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/agent-detail.png\" alt=\"Agent Detail\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/agent-history.png\" alt=\"Agent History\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Hooks\n\nVisualize 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/hooks.png\" alt=\"Hooks Browser\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Plugins\n\nView 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/plugins.png\" alt=\"Plugins Browser\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\nClick 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/plugin-detail.png\" alt=\"Plugin Detail\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/plugin-analytics.png\" alt=\"Plugin Usage Analytics\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Skills\n\nTrack 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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/skill-detail.png\" alt=\"Skill Detail with History\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### Ticket Linking (Linear / Jira / GitHub Issues)\n\nAttach 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.\n\nThree ways to link:\n\n- **Paste a URL or key** into the Tickets section on any session page\n- **Type `/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 title\n- **Auto-detect from your branch name** — opt-in `SessionStart` hook that watches for keys like `feat/LINEAR-123-foo` and links silently in the background\n\nThen browse:\n\n- A `/tickets` index showing every ticket touched, filterable by provider and project\n- A ticket detail page listing every session linked to a given ticket\n- A **Tickets tab on every project page** that aggregates across all checkouts of the same git repo — so a ticket linked from `claude-karma/frontend/` also shows on the main `claude-karma` project\n\n**Tickets Index** — All linked tickets in a filterable table. Switch between All, Issues, and PRs on GitHub.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/tickets-index.png\" alt=\"Tickets Index\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Filter by Provider** — GitHub shows sub-pill filtering ([All N] [Issues N] [PRs N]) to toggle between categories.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/tickets-github-prs.png\" alt=\"GitHub Issues and PRs Filter\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**Ticket Detail** — View a ticket with all linked sessions. Cross-project rollup shows \"N sessions · M projects\" with tabs per project.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/ticket-detail.png\" alt=\"Ticket Detail with Cross-Project Rollup\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n**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.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/project-tickets-tab.png\" alt=\"Project Tickets Tab\" width=\"100%\" /\u003e\n\u003c/p\u003e\n\n### And More\n\n- **Tickets across providers** — Link sessions to Linear, Jira, and GitHub Issues in a unified interface\n- **Plans Browser** — View implementation plans and their execution status\n- **Command Palette** — Quick navigation with `Ctrl+K` / `Cmd+K`\n- **Full-text Search** — Search across session titles, prompts, and slugs\n- **Live Sessions** — Real-time monitoring via Claude Code hooks\n\n## Quick Start\n\n```bash\n# Clone the repository\ngit clone https://github.com/JayantDevkar/claude-code-karma.git\ncd claude-code-karma\n\n# Start API (Terminal 1)\ncd api\npip install -e \".[dev]\" \u0026\u0026 pip install -r requirements.txt\nuvicorn main:app --reload --port 8000\n\n# Start Frontend (Terminal 2)\ncd frontend\nnpm install \u0026\u0026 npm run dev\n```\n\nOpen **http://localhost:5173** to view the dashboard.\n\nFor detailed setup including live session tracking, see [SETUP.md](./SETUP.md).\n\n## How It Works\n\nClaude 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.\n\n```\n~/.claude/projects/  →  FastAPI (port 8000)  →  SvelteKit (port 5173)\n   your data              parses \u0026 serves          visualizes it\n```\n\nNothing 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.\n\n## Project Structure\n\n```\nclaude-code-karma/\n├── api/                    # FastAPI backend (Python) — port 8000\n│   ├── models/             # Pydantic models for Claude Code data\n│   ├── routers/            # API endpoints\n│   └── services/           # Business logic\n├── frontend/               # SvelteKit frontend (Svelte 5) — port 5173\n│   ├── src/routes/         # Pages\n│   └── src/lib/            # Components and utilities\n├── captain-hook/           # Pydantic library for Claude Code hooks\n└── hooks/                  # Hook scripts (symlinked to ~/.claude/hooks/)\n    ├── live_session_tracker.py\n    ├── session_title_generator.py\n    └── plan_approval.py\n```\n\n## Live Session Tracking\n\nEnable real-time session monitoring by installing Claude Code hooks. See [SETUP.md](./SETUP.md#live-sessions-tracking-optional) for setup instructions.\n\n| State | Meaning |\n|-------|---------|\n| `LIVE` | Session actively running |\n| `WAITING` | Waiting for user input |\n| `STOPPED` | Agent finished, session open |\n| `STALE` | User idle 60+ seconds |\n| `ENDED` | Session terminated |\n\n## Technology Stack\n\n### Backend\n- **Python 3.9+** with **FastAPI** and **Pydantic 2.x**\n- **SQLite** for metadata indexing\n- **pytest** for testing, **ruff** for linting\n\n### Frontend\n- **SvelteKit 2** with **Svelte 5** runes\n- **Tailwind CSS 4** for styling\n- **Chart.js 4** for visualizations\n- **bits-ui** for accessible UI primitives\n- **TypeScript** for type safety\n\n### Libraries\n- **captain-hook** — Type-safe Pydantic models for Claude Code's 10 hook types\n\n## API Endpoints\n\n\u003cdetails\u003e\n\u003csummary\u003eView all endpoints\u003c/summary\u003e\n\n### Core\n\n| Endpoint | Description |\n|----------|-------------|\n| `GET /projects` | List all projects |\n| `GET /projects/{encoded_name}` | Project details with sessions |\n| `GET /sessions/{uuid}` | Session details |\n| `GET /sessions/{uuid}/timeline` | Session event timeline |\n| `GET /sessions/{uuid}/tools` | Tool usage breakdown |\n| `GET /sessions/{uuid}/file-activity` | File operations |\n| `GET /sessions/{uuid}/subagents` | Subagent activity |\n\n### Analytics\n\n| Endpoint | Description |\n|----------|-------------|\n| `GET /analytics/projects/{encoded_name}` | Project analytics |\n| `GET /analytics/dashboard` | Global dashboard metrics |\n\n### Agents, Skills \u0026 Live Sessions\n\n| Endpoint | Description |\n|----------|-------------|\n| `GET /agents` | List all agents |\n| `GET /agents/{name}` | Agent details |\n| `GET /skills` | List all skills |\n| `GET /live-sessions` | Real-time session state |\n\n### Tickets\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `/sessions/{uuid}/tickets` | Link a ticket to a session |\n| `GET` | `/sessions/{uuid}/tickets` | List tickets linked to a session |\n| `DELETE` | `/sessions/{uuid}/tickets/{id}` | Unlink a ticket from a session |\n| `GET` | `/tickets` | List all tickets (filters: provider, project, q) |\n| `GET` | `/tickets/{provider}/{key}` | Get ticket details |\n| `GET` | `/tickets/{provider}/{key}/sessions` | Sessions linked to a ticket |\n| `PUT` | `/tickets/{provider}/{key}` | Refresh metadata from MCP |\n| `POST` | `/admin/repair-github-urls` | Repair stale `/issues/` URLs to `/pull/` |\n\n### System Cron\n\n| Endpoint | Description |\n|----------|-------------|\n| `GET /cron/system` | Host OS crontab (user crontab, `/etc/crontab`, `/etc/cron.d/*`, run-parts), grouped by origin |\n\n\u003c/details\u003e\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on:\n\n- Reporting bugs\n- Suggesting features\n- Development setup\n- Code style and testing\n- Pull request process\n\n## License\n\nThis project is licensed under the Apache License 2.0. See [LICENSE](./LICENSE) for details.\n\n## Questions?\n\n- See [SETUP.md](./SETUP.md) for installation and configuration help\n- Check [CLAUDE.md](./CLAUDE.md) for development guidance\n- Review existing [GitHub Issues](https://github.com/JayantDevkar/claude-code-karma/issues)\n\n---\n\nBuilt and maintained by [Jayant Devkar](https://github.com/JayantDevkar)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJayantDevkar%2Fclaude-code-karma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FJayantDevkar%2Fclaude-code-karma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FJayantDevkar%2Fclaude-code-karma/lists"}