A new open-source tool called Pulse gives Claude Code users a local dashboard that tracks what the AI is doing, monitors token spend across hours and projects, and—most importantly—lets you approve or deny tool calls directly from your phone without any network gymnastics. Created by developer Nikita Doudikov, Pulse runs entirely on localhost with zero dependencies and never phones home.
How It Works
Claude Code already writes every session to disk as JSONL files under ~/.claude/projects/. Pulse reads those logs (read-only) and aggregates the data into a live dashboard served at 127.0.0.1:4317. The browser receives real-time updates over Server-Sent Events, so you see token consumption, context fill, and session activity as it happens. Three lightweight hooks—Notification, Stop, and PreToolUse—wire directly into Claude Code's settings.json to bridge the gap between terminal and dashboard.
Approve Tool Calls From Anywhere
The killer feature is phone approval without port forwarding or same-network requirements. Pulse sends push notifications through ntfy.sh, a public relay that routes messages based on topic names you choose. When Claude wants to run something requiring permission—say, executing a shell command or writing files—an approval card appears in the dashboard with Allow, Allow all, and Deny buttons. The same notification hits your phone via the free ntfy app, complete with working action buttons that send your decision back through the relay.
Session Recovery That Actually Works
Crash your terminal mid-sprint? Pulse auto-snapshots active sessions to ~/.claude-pulse/exports/snapshots/, so a frozen laptop or unexpected reboot never wipes your context. Running claude-pulse recover brings back your most recent session as a readable markdown transcript, trimming verbose JSONL logs down to something human-scannable—a 15 MB log becomes roughly 180 KB of clean text.
Privacy by Default
Out of the box, Pulse binds strictly to 127.0.0.1 and makes zero outbound network calls. The only optional feature that changes this is the ntfy integration for phone push notifications—and even then, approval prompts route through a topic name you define. The documentation explicitly warns: use a random string for your topic since anyone who knows it can read incoming requests. Self-hosting ntfy or using access tokens are recommended for stronger guarantees.
Getting Started
Requirements are minimal—Node 18+ is the only prerequisite. Run with no install via npx pulse-for-claude-code, or clone from GitHub at github.com/nikitadoudikov/claude-pulse. One command wires the hooks safely: claude-pulse install-hooks merges settings into ~/.claude/settings.json without duplicates and backs up your existing config first.
Key Takeaways
- Pulse requires zero dependencies and ships no telemetry—nothing leaves your machine by default
- Phone approvals work from cellular data anywhere, no port forwarding or static IP needed
- Session recovery via auto-snapshots protects against terminal crashes and laptop freezes
- Optional LAN binding lets you access the dashboard from devices on the same Wi-Fi, but it's disabled by default for a reason
The Bottom Line
Pulse solves a real friction point for Claude Code power users: the annoyance of switching windows to approve tool calls during long coding sessions. That it does this without requiring account creation, telemetry, or exotic network configuration is refreshing. If you're running Claude Code seriously, this belongs in your workflow—privacy-conscious developers who want AI tooling that respects their machine will find exactly what they need here. Project: github.com/nikitadoudikov/claude-pulse | License: MIT