# Development workbench

> Live audio, MIDI, hot reload, diagnostics, and agent-assisted iteration with maru dev.

Canonical: https://maru.audio/docs/dev
Documentation index: https://maru.audio/llms.txt

Run the workbench from your module project:

```bash
maru dev
```

`maru dev` takes the project directory as an optional argument and serves the
workbench on a local port. Add `--open` to open it in your browser; see
`maru dev --help` for the port, host and other options.

The workbench plays your module with its real engine and shows its face beside
the controls the host provides. Edits to the face reload it without
restarting the audio. Edits to the module declaration, parameters or
processing code rebuild the affected parts and reload the module.

## What the workbench provides

- Audio files, microphone input, computer keyboard, and MIDI when appropriate
- Parameter inspection and synchronized face edits
- Scope, spectrum, levels, and other diagnostics
- Browser errors, engine events, and build logs in one place
- Repeatable audio and MIDI fixtures for tests
- The fast project checks, run on demand

Sampler instruments can open sample bank directories directly in the
workbench; see `maru dev --help` and the [sampler bank guide](https://maru.audio/docs/sampler-banks.md).

## Work with an agent

The workbench is designed for a tight conversation with a coding agent. Ask for
a graph or interface change, listen to the result, inspect the diagnostics, and
send any compiler or verification error back to the agent. The
[Maru agent skill](https://maru.audio/docs/skills.md) gives a coding agent the authoring and
verification workflow, and [Agents and MCP](https://maru.audio/docs/agents-and-mcp.md) connects it
to the same operations the CLI runs.

The interface can use the whole web ecosystem. Three.js, WebGL, animation,
video, and custom visualization sit beside the audio-specific controls rather
than behind a separate native UI framework.

See [Check, build and export](https://maru.audio/docs/export.md) when the module is ready to leave
the workbench.
