muxr

Build muxr extensions

muxr extensions are Herdr plugins with an optional declarative phone UI. Bundled features and third-party plugins use the same public contract.

Create one

muxr plugin create my-plugin
cd my-plugin
muxr plugin check .
muxr plugin dev . --web

The generated plugin contains:

What extensions can add

Plugins compose the same flat primitive vocabulary used by muxr's bundled features:

The kernel retains pairing, encryption, permissions, secure storage, terminal rendering, foreground services, and OS bridges. Plugins supply product behavior without shipping React Native code, native modules, HTML, arbitrary WebViews, or executable phone UI.

{ "type": "code", "path": "data.body", "fileNamePath": "data.name" }
{ "type": "diff", "path": "data.patch" }

The app infers common languages from the file name, bounds tokenization work, and renders unknown formats as selectable plain text.

Install and manage

muxr plugin install ./my-plugin
muxr plugin list
muxr plugin update ./my-plugin
muxr plugin remove my-plugin

Plugins can also be installed from a pinned GitHub ref or exact npm version. Approval, disable, revoke, process isolation, payload limits, replay fencing, and stream cleanup are enforced by the host.

Contract and examples

Read the complete plugin authoring guide, the architecture, and the working plugins/ examples. Code, Status, Servers, Attachments, and Voice are useful references because they run through the same API available to your extension.

Usage is also a backend-boundary example: muxr invokes an exact pinned ccusage native package with --offline --no-cost, allowlists per-agent totals, and never executes the coding CLIs whose logs it reads.