Environment Setup
Miru Alpha extensions support both JavaScript (goja) and Go (Scriggo). Below are the recommended setups for each.
JavaScript Extensions
Section titled “JavaScript Extensions”Client
Section titled “Client”To develop JS extensions you only need the Miru client (Windows / Android / Linux). The client bundles the goja engine, loads .js extensions, and hot-reloads them on change. Android works too, but you cannot see extension logs there, so debugging is easier on the desktop client.
Editor
Section titled “Editor”We recommend VSCode with JavaScript syntax highlighting and ESLint.
Debugging
Section titled “Debugging”After importing a .js file from the client’s Extensions page, edits are watched and recompiled automatically — no client restart needed.
Go Extensions
Section titled “Go Extensions”Go extensions are compiled and run by the Scriggo engine, so you need a local Go toolchain.
Toolchain
Section titled “Toolchain”- Install Go (1.22+ recommended).
- Use VSCode or GoLand with the official Go plugin for completion and hints.
- Pull in the official SDK:
go get github.com/miru-project/miru-core/pkg/extension/golang/sdkLocal Verification
Section titled “Local Verification”Place your extension in the miru-core Go extensions directory and drive its entry points (Search / Latest / Detail / Watch / Mirror) with the repo’s own tests to confirm the wiring:
go test ./pkg/extension/golang/extensions/example/...Backend and Frontend
Section titled “Backend and Frontend”A full Miru Alpha deployment has two parts:
- Backend miru-core (Go): runs extensions, performs network requests, and proxies media. Run it locally with
make run/go run ./cmd. - Frontend Flutter App: the UI and player, in the miru-alpha repository.
It is recommended to clone both repos for end-to-end testing.