Skip to content

mesh.register

Present one signed envelope; it is verified exactly as a datagram — bounds, staleness, signature, trust policy — and recorded as a rendezvous observation when it holds. The answer carries this node's own envelope and the candidates its registry holds, each verifiable end to end on its own signature. Registration grants nothing: the caller becomes a record, never an authorization. Changes this process's memory only.

Present one signed envelope; it is verified exactly as a datagram — bounds, staleness, signature, trust policy — and recorded as a rendezvous observation when it holds. The answer carries this node's own envelope and the candidates its registry holds, each verifiable end to end on its own signature. Registration grants nothing: the caller becomes a record, never an authorization. Changes this process's memory only.

  • command
  • experimental
  • module mesh
  • #mesh
  • #coordination
  • #discovery

Exposure

Where this one definition is reachable. Absence is explicit: a surface not listed does not carry it.

surfaceas
MCPtool majordomus_mesh_register
HTTPPOST /api/v1/mesh/register operationId mesh.register
command line—

Schemas

The canonical input and output, from the Rust types; the MCP tool schema and the OpenAPI parameters and responses are derived from these.

input · RegisterInput

The input of mesh.register: one signed envelope, exactly as the wire carries it.
propertytyperequireddescription
envelope object yes The envelope. Verified here exactly as a datagram would be — bounds, staleness, signature — before anything is recorded.
JSON Schema
{
  "additionalProperties": false,
  "description": "The input of `mesh.register`: one signed envelope, exactly as the wire carries it.",
  "properties": {
    "envelope": {
      "description": "The envelope. Verified here exactly as a datagram would be — bounds, staleness,\nsignature — before anything is recorded."
    }
  },
  "required": [
    "envelope"
  ],
  "title": "RegisterInput",
  "type": "object"
}

output · RegisterAnswer

What a registration answers: whether the envelope was accepted, and the candidates the rendezvous holds. Defined here beside the client; the capability re-exports it.
propertytyperequireddescription
accepted boolean yes Whether the presented envelope was accepted into the local registry.
candidates array yes The signed envelopes of the nodes this rendezvous currently holds, the answering node's own included. Each verifies on its own signature; the rendezvous vouches for nothing.
refusal string | null no Why not, when it was not.
JSON Schema
{
  "$defs": {
    "Envelope": {
      "description": "The wire envelope: the advertisement plus its signature.",
      "properties": {
        "caps": {
          "default": [],
          "description": "The transports the node serves: `http`, `mcp`, `ws`. Sanitized capability\nawareness, never an authorization.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "ep": {
          "default": [],
          "description": "Where this node answers HTTP, as `host:port` authorities, at most\n`MAX_ENDPOINTS`. Advisory: an endpoint is where to *try*, identity is the key.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "inst": {
          "$ref": "#/$defs/InstanceId",
          "description": "This run of the node."
        },
        "name": {
          "default": "",
          "description": "A human name for the node. Presentation only.",
          "type": "string"
        },
        "pk": {
          "description": "The Ed25519 public key, hex. The node id is derived from it, never carried:\na field that could disagree with the key is a field somebody will forge.",
          "type": "string"
        },
        "repos": {
          "default": [],
          "description": "The repositories this node serves, as mesh repository ids (32 hex, see\n`super::repository`): derived from the repository's root commits or its declared\nidentity, never from a path, so that one repository cloned on two machines is\nrecognised as one. A digest discloses nothing; a reader that serves the same\nrepository recognises it, anyone else learns only \"some repo\".",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "rt": {
          "description": "The runtime slot (16 hex): which server of this node — one per checkout. Empty in\nversion 1. Omitted from the signed bytes when empty, so a version-1 signature\nverifies unchanged.",
          "type": "string"
        },
        "seq": {
          "description": "Monotonic per instance: a replayed datagram carries a counter the reader has\nalready seen and is dropped.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "sig": {
          "description": "Ed25519 over `Advertisement::signing_bytes`, hex.",
          "type": "string"
        },
        "ts": {
          "description": "Seconds since the Unix epoch at signing time.",
          "format": "uint64",
          "minimum": 0,
          "type": "integer"
        },
        "v": {
          "description": "Protocol version.",
          "format": "uint32",
          "minimum": 0,
          "type": "integer"
        },
        "ver": {
          "default": "",
          "description": "The executable version, informational.",
          "type": "string"
        }
      },
      "required": [
        "v",
        "pk",
        "inst",
        "seq",
        "ts",
        "sig"
      ],
      "type": "object"
    },
    "InstanceId": {
      "description": "One run of a node: 16 hex characters of OS entropy, new at every process start. A\nrestart keeps the node id and changes this, which is how a reader tells \"the same\nnode came back\" from \"the same process is still there\".",
      "type": "string"
    }
  },
  "description": "What a registration answers: whether the envelope was accepted, and the candidates\nthe rendezvous holds. Defined here beside the client; the capability re-exports it.",
  "properties": {
    "accepted": {
      "description": "Whether the presented envelope was accepted into the local registry.",
      "type": "boolean"
    },
    "candidates": {
      "description": "The signed envelopes of the nodes this rendezvous currently holds, the answering\nnode's own included. Each verifies on its own signature; the rendezvous vouches\nfor nothing.",
      "items": {
        "$ref": "#/$defs/Envelope"
      },
      "type": "array"
    },
    "refusal": {
      "description": "Why not, when it was not.",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "accepted",
    "candidates"
  ],
  "title": "RegisterAnswer",
  "type": "object"
}

Policies

benchmark
required — a target on every transport the exposure declares; the cases are the input type's
cache
disabled — every call runs the handler

Benchmark targets

Derived from the registry for this repository: one requirement per transport, and the cases the input type provides. The whole matrix is on the benchmarks page.

transportstatecasestargets
directcovered1refused
mcpcovered1refused
httpcovered1refused

Searches the titles and descriptions of every page this site publishes.