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.