Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Incant

Give your coding agents a voice.
Local text-to-speech narration for Claude Code, Codex, OpenCode, and Kimi CLI — on your Mac, no cloud, no API keys.

Platform: macOS Apple Silicon Engine: Python 3.10+ App: SwiftUI Speech: MLX / Kokoro License: MIT


Incant speaks each finished turn from Claude Code, Codex, OpenCode, and Kimi CLI through fast local text-to-speech, with a native macOS menu bar app and floating per-session bubbles. Beyond narration it tracks what every session is doing live: an in-progress indicator while an agent works, macOS notifications plus a pulsing bubble when one needs your approval or input, and a swarm counter while Kimi-style subagent fleets run. Everything runs on your machine.

This is a monorepo:

Incant/
├── engine/   # the narration engine — Python, ships on PyPI as `incant`
│             #   the `incant` CLI, the daemon, agent hooks, TTS via mlx-audio
└── app/      # the macOS menu bar app — SwiftUI, ships as Incant.app
              #   session bubbles, live popover, onboarding; a client of the engine

Quick start

# 1. the engine
uv tool install incant      # or: pipx install incant
incant install              # wires Claude Code / Codex / OpenCode / Kimi, guided

# 2. the app (optional, adds the menu bar + bubbles)
brew install --cask incant  # once published; until then, build from app/

The next time any agent finishes a turn, you hear a spoken digest of what it did. While it works you see a live in-progress indicator, and the moment it needs your approval you get a macOS notification.

The two halves

  • engine/ is the whole product on its own: a local daemon that cleans agent output, synthesizes speech with mlx-audio (Kokoro by default), plays narrations one at a time, and tracks live session status (working / needs approval / needs input / subagent swarms) from each agent's lifecycle hooks. Fully usable from the CLI (incant install, incant doctor, incant mode, incant mute, incant sessions, …). See engine/README.md.
  • app/ is a thin SwiftUI client of the engine's HTTP + SSE API. It renders live sessions as menu-bar controls and floating chat-head bubbles (spinning while working, pulsing orange when blocked on you, swarm-size badge), posts macOS notifications for finished turns and needed approvals, with per-agent voices, provider logos, and onboarding. See app/README.md.

Incant is speech-out only and deliberately speech-to-text agnostic: pair it with Hex (free/OSS), superwhisper, Wispr Flow, or any dictation tool to talk back to your agents. The onboarding lists options.

Requirements

Apple Silicon Mac (the TTS engine is MLX-based) and Python 3.10+. On other machines, point the engine at any OpenAI-compatible /v1/audio/speech endpoint (see engine remote mode).

License

MIT

About

Give your coding agents a voice: local TTS narration for Claude Code, Codex, and OpenCode (macOS)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages