monad — install
Quick Start your Monads
A monad is a daemon: a process you run that holds a live .me kernel, answers for a namespace over HTTP, and registers itself on the mesh so other monads and users can find it. Running it is what turns a namespace from a local concept into something actually reachable.
Clone
git clone https://github.com/neurons-me/monad.git
cd monad
Choose a runtime
🔷 TypeScript — the only runtime that exists today. Stable, 2.1.1.
cd Typescript
npm install
npm run test
🦀 Rust — not available yet.
🐍 Python — not available yet.
Run it
A monad needs a seed — the 64-hex key its cryptographic identity and every derived secret trace back to. Provide your own:
SEED="Tetragramaton" npm run dev
Or, running the compiled build instead of the dev server:
SEED="Tetragramaton" node dist/server.js
That process is now a monad: it resolves paths for the namespace set by ME_NAMESPACE — a separate setting, not derived from the seed; unset, it falls back to your machine's hostname — and it starts heartbeating onto the mesh so other monads and apps can find it.
Talk to it
Two ways in, same tree either way.
Over the wire — any app, any device, any language, from outside the process:
GET /profile/name
Host: username.cleaker.me
"username" // that's it
In-process — if you're writing against the kernel the monad holds, directly:
me["@"]("jabellae"); // your digital identity
me.profile.name("José Abella"); // declare meaning
me("profile.name"); // "José Abella" — resolve meaning
Full syntax reference: me.whatever(what).
One tree, many monads
Run this on any machine, and that machine can host one or many monads, all tuned to the same namespace — a laptop, a phone, a relay, a VM. Nothing about the namespace changes when you add another one. What changes is which monad is currently answering for it, and that's decided by subtractive synthesis, not by picking one in advance:
all monads registered for the namespace
− expired entries (heartbeat stopped)
− unhealthy entries (health check failing)
─────────────────────────────────────────
→ route to the highest-scored remaining monad
No central coordinator decides what's alive. Each monad declares itself alive by heartbeating; silence means absence. The namespace stays stable — reachable at the same me:// address — even as the individual monad behind it restarts, crashes, or gets replaced by another one on a different machine. The tree doesn't move. The session holding it does.
Full mechanism: Subtractive Synthesis.