The command-line DAW
Field treats music production like software development. Arrangement, tempo, takes, plugin chains, and mixes live in diffable files. Every action is a CLI command. Every render is reproducible.
$ field init still-waters
initialized empty project in ./still-waters
$ field ace generate --prompt "dusty boom-bap drums, 84 bpm" --seed 7
recipe committed · sounds/drums/boombap.yaml
$ field record --track lead-vocal --punch 42.2.1..46.1.1
take 3 → active · takes 1–2 kept
$ field build //songs/still-waters/mix:main
build ok · 14 targets · 11 cached · 2.4s
$ git commit -am "chorus to 16 bars, vocal take 3"
$ ▍
Why
Traditional DAWs bury production state inside proprietary project files: hard to inspect, impossible to review as a diff, unreliably scriptable, versioned as an opaque binary. Nothing is reproducible.
Field inverts this. A project is a Git repository of schema-validated YAML plus content-addressed audio. Audio is never edited in place — placement and editing are metadata, so changing a mix is a one-line diff, and branching an arrangement is just branching.
A chorus extension and a vocal take swap read like a code review — because they are one.
@@ sections @@
- section: chorus
start: 33.1.1
- length: 8 bars
+ length: 16 bars
@@ tracks/lead-vocal @@
- take: 2
+ take: 3
chain: [deess, eq, comp]
Toolkit
Think Bazel for music production, attached to a real-time recording engine. An explicit dependency graph builds your stems, busses, and mixes — cached by content, deterministic by design.
field build //songs/opener/mix:main
Stems, busses, and mixes are targets in a dependency graph with content-addressed caching. Same inputs, same audio — on any machine, next year.
field record --punch 42.2.1..46.1.1
A native real-time engine drives recording from the CLI — transport, click, loop, punch-in by musical time, straight to a new take.
field choose
Every performance is numbered and kept. Audition takes, pick one active, swap it back later. Renders of generative sounds work the same way.
field ace generate --prompt "…" --seed 7
SuperCollider programs, ACE-Step prompts, and vocals from text are committed as seeded recipes with provenance. The music is reproducible, not a one-off export.
field watch
Change a file, hear the result. Watch mode rebuilds what your edit touched and nothing else, so the terminal feels like an instrument.
git branch bright-mix
Branch a mix, bisect a regression, review an arrangement PR. Everything Git gave software teams, Field gives your record.
Agents
A coding agent cannot meaningfully operate a graphical DAW. It can operate Field, because Field is files and commands — the things agents are already good at. Every verb the CLI has is exposed over MCP, so an agent can comp takes, sweep a filter across renders, or draft a rough mix while you stay on the instrument.
You make the music. The agent works the console. The repo keeps both of you honest.
Roadmap
field
The full production system in your terminal: project model, build graph, generation, recording, watch mode. Mac-first, built in the open on GitHub.
Field One
A native visual surface on the same engine — transport, metering, arrangement, take audition. Not a place state hides: nothing in the UI that isn't in the files.
audiofield.io
Host your projects, run Field One in the browser, and collaborate on music the way software teams collaborate on code — forks, pull requests, and all.
audiofield.io
When a song is a repository, everything Git unlocked for code opens up for music: fork a track and remix it, send a pull request with a better drum bounce, publish your stems and techniques for anyone to learn from — with provenance built in.
Like GitHub: free for open source music, paid for private projects. Large audio lives in object storage; history lives in Git.
$ field clone audiofield.io/kaya/midnight-drift
$ git checkout -b my-remix
$ field build //mix:main && field play
# your version. their credit.
# that's open source music.