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.
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.
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.
| Sound | Used for |
|---|---|
chime | General notification chime |
complete | Agent completed its task |
waiting | Agent waiting for input |
error | Error events |
ping | Waiting escalation (default) |
pulse | Working pulse |
all-clear | All agents finished |
git-commit | Git commit executed |
git-push | Git push succeeded |
git-push-error | Git push failed |
worktree-create | Worktree created |
worktree-delete | Worktree deleted |
agent-spawned | New agent process started |
context-injected | Context 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.
| Setting | Default | Scope | Description |
|---|---|---|---|
enabled | On | Global only | Master toggle. Hides the bell and suppresses toasts and OS alerts. History still records. |
completedEnabled | Off | Per-project | Notify when a watched agent finishes |
waitingEnabled | On | Per-project | Notify when a watched agent needs input |
waitingEscalationEnabled | Off | Per-project | Re-notify when a docked agent is still waiting |
waitingEscalationDelayMs | 3 min | Per-project | Escalation delay: 1, 3, 5 or 10 minutes |
workingPulseEnabled | Off | Global only | Periodic cue while a watched or docked agent works |
quietHoursEnabled | Off | Global only | Enable the scheduled quiet window |
quietHoursStartMin | 1320 (22:00) | Global only | Window start, minutes past midnight |
quietHoursEndMin | 480 (08:00) | Global only | Window end, minutes past midnight |
quietHoursWeekdays | [] (every day) | Global only | Days the schedule applies; empty means every day |
groupByContext | Off | Global only | Group the inbox by project and worktree |
soundEnabled | On | Per-project | Master sound toggle for notification events |
completedSoundFile | complete.wav | Per-project | Sound for completion |
waitingSoundFile | waiting.wav | Per-project | Sound for waiting |
escalationSoundFile | ping.wav | Per-project | Sound for escalation |
workingPulseSoundFile | pulse.wav | Global only | Sound for the working pulse |
uiFeedbackSoundEnabled | Off | Global only | UI feedback cues for git, worktree and agent lifecycle |
idleTerminalNotify.enabled | On | Global only | Record when every terminal in a background project is idle |
idleTerminalNotify.thresholdMinutes | 60 | Global only | Idle 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.
enabled off, all toast and OS delivery is suppressed for every project regardless of per-project overrides, though the inbox keeps recording. If one project is not notifying you, check the global toggle first.