Skip to main content

Sounds and Settings

Agent notification events and the sounds attached to them, dampening, the full notification settings reference, and the per-project overrides that let one repository be louder or quieter than the rest.

Reviewed

Agent Notification Events

Completion

Fires when a watched agent finishes. Off by default: completion is less urgent than an agent needing you. Several agents finishing inside a 2-second window coalesce into one OS notification ("N agents finished their tasks") and one sound.

Waiting

On by default. Fires immediately with no debounce; a 200ms burst window catches simultaneous events. Two grace periods prevent false alarms: a 5-second spawn grace suppresses sounds from agents that start directly in a waiting state, and an 8-second boot grace stops agents that were already waiting from replaying their alerts when the app launches.

Waiting escalation

Re-notifies when a docked agent has been waiting longer than a configurable delay, for background agents you are not actively watching. Off by default; the delay is 1, 3 (default), 5 or 10 minutes. Several docked agents still waiting when it fires are grouped into one notification.

Note

Escalation applies only to docked agents, not to agents visible in the panel grid, and it fires even when the window is focused: the point is to catch background work you have lost track of.

Working pulse

A periodic audio cue while a watched or docked agent is actively working, giving you an ambient sense of progress without watching the UI. Off by default. It waits 10 seconds, then plays at random 8–10 second intervals on a separate channel that bypasses dampening, and stops when the agent leaves its working state or you focus the terminal.

Each pulse is detuned by a random amount up to ±15 cents. That is comfortably above the roughly 5–10 cent just-noticeable difference, so consecutive pulses are subtly different and slow auditory habituation without losing the sound's character. It is also gated on your OS Focus state: a system-level DND silences the pulse.

All-clear

Plays when every concurrently active agent has finished. Automatic, with no toggle, and only when two or more were running at once: a single agent finishing plays its completion sound instead. A 500ms debounce confirms the last one really is the last one. It always plays at full volume regardless of dampening.

Sound System

Daintree ships 14 sounds. Playback routes through the Web Audio API when a window is available and falls back to OS-level playback when no renderer is active.

SoundUsed for
chimeGeneral notification chime
completeAgent completed its task
waitingAgent waiting for input
errorError events
pingWaiting escalation (default)
pulseWorking pulse
all-clearAll agents finished
git-commitGit commit executed
git-pushGit push succeeded
git-push-errorGit push failed
worktree-createWorktree created
worktree-deleteWorktree deleted
agent-spawnedNew agent process started
context-injectedContext injection completed

Most sounds ship with three variants, picked round-robin with no immediate repeats, so a sound you hear often does not become a tic. Only error, git-push-error, pulse and worktree-delete are single-variant.

Dampening

When events fire in quick succession the system applies exponential volume decay: each consecutive sound plays at 70% of the previous volume, down to a 10% floor, resetting after 2 seconds of silence. At most 3 voices play at once, and when the pool is full, lower-priority sounds are dropped. Priority runs error, waiting, chime and complete, ping, pulse.

Chord detection handles the specific case of several agents completing within 2 seconds: rather than overlapping completion sounds at decaying volumes, one unified chord plays at full volume.

The Preview button beside each sound selector in settings always plays at full volume, bypassing dampening entirely: you are auditioning the sound, not simulating a burst.

UI feedback sounds

A separate category with its own toggle, off by default: short cues for git commit and push, worktree create and delete, agent spawn, and context injection. Independent of agent notification sounds, so you can run one without the other.

Settings Reference

Global notification and sound settings live in Settings > Notifications, in five blocks: Enable notifications, Agent notifications, Sound, Quiet hours, and UI feedback sounds. The two idleTerminalNotify rows are the exception and sit under Settings > General > Hibernation.

SettingDefaultScopeDescription
enabledOnGlobal onlyMaster toggle. Hides the bell and suppresses toasts and OS alerts. History still records.
completedEnabledOffPer-projectNotify when a watched agent finishes
waitingEnabledOnPer-projectNotify when a watched agent needs input
waitingEscalationEnabledOffPer-projectRe-notify when a docked agent is still waiting
waitingEscalationDelayMs3 minPer-projectEscalation delay: 1, 3, 5 or 10 minutes
workingPulseEnabledOffGlobal onlyPeriodic cue while a watched or docked agent works
quietHoursEnabledOffGlobal onlyEnable the scheduled quiet window
quietHoursStartMin1320 (22:00)Global onlyWindow start, minutes past midnight
quietHoursEndMin480 (08:00)Global onlyWindow end, minutes past midnight
quietHoursWeekdays[] (every day)Global onlyDays the schedule applies; empty means every day
groupByContextOffGlobal onlyGroup the inbox by project and worktree
soundEnabledOnPer-projectMaster sound toggle for notification events
completedSoundFilecomplete.wavPer-projectSound for completion
waitingSoundFilewaiting.wavPer-projectSound for waiting
escalationSoundFileping.wavPer-projectSound for escalation
workingPulseSoundFilepulse.wavGlobal onlySound for the working pulse
uiFeedbackSoundEnabledOffGlobal onlyUI feedback cues for git, worktree and agent lifecycle
idleTerminalNotify.enabledOnGlobal onlyRecord when every terminal in a background project is idle
idleTerminalNotify.thresholdMinutes60Global onlyIdle threshold. Presets 30m, 1h, 2h, 4h; range 15–1440 minutes.

Retention is not a setting: read entries are kept for 7 days, archived entries for 30 days, and unread entries indefinitely.

Per-Project Overrides

Open Project Settings and switch to the Notifications tab. Each setting has a checkbox header: unchecked, the field reads "(using global default)" and inherits your global value; checking it activates a per-project control. Mute project notifications from a toast or inbox kebab is the one-click shortcut for turning the completed and waiting toggles here off together.

Overridable per project: the completed, waiting and escalation toggles, the escalation delay, the sound toggle, and the three per-event sound selectors. Some are linked: clearing the waiting override also resets escalation and its delay, and clearing the sound toggle override resets all three sound selectors.

Global-only, and not overridable: the master toggle, working pulse and its sound, UI feedback sounds, quiet hours, group-by-context, and both idle-terminal settings.

Note
Per-project notification overrides are stored locally on your machine and are not committed to the repository, so everyone configures their own without affecting anyone else. For the full picture of what Daintree stores per-project versus per-machine, see Projects.