One command. Global memory for Claude Code.
npx claude-pulse init
Claude Pulse captures every session, every decision, and every line of code across all your projects — automatically, locally, and queryable anytime. It gives Claude Code a persistent memory and gives you a dashboard to see your work.
No cloud. No accounts. No data leaves your machine.
| Feature | How it works |
|---|---|
| Session tracking | Every start, stop, and tool call recorded automatically |
| Code metrics | Lines added/removed per file, per session, per day |
| Brain layer | Structured progress, decisions, and blockers captured at session end |
| Smart gating | Only asks for summaries on meaningful sessions — trivial ones auto-close |
| Cross-project context | Claude knows what you did in other projects when you start a session |
| Knowledge capture | Store patterns, fixes, and context mid-session with /pulse-remember |
| Audit trail | User identity, diff capture, and exportable records for compliance |
| Dashboard | Visual overview at localhost:3141 — activity, brain, projects, timeline |
# macOS
brew install jq sqlite3
# Ubuntu/Debian
sudo apt install jq sqlite3
git clone https://github.com/Clemens865/Claude-Pulse.git
cd Claude-Pulse
npm install
npm run build && node bin/copy-static.mjs
npm link
claude-pulse init
Now claude-pulse works from any directory. Use Claude Code normally — everything is captured in the background.
git clone https://github.com/Clemens865/Claude-Pulse.git
cd Claude-Pulse
npm install
npx claude-pulse init
With a local install, prefix all commands with npx and run them from the project directory.
claude-pulse start # global install
npx claude-pulse start # local install
Open http://localhost:3141.
Key numbers at a glance: total sessions, net lines written, hours spent, active projects, streaks. Daily activity for the last 14 days. Top tools, skills, and frameworks.
A searchable timeline of your reasoning — not just your code. Structured entries for progress, decisions, blockers, patterns, and fixes. Filterable by type and project. This is the log of your thinking across sessions.
All projects ranked by activity. Click any project for session history, most-edited files, daily breakdowns.
90-day GitHub-style heatmap. Darker squares = more active days.
Full event-by-event replay of any session. Every edit shows an expandable diff view. User identity (who@hostname) displayed when available.
Database info, record counts, and an export section with project/date filtering. Download your data as JSON or CSV anytime.
| Command | What it does |
|---|---|
claude-pulse init |
Set up hooks and database (safe to re-run) |
claude-pulse start |
Open the dashboard |
claude-pulse status |
Quick terminal summary |
claude-pulse doctor |
Health check — verify everything works |
claude-pulse export |
Export data as JSON, CSV, or NDJSON |
claude-pulse verify |
Audit integrity check |
claude-pulse uninstall |
Remove hooks (data preserved) |
Note: If you installed locally (without
npm link), prefix all commands withnpx.
Export supports filtering:
claude-pulse export --format json --start 2026-03-01 --end 2026-03-31
claude-pulse export --format csv --table insights
These work globally — any project, any directory:
| Command | What it does |
|---|---|
/pulse-projects |
List all tracked projects with stats |
/pulse-projects my-app |
Details and insights for a specific project |
/pulse-latest |
Last 3 days of work across all projects |
/pulse-latest 7 |
Last 7 days |
/pulse-insights |
Overview of all insights |
/pulse-insights type:decision |
All decisions you've made |
/pulse-insights type:blocked |
All current blockers |
/pulse-insights auth |
Search insights by keyword |
Some knowledge emerges mid-session. /pulse-remember captures it:
/pulse-remember fix: sqlite3 needs absolute paths on macOS
/pulse-remember pattern: all API routes use getDb() singleton
/pulse-remember context: deploy freeze next week for mobile release
Claude distills your input into a concise summary and stores both layers: - Content — Claude's clean one-liner (shown in dashboard) - Reasoning — your original words (preserved for context)
These show up as "Knowledge" at your next session start — before yesterday's progress, because accumulated knowledge is more valuable.
Claude Pulse captures a complete activity trail suitable for AI code audits:
claude-pulse verify reports record counts, coverage, and SQLite integrityFor teams asking "what did the AI do?" — Claude Pulse provides every action, every decision, timestamped and queryable.
Claude Code session
|
v
Hook events (SessionStart, PostToolUse, Stop)
|
v
bash script + jq + sqlite3 → ~/.claude-pulse/tracker.db
|
v
Next.js dashboard (localhost:3141)
claude-pulse init registers three hooks in Claude Code's settings:Stop — finalizes session, computes summaries, captures structured insights
Smart gating: at session end, the hook counts write events. Fewer than 3? Auto-close silently. More? Ask Claude for a structured summary (PROGRESS/DECISION/BLOCKED).
Context injection: at session start, the hook injects last session's summary, accumulated knowledge, and cross-project awareness into Claude's context.
The dashboard reads the same SQLite file directly. No API keys, no cloud, no accounts.
No data showing up? Run claude-pulse doctor — it checks deps, hooks, DB, and recent activity.
jq or sqlite3 not found? Install them (brew install jq sqlite3 or apt install jq sqlite3), then re-run claude-pulse init.
Dashboard won't start? Check if port 3141 is in use: lsof -i :3141.
Start fresh? Delete the DB and re-init:
rm ~/.claude-pulse/tracker.db
npx claude-pulse init
Remove completely:
claude-pulse uninstall # removes hooks
rm -rf ~/.claude-pulse # removes data
SQLite with WAL mode at ~/.claude-pulse/tracker.db:
| Table | What it stores |
|---|---|
sessions |
Session lifecycle, user identity, summary |
tool_events |
Every tool call with timestamps, diffs, and metadata |
insights |
Typed entries: progress, decisions, patterns, fixes, blockers |
daily_summaries |
Pre-computed daily aggregates |
file_activity |
Per-file daily edit/read/write counts |
Next.js 16 + React 19 + Tailwind CSS 4 + better-sqlite3 + TypeScript 5.9 + bash/jq/sqlite3
npm run dev # Dev server on port 3141
npm run build # Production build
npm run lint # ESLint
The repo also works as a Claude Code plugin:
- .claude-plugin/plugin.json — metadata
- hooks/hooks.json — auto-registered hooks
- skills/ — slash commands
Visit Settings in the dashboard or POST to /api/seed for 30 days of sample data.
MIT
$ claude mcp add Claude-Pulse \
-- python -m otcore.mcp_server <graph>