Skip to content
dawg
Install
Theme
Appearance

Docs

Sessions

Windows, the dawgd daemon, names, forks and resuming.

Many windows, one song

The first dawg window in a folder starts dawgd, a per-session daemon, in the background. It is the only writer: every window sends its edits there, and every accepted commit is saved atomically and broadcast to all windows. The daemon also owns the transport and the audio player, so play in one window plays everywhere and every window draws the same hit line.

Each new window without --track claims the first track no other window has focused, in score order. Open three terminals on a three-track song and each one gets a different instrument. A fourth gets a draft track that joins the score on its first edit. --track always wins.

A crashed daemon’s socket and lock are reclaimed by the next window. If dawgd can’t start (or DAWG_DAEMON=0), windows fall back to the snapshot under a file lock. /status shows which mode a window is in.

Names

A new session starts as untitled and names itself from what you play, like dusty basement funk. dawg keeps a local musical fingerprint and only asks a model for a name when the music actually changed, in the background, and falls back to a local name such as 96 bpm drums offline. /rename <name> sets your own name and stops auto-naming; /rename --auto hands it back.

Forks and resuming

/fork [name] snapshots the song into a new session with a numbered name (night drive → night drive 2) and switches this window to it. Undo in a fork steps back past the fork point into the parent’s history. /sessions lists recent sessions, /resume opens a picker and /resume <n|name|id> switches directly. From the shell, dawg sessions prints the list and dawg --session <name|id> attaches to one; dawg --new starts another.

Where it lives

Session state lives in .dawg/ in the folder you ran dawg in. Config lives in ~/.config/dawg.