@flashyos/create-mesh-node
v0.1.0
Published
Join the FlashyOS mesh in one command — scaffolds a charter, handshake, directory fragment and emit workflow, then verifies you pass L2 before it finishes. No account, nothing published.
Downloads
42
Maintainers
Readme
@flashyos/create-mesh-node
Join the FlashyOS mesh in one command.
npm create @flashyos/mesh-node -- yourdomain.com --email [email protected]The pieces to reach L2 and appear in the directory already existed — a charter, a handshake, a directory fragment, a verifier. What did not exist was a way to get all of them, correct, without assembling them by hand. That is a consulting engagement, not an on-ramp. This is the on-ramp.
What it does
It writes the four documents a node publishes, plus the page that explains them:
| File | What it is |
|---|---|
| flashyos.roles.json | Your AAO charter — passes every static check as written. This is what reaches L2. |
| public/.well-known/flashyos.json | Your flashyos/1 handshake — the first file a stranger reads. |
| directory.fragment.json | Your directory/1 fragment — how your org enters the record. |
| .github/workflows/mesh.yml | Re-checks L2 on every push, gated to your default branch. |
| MESH_NODE.md | What was written, and the two things left to do. |
Then it does the thing a scaffolder usually only promises: it runs the real
validators — validateCharter, every static conformance check, and
validateHandshake — over its own output and prints whether you reached L2. The
claim is checked, not asserted.
✓ L2 reached — the charter passes every static check and the handshake is valid.No account, nothing published
It writes files into your repository and verifies them locally. It never phones home, mints a credential, or publishes anything. Serving the two files at your domain — and everything after — is yours:
https://yourdomain.com/.well-known/flashyos.json
https://yourdomain.com/flashyos.roles.jsonThen confirm it from the outside, the same way anyone else can:
npx @flashyos/conformance yourdomain.com --level 2Options
npm create @flashyos/mesh-node -- <domain> --email <[email protected]> [options]
required
<domain> your org domain, e.g. acme-robotics.com
--email <email> the human accountable for the org (L2 needs a named human)
options
--name <name> org name (default: derived from the domain)
--slug <slug> org slug (default: derived from the domain)
--description <s> one line on what the org is for
--repo <name> repository name (default: the slug)
--dir <path> target directory (default: current directory)
--force overwrite files that already exist--email is required and load-bearing: L2's human-accountable check exists
precisely so a charter cannot be honest without naming a real person, and this
tool will not emit a placeholder there.
As a library
Every step is exported, so the scaffold can be composed rather than shelled out to:
import { deriveSeed, buildFiles, verifyFiles } from '@flashyos/create-mesh-node';
const seed = deriveSeed({ domain: 'acme-robotics.com', email: '[email protected]' });
const files = buildFiles(seed); // { 'flashyos.roles.json': '…', … }
const report = verifyFiles(seed); // { l2: true, handshakeValid: true, … }The charter is a floor, not a ceiling — three honest roles, one of them gated. Edit it to describe your real organisation, then re-run conformance to confirm you still pass. The rule that never bends: an agent may draft, but a human at your org approves before anything is real.
Part of FlashyOS · join the mesh · Apache-2.0
