Getting started

An OpenGroove firmware is one wasm32 module that implements a small C ABI. The host owns the clock and the hardware; your firmware turns input events into audio, a framebuffer and LED colors. The same .wasm file runs in the browser today; a native Linux runtime for hardware is in development.

This page takes you from nothing to a sound in the browser.

1. Get the SDK

The SDK download opens soon. It contains the ABI header (include/opengroove.h), the web and headless runtimes, example firmwares and the og command-line tool used below. Until then, the ABI reference has everything a firmware needs, and the Build bench plays any .wasm you load.

You need a compiler that emits wasm32. Plain clang with the wasm32 target works, as do emcc, wasi-sdk, Zig and Rust.

2. Scaffold

sh
og new my-box
cd my-box

og new writes a working firmware you can start from. This is the template it uses, straight from the SDK:

See cli/templates/default/main.c in the SDK.

The ABI reference explains every function in it.

3. Build

sh
og build

This writes build/my-box.wasm. Any toolchain that emits wasm32 works too; see the ABI reference for the flags.

4. Hear it

Drop build/my-box.wasm onto the Playground and press a pad. Or run the live-reload loop, which rebuilds on save and hot-swaps the firmware without stopping audio:

sh
og dev

5. Check it, share it

sh
og verify build/my-box.wasm

og verify runs the same headless checks the Hub runs before it shows a badge. See Checks, then submit it.

Writing with an AI agent? Point it at AGENTS.md and have it run og verify until it passes.