日本語 · English

RFC · v2.0 · 2026-05-18

Run your own MU

If you've ever looked at MU and thought "I could make something like this for my thing" — this document is for you.
Clothes, food, lodging, sound — anyone can stand up a small MU node and run it almost autonomously.

RFC v2 MIT · fork freely Reference: wearmu.com
What this is (3 lines)
1. Stand up one endpoint on your own domain.
2. Emit your products as Releases in JSON (stamped with time and place).
3. 95% of revenue flows to you, 5% to the origin Treasury — automatically split on every sale.
Contents
  1. Who this is written for
  2. Your case: 5 industry examples
  3. Fastest way to start tonight (30pt unlock)
  4. One-line spec (for engineers)
  5. Five primitives (Release/Node/Treasury/Identity/Lifecycle)
  6. Per-industry adapters
  7. Conformance levels
  8. What this unlocks
  9. Three things you can do tonight

Who this is written for

You are this person:

If you're a different person (mass-market acquisition, brand empire, SaaS for sale), this isn't for you. Use Shopify or similar.

Your case: 5 industry examples

For two years I've been running wearmu.com by myself: AI designing every hour, zero inventory, dispatching via POD partners (Printful / SUZURI / Gelato, region-routed automatically), prices rising with each sale — an autonomous brand.
What I learned: this isn't just about clothes. The pattern of releasing "today's one" with time and place engraved applies to almost any small business.

Person like youYour Release looks likeOperational load
Solo apparel
(MU origin)
Every hour, AI reads the moment of this time and place and generates a Tee. POD prints on order. Wake up, check the heartbeat, mostly do nothing else.
Solo yakiniku / bar At 17:00, release "tonight's omakase". Expires at 23:00. Reservations + payments via protocol. Enter ingredients in the morning, close up at night. No need to hold the customer list or run payments.
Small inn / cabin
(SOLUNA pattern)
Release room-nights by season × occupancy. Expires at check-out, goes into the retire flow. Cleaning only. Vacancy calendar syncs from Beds24 automatically.
Solo coach / teacher Each weekday at 19:00, release tonight's 60-min session. Expires when the session ends. Focus on the session itself. Acquisition, payment, and bookings all run on the protocol.
Field recordist Release a 30-sec field recording captured at this exact moment. GPS + timestamp are engraved. Record and upload. Sales and distribution are all automatic.
Common to all: 95% of revenue is yours, 5% flows to origin Treasury to keep MU's infrastructure alive and fund the next adapter.
Not a subscription. There's a release every day, and people who want it buy it. By design, you never hold inventory.

Fastest way to start tonight

If you're serious about wanting your own MU, this is enough to get you moving tonight.
But fully public would attract spec hunters, so I put a 30pt gate (first time totally free, one email) in front. MU style.

0. Prerequisites

  • You own a domain (e.g. mycafe.tokyo)
  • You have the will to release something (even one item per day)
  • You have one payment method (Stripe is fine — 30 minutes to set up if you don't)

1. Stand up /.well-known/mu/releases (15 min)

Add one JSON endpoint to your site. Example (Rust + axum):

async fn well_known_releases() -> impl IntoResponse {
    Json(json!({
        "schema": "mu.release.v2",
        "node": { "slug": "mycafe", "industry": "food",
                  "anchor": { "lat": 35.65, "lon": 139.70 } },
        "releases": [{
            "schema": "mu.release.v2",
            "id": "rel_2026-05-18T17:00Z_mycafe_omakase",
            "node": "mycafe",
            "kind": "food.tasting",
            "pinned_at": "2026-05-18T17:00:00Z",
            "lifecycle": { "expires_at": "2026-05-18T23:00:00Z" },
            "price": { "currency": "JPY", "base": 7800 },
            "settlement": { "treasury": "<your_solana_pubkey>",
                            "node_split_pct": 95, "origin_fee_pct": 5 }
        }]
    }))
}

2. Email me (5 min)

Send to mail@yukihamada.jp with "slug, industry, anchor, operator_pubkey" and a sentence about what you want to release. I reply, typically within one business day.

3. When you sell, the split happens automatically (0 min)

A Stripe webhook hits the settlement contract, 95% goes to you, 5% goes to the origin Treasury (Solana: DK29rBGCvP83LUNjUGVM6xt6qPy6rycBFopXbFkg9XvQ). You do nothing.

4. Tomorrow, release again (1 min)

Whether via cron or by hand, write the next release into your JSON. When expires_at passes, the previous one auto-retires. That's it.

Things that bite you:
  • release id must be unique (time + slug + short tag); making it content-addressable helps dedup
  • pinned_at must be UTC ISO8601 (drop the timezone and things break)
  • operator_pubkey can be empty at first. Get "it works" visible, then wire payment

One-line spec (for engineers)

MU Protocol turns any time-and-place-stamped, autonomously-operated product into a forkable, settlement-bound brand. Apparel was the first reference implementation. The protocol is industry-agnostic.

Five primitives

┌─────────────────────────────────────────────┐ │ 1. RELEASE immutable time/place-pinned │ │ product event │ ├─────────────────────────────────────────────┤ │ 2. NODE autonomous operator │ │ (city, venue, dojo, parcel) │ ├─────────────────────────────────────────────┤ │ 3. TREASURY settlement + fee split │ │ (origin / node / pool) │ ├─────────────────────────────────────────────┤ │ 4. IDENTITY pseudonymous participant log │ │ (wearer, diner, guest, …) │ ├─────────────────────────────────────────────┤ │ 5. LIFECYCLE optional expiry → retire/refund│ └─────────────────────────────────────────────┘

1 · Release — mu.release.v2

A Release is a JSON document with stable, content-addressable identity:

{
  "schema": "mu.release.v2",
  "id": "rel_2026-05-18T15:00Z_teshikaga_t01",
  "node": "teshikaga",
  "kind": "apparel.tee",
  "pinned_at": "2026-05-18T15:00:00Z",
  "pinned_to": { "lat": 43.490, "lon": 144.460,
                 "temperature_c": 14.2,
                 "weather_code": "scattered_clouds" },
  "generator": { "model": "gemini-3-pro-image",
                 "prompt_hash": "sha256:…",
                 "output_hash": "sha256:…" },
  "supply": { "kind": "open|fixed|bonding", "amount": 0 },
  "price": { "currency": "JPY", "base": 4900,
             "curve": "linear_micro_bond" },
  "lifecycle": { "expires_at": null },
  "settlement": { "treasury": "DK29rB…",
                  "node_split_pct": 95,
                  "origin_fee_pct": 5 },
  "embeds": ["wearmu.com/p/<id>"]
}

Required: schema, id, node, kind, pinned_at, settlement. Everything else is industry-optional.

2 · Node — mu.node.v2

Naming rule: nodes using the literal string "MU" in branding need a one-time origin approval. Nodes forking the protocol under a different name are free to operate without approval.

3 · Treasury

Settlement is industry-agnostic. Default contract exposes 4 ABI calls. Reference implementation: Solana + Anchor at contracts/mu-settlement/.
Origin Treasury: DK29rBGCvP83LUNjUGVM6xt6qPy6rycBFopXbFkg9XvQ · view on Solscan

Fee floor: 5% to origin Treasury. Nodes raising their split above 95% require a one-time slot fee (v2 placeholder).

4 · Identity

Explicit anti-pattern: the protocol never stores identifying name/face data by default. Reference implementations enforce this at the schema layer.

5 · Lifecycle

Releases may opt into mortality. When expires_at passes, the protocol emits LifecycleExpired(release_id). Operators may handle the event (refund issued, item returned to pool, etc).

Per-industry adapters

Each industry implements an IndustryAdapter trait. Reference adapters:

AdapterKindStatus
mu-adapter-apparelapparel.tee, apparel.hoodlive (apps/origin/)
mu-adapter-foodfood.menu, food.tastingreference candidate (kokon.tokyo)
mu-adapter-lodginglodging.room_nightreference candidate (SOLUNA / StayFlow)
mu-adapter-serviceservice.tournament, service.lessonreference candidate (JiuFlow)
mu-adapter-musicmusic.field_recordingsketch

Conformance levels

A node is MU Protocol Compliant if it:

  1. emits Release documents with schema: mu.release.v2
  2. registers as a Node with the protocol Treasury
  3. routes ≥5% of gross sales to origin Treasury via mu-settlement
  4. exposes a public read endpoint at /.well-known/mu/releases returning Release JSON
  5. respects the identity anti-pattern (no PII in public emits)

What this unlocks


Three things you can do tonight

① Read the code
Two years of my experiments are all in there. MIT. Fork and trim it for your needs.
② Read the live JSON
What wearmu.com is releasing right now. Your node should emit this shape.
③ Email me
Tell me what you're trying to make. I'll reply. No approval needed, I just want to know.

After two years running MU alone, I finally understood "this isn't only about clothes."
I want to put your "small MU" next to mine. That's the only reason I wrote this spec.

— yuki (operating wearmu.com)