๐Ÿซ€

Pulse

The heartbeat of your Claude Code projects. Measure what matters, see where you stand, know what to do next.

114 tests passing Python 3.12+ SQLite Rich + Textual

Claude Code plans as if a human writes the code. Reality: debug cycles, context loss, and human wait time are the real bottlenecks โ€” but nobody measures them. Pulse does.

$ pipx install git+https://github.com/janrummel/pulse.git
$ pulse install   # hooks in Claude Code aktivieren
$ pulse              # TUI starten
View on GitHub

One app, four views

Type pulse to open the TUI. Click a tab to preview each view.

pulse
[1] Launcher [2] Dashboard [3] Recap [4] Portfolio [r] Report [q] Quit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ● api-service โ”‚ ● cli-toolkit โ”‚ cli-toolkit ● data-sync โ”‚ Tools ยท active ● pulse โ”‚ ~/Projects/cli-toolkit ● advanced-track โ”‚ โ”‚ Last activity: 2h ago โ”‚ โ”‚ → Add pagination to list command โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Select a project and press Enter to start Claude.
pulse
[1] Launcher [2] Dashboard [3] Recap [4] Portfolio [r] Report [q] Quit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Heute 2026-03-14 3 Tasks erledigt 5 Sessions 42 Dateien 2 Debug 31% Think ✓ auth-module backend ✓ search-api backend ✓ collector.py pulse โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Session a3f8e1d2 backend claude-opus-4-6 34 min 47 calls 3 debug 18% think โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Tool-Mix Heavy testing Write ██░░░░░░ 16% Edit ██░░░░░░ 22% Bash ████░░░░ 48% Read █░░░░░░░ 8%
pulse
[1] Launcher [2] Dashboard [3] Recap [4] Portfolio [r] Report [q] Quit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Daily Recap 2026-03-14 Sessions 5 Work time 2.4h Prompts 23 Tool calls 187 Debug cycles 3 Think-Time 24% Files 31 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Prompt rounds: 14:01 · Build auth module with tests [8 calls] 14:09 · Now search-api endpoint [12 calls] 14:21 ! Continue with deployment [34 calls] 15:08 · Build dashboard [22 calls]
pulse
[1] Launcher [2] Dashboard [3] Recap [4] Portfolio [r] Report [q] Quit โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Tools ✓ config-wizard ● api-service ↻ ● cli-toolkit ██░░░░ 3/10 ● data-sync ↻ ● pulse ████░░ 7/12 Learning ○ ml-course ✓ intro-workshop ● advanced-track System ✓ compliance-audit ● infra-config ↻ 8 active 1 paused 3 done

What Pulse measures

Outcomes, not activity

Hero metric is tasks completed today. Tool call counts are secondary context, not the headline.

Debug cycles

Detects error-fix patterns automatically. Shows which files cause the most rework across sessions.

Think-Time

Time between agent completion and your next prompt. Not waste โ€” it's where decisions happen.

Deadline forecasts

Based on historical velocity and debug overhead. Tells you if you'll make it โ€” or what to cut.

Auto task detection

Recognizes completed tasks from git commits, passing tests, and prompt transitions.

Project portfolio

All projects in one view grouped by category. One-time and continuous projects clearly distinguished.

Architecture

Claude Code Sessions | +-- Hooks | SessionStart, PreToolUse, | PostToolUse, Stop, ... | v +-----------+ +-----------+ +-----------+ | Collector |->| Analyzer |->| Planner | | hook > db | | metrics | | forecasts | +-----------+ +-----------+ +-----------+ | | | v v v +--------------------------------------+ | SQLite DB | | events sessions projects tasks | +--------------------------------------+ | v +-----------+ +-----------+ +-----------+ | Dashboard | | Launcher | | Tracker | | Rich TUI | | Textual | | auto-task | +-----------+ +-----------+ +-----------+

Design principles

Inspired by Apple Human Interface Guidelines.

Clarity

Every element earns its place. No decorative noise. Content is the interface.

Color = Meaning

● green = good ยท ○ yellow = attention ยท ! red = problem ยท · dim = secondary

Consistency

Same markers, colors, and spacing everywhere. One design system drives all views.

Browser report

Press r in the TUI or run pulse report to generate an interactive HTML dashboard from your session data. Charts, KPIs, and key insights โ€” all from your local SQLite database.

5 charts: Tool Mix, Error Rate, Events per Day, Prompts per Hour, Session Sizes

View example report

Demo data โ€” your real report is generated locally from your own sessions.

Common questions

How does Pulse collect data?

Through Claude Code hooks โ€” shell commands that run on every session event. pulse install adds these hooks to your Claude Code settings. Each hook reads JSON from stdin and writes one row to SQLite. Takes less than 100ms, no blocking.

Does Pulse see my code or prompts?

Pulse logs tool names and file paths, never file contents. Prompts are truncated to 500 characters. Only structural metadata (command names, file paths, patterns) is stored โ€” never values.

Does it work with multiple sessions?

Yes. Every session gets a unique ID from Claude Code. Pulse tracks them independently. SQLite runs in WAL mode for concurrent writes.

Does the AI still give good answers?

Pulse doesn't interfere with Claude Code at all. Hooks run after events, not before. There's no proxy, no interception โ€” just observation.

What about token costs?

Claude Code hooks don't expose token or cost data yet. Pulse tracks everything else โ€” when cost data becomes available, it can be added without schema changes.

Why this exists

Pulse started with a simple frustration: Claude Code creates plans as if a human writes the code. "vault.py: 2 hours. scanner.py: 3 hours." In reality, vault.py took 8 minutes. Scanner took 12. The proxy took 47 โ€” because of 6 debug cycles nobody predicted.

The real bottlenecks in AI-assisted development aren't lines of code. They're debug cycles, context loss, and the time you spend deciding what to do next. But nobody was measuring these. Session managers exist. Metrics tools don't.

Pulse fills that gap. Not by adding complexity, but by observing what already happens โ€” every hook event Claude Code already emits โ€” and turning it into insight.