Skip to content
dawg
Install
Theme
Appearance

Terminal music workstation

A DAW in your terminal, dawg.

Chat with an agent to build loops. Watch every note land on a piano roll that scrolls above your prompt. Open another window and pick up another instrument.

Terminal
$ curl -fsSL https://dawg.sh/install | sh
Real frames from dawg’s renderer, recorded with a fake clock by site/scripts/record-demo.ts. The agent turns are scripted; every tool call goes through dawg’s own validation and score operations.

Make a loop the way you’d describe it

  1. Ask for a groove

    Type what you want to hear. A streaming agent writes it with typed tools; each call is checked, dry-run against the score and committed as its own revision. Esc stops a turn and keeps what landed. Ctrl-Z takes any of it back.

  2. Watch it on the highway

    Notes stream down a piano roll toward the hit line, sustains stretch across beats, and drums get a lane per voice. The prompt stays live underneath, so you can steer while the loop plays.

  3. Open a window, get a player

    Every terminal window on a session shares one song and one transport. Each new window takes the next instrument, so three windows on a three-track song bring back drums, bass and keys.

  4. Local first, your own models

    The session is a folder in your project. Direct commands, playback and rendering work offline with no account. Bring an AI Gateway key, or use the Claude, Codex or Devin subscription you already pay for through xcb.

Three windows, one band

Run dawg in a project and the first window starts dawgd, a local daemon that is the only writer for that session. Every window after it joins the same song: play in one and they all play, edit in one and they all redraw. Each plain dawg takes the first track no other window has, and a window beyond the last track gets a fresh draft track.

Kill a window, or the daemon, and nothing is lost. The next window reclaims the session from the atomic snapshot on disk. If the daemon can’t start, windows fall back to a file lock.

What happens when you hit Enter

  1. Plain commands run locally

    tempo 96, pattern hat every 0.5, reverb 0.3 0.7 and the rest of the command language never leave your machine.

  2. Everything else goes to the agent

    It gets a compact brief of the song, capped at 12 KiB, and edits only through typed tools: tracks, notes, drums, effects, automation.

  3. Each tool call is checked three times

    The tool’s own argument checks, the planner’s bounded validator and a dry run of the score reducer. A call that fails goes back to the model as a diagnostic.

  4. Accepted calls become revisions

    Each one is committed separately and broadcast to every window, with a card in the activity strip and an undo that drops exactly that change.

In the box

Install

dawg runs on Bun 1.3.14 or newer. The script installs Bun if it’s missing, downloads the latest release tarball from GitHub, checks it against the release’s SHA256SUMS and installs it with bun add -g.

Install script

Terminal
$ curl -fsSL https://dawg.sh/install | sh

Read the script before you pipe it.

Release tarball with Bun

Terminal
$ bun add -g https://github.com/hraness/dawg/releases/download/v0.2.0/hraness-dawg-0.2.0.tgz

Each release ships the tarball, SHA256SUMS and a build provenance attestation.

From source

Terminal
$ git clone https://github.com/hraness/dawg.git
$ cd dawg
$ bun install --frozen-lockfile
$ bun run dawg

For sound, install ffplay (from FFmpeg) or SoX; on macOS dawg falls back to afplay. Then run dawg in any folder and see the quickstart.

Questions

Do I need an account?
No. The session lives in .dawg/ in your project, and typed commands such as tempo 96, hit kick at 0 or reverb 0.3 work offline. You only need a provider for the agent.
Which models does the agent use?
opus-5.5 or sol-6.1 through Vercel AI Gateway, switched with /model. dawg login creates a gateway key with the Vercel CLI, or dawg login --xcb routes turns through a Claude, Codex or Devin subscription with xcb.
Where does the sound come from?
A built-in deterministic synthesizer. Playback streams into ffplay or SoX play, or afplay on macOS. dawg auth status shows which one it found. DAWG_AUDIO=0 runs silent.
Can the agent wreck my song?
Every tool call is validated and dry-run before it commits, and a call planned against an old revision is rejected or replayed only when nothing it touches has changed. Each accepted call is one revision, so undo removes exactly that change.
Is it on npm?
Not yet. Install with the script or from the GitHub Release tarball until a trusted publisher is configured for @hraness/dawg.
What does it cost?
dawg is free and MIT licensed. Agent turns are billed by your gateway account or count against your own subscription.