Skip to content

Environment Setup

Miru Alpha extensions support both JavaScript (goja) and Go (Scriggo). Below are the recommended setups for each.

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.

We recommend VSCode with JavaScript syntax highlighting and ESLint.

After importing a .js file from the client’s Extensions page, edits are watched and recompiled automatically — no client restart needed.

Go extensions are compiled and run by the Scriggo engine, so you need a local Go toolchain.

  • Install Go (1.22+ recommended).
  • Use VSCode or GoLand with the official Go plugin for completion and hints.
  • Pull in the official SDK:
Terminal window
go get github.com/miru-project/miru-core/pkg/extension/golang/sdk

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:

Terminal window
go test ./pkg/extension/golang/extensions/example/...

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.