MCPcopy Index your code
hub / github.com/ctoth/claudio

github.com/ctoth/claudio @v1.14.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.14.0 ↗ · + Follow
1,401 symbols 6,543 edges 181 files 723 documented · 52%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Claudio

Claudio is a hook-driven audio layer for coding agents. It listens to hook events from Claude Code, OpenAI Codex CLI, Gemini CLI, Qwen Code, and GitHub Copilot CLI, maps the event to a contextual sound, and plays that sound without making the agent wait for playback.

It can play different sounds for tool starts, tool successes, tool failures, prompts, notifications, completions, compaction, session starts, and subagent events. Bash commands are parsed, so git commit, npm test, and go build can each have their own sounds instead of sharing one generic shell sound.

Full documentation starts at docs/index.md.

Install

go install claudio.click/cmd/claudio@latest

Install hooks for detected agents:

claudio install

claudio install uses --agent auto --scope global by default. It detects Claude Code, Codex CLI, Gemini CLI, Qwen Code, and GitHub Copilot CLI, then installs hooks for the agents it finds. To force a single agent:

claudio install --agent claude --scope global
claudio install --agent codex --scope global
claudio install --agent gemini --scope global
claudio install --agent qwen --scope global
claudio install --agent copilot --scope global

After Codex hook installation, run /hooks in Codex and trust the Claudio hook. Use --scope project instead of --scope global when you want hooks only for the current repository.

Daily Commands

claudio status
claudio volume 0.4
claudio mute
claudio unmute
claudio uninstall --agent all --scope global

Optional agent command artifacts:

claudio install-commands --agent claude       # /claudio in Claude Code
claudio install-commands --agent codex        # $claudio skill in Codex
claudio install-commands --agent antigravity  # Antigravity skill and CLI command

Soundpacks

Claudio ships platform defaults and supports three custom soundpack forms:

  • Directory soundpacks under loading/, success/, error/, interactive/, completion/, and system/
  • JSON soundpacks that map Claudio sound keys to files anywhere on disk
  • Managed git soundpacks installed with claudio soundpack add

Useful commands:

claudio soundpack list
claudio soundpack init my-pack --from-platform
claudio soundpack validate ./my-pack.json
claudio soundpack install ./my-pack.json --default
claudio soundpack add gh:owner/repo --name my-pack --default
claudio soundpack update --all

Supported audio formats are WAV, MP3, and AIFF. See docs/soundpacks.md for layout, fallback chains, JSON mappings, validation, and git-backed soundpacks.

Tracking

Sound tracking is enabled by default. Claudio records resolved sounds and missing fallback candidates in a SQLite database under the XDG cache directory, then exposes that data through:

claudio analyze usage --show-summary --show-chains
claudio analyze missing --preset last-week

Use these reports to decide which sounds your custom pack should add next.

Build And Test

go build ./cmd/claudio
go test ./...

Extension points exported contracts — how you extend this code

AudioBackend (Interface)
AudioBackend represents a system for playing audio from various sources Implementations handle the actual audio playback [4 …
internal/audio/backend.go
XDGInterface (Interface)
XDGInterface defines the interface for XDG directory operations [2 implementers]
internal/config/config.go
PathMapper (Interface)
PathMapper defines how to map relative sound paths to candidate absolute paths [2 implementers]
internal/soundpack/soundpack.go
EventRecorder (Interface)
EventRecorder records a complete tracking event in a single atomic transaction. Implementations are stateless and gorout [1 …
internal/tracking/recorder.go
MapperOption (FuncType)
MapperOption configures a SoundMapper at construction.
internal/sounds/mapper.go
Decoder (Interface)
Decoder interface for audio format decoding. Decode takes a context.Context as its first argument so callers can cancel [4 …
internal/audio/malgo/decoder.go
SoundpackResolver (Interface)
SoundpackResolver resolves sound paths using a configurable mapping strategy [1 implementers]
internal/soundpack/soundpack.go
AudioSource (Interface)
AudioSource represents a source of audio data that can be played. Every source can be read; backends that prefer a raw f [3 …
internal/audio/source.go

Core symbols most depended-on inside this repo

Run
called by 348
internal/cli/cli.go
String
called by 276
internal/cli/install_command.go
NewCLI
called by 118
internal/cli/cli.go
Close
called by 96
internal/audio/backend.go
IsolateXDG
called by 76
internal/cli/testenv/testenv.go
Error
called by 58
internal/soundpack/soundpack.go
GetContext
called by 52
internal/hooks/parser.go
NewConfigManager
called by 44
internal/config/config.go

Shape

Function 1,105
Method 203
Struct 73
Interface 8
TypeAlias 8
FuncType 4

Languages

Go100%

Modules by API surface

internal/soundpack/soundpack.go38 symbols
internal/hooks/parser_test.go38 symbols
internal/cli/soundpack_git.go36 symbols
internal/cli/soundpack_command_test.go34 symbols
internal/config/config.go31 symbols
internal/hooks/parser.go29 symbols
internal/install/coverage_test.go28 symbols
internal/config/config_test.go28 symbols
internal/cli/cli.go27 symbols
internal/cli/cli_test.go25 symbols
internal/sounds/mapper.go21 symbols
internal/audio/malgo/registry_test.go20 symbols

For agents

$ claude mcp add claudio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact