Real-time narration plugin for Claude Code
npx claudepluginhub nerdynikhil/claude-narratorReal-time narration of what Claude Code is doing, with optional text-to-speech
A Claude Code CLI plugin that narrates what Claude is doing in real-time. Get audio and visual feedback as Claude reads files, runs commands, edits code, and more.
claude-narrator hooks into four Claude Code lifecycle events:
| Event | Emoji | What it announces |
|---|---|---|
| SessionStart | 🚀 | Session started, resumed, cleared, or compacted |
| PreToolUse | 🔊 | Which tool is about to run, with context (filename, command, etc.) |
| PostToolUse | ✅ | Tool finished, what it did |
| Stop | 🏁 | Claude is done and waiting for your next prompt |
All output goes to stderr so it never interferes with Claude's stdout.
jq for JSON parsing (brew install jq on macOS, apt install jq on Linux)say (macOS, built-in) or espeak (Linux) for text-to-speech (optional)git clone https://github.com/nerdynikhil/claude-narrator.git
cd claude-narrator
./install.sh --user # all projects
# or
./install.sh --project # current project only
./install.sh --user --uninstall
# or
./install.sh --project --uninstall
Set the environment variable before starting Claude:
export NARRATOR_DETAILED_LOG=1
Logs are written to logs/narration-YYYYMMDD.log with timestamps and tool details.
export NARRATOR_VOICE=Daniel # macOS: try Samantha, Moira, Alex, etc.
List available macOS voices with say -v '?'. For espeak on Linux, use voices like en+f3 or en+m1.
When unset, the system default voice is used.
export NARRATOR_TTS=0
When set to 0, all TTS is skipped but emoji console output continues. If neither say nor espeak is installed, TTS is silently skipped regardless.
The install script adds hook entries to your Claude Code settings.json (either ~/.claude/settings.json for user-wide or .claude/settings.json for project-level). Each hook runs a small bash script that:
jqsay/espeak in the backgroundclaude-narrator/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── hooks/
│ ├── hooks.json # Hooks wiring configuration
│ ├── session-start.sh # SessionStart handler
│ ├── pre-tool-use.sh # PreToolUse handler
│ ├── post-tool-use.sh # PostToolUse handler
│ └── stop.sh # Stop handler
├── docs/
│ ├── quickstart.md # Quick start guide
│ └── examples.md # Customization examples
├── logs/ # Log output (gitignored)
├── install.sh # Installer/uninstaller
└── README.md
MIT