日本語 · English
RFC · v2.0 · 2026-05-18
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.
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.
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 you | Your Release looks like | Operational 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. |
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.
mycafe.tokyo)/.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 }
}]
}))
}
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.
A Stripe webhook hits the settlement contract, 95% goes to you, 5% goes to the origin Treasury (Solana: DK29rBGCvP83LUNjUGVM6xt6qPy6rycBFopXbFkg9XvQ). You do nothing.
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.
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 paymentmu.release.v2A 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.
mu.node.v2Naming 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.
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).
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).
Each industry implements an IndustryAdapter trait. Reference adapters:
| Adapter | Kind | Status |
|---|---|---|
mu-adapter-apparel | apparel.tee, apparel.hood | live (apps/origin/) |
mu-adapter-food | food.menu, food.tasting | reference candidate (kokon.tokyo) |
mu-adapter-lodging | lodging.room_night | reference candidate (SOLUNA / StayFlow) |
mu-adapter-service | service.tournament, service.lesson | reference candidate (JiuFlow) |
mu-adapter-music | music.field_recording | sketch |
A node is MU Protocol Compliant if it:
schema: mu.release.v2mu-settlement/.well-known/mu/releases returning Release JSONmu-adapter-<industry> and operate a node with their own brand and treasury, paying only the 5% origin fee.pinned_at/pinned_to + output_hash fields give every product a permanent, content-addressable history.
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)