sklet agent

sklet agent [flags]

Description

Start a supervisor with no services and expose the control API on --listen, so a remote `sklp deploy <stack> --server https://host:<port>` can push the first manifest over the network. The node generates its own cert + token; nothing is deployed locally. This is the sklp equivalent of a kubelet that boots empty and waits to be scheduled onto.

Flags

FlagAliasesTypeDefaultEnvDescription
--listen—string:6464—TCP address to expose the control API on over TLS + a Bearer token (must NOT be the :9443/:9080 front door)
--space—string——ignored; kept so agent units rendered before its removal still start
--advertise—string——public host/IP written into the generated node config's server field (e.g. 141.94.106.171); empty leaves server blank for the operator to fill in
--gateway-mode—string——REQUIRED: front door for this node: per-space (native mux on :9080/:9443) or singleton (legacy traefik). No default — the mode is a node-level decision, never inferred from a deploy.yaml
--mesh-authority-url—string——meshauthority base URL (e.g. https://mesh.internal:4300); empty disables the cross-VM WireGuard mesh (ADR-006)
--mesh-authority-url-internal—string——ignored; kept so agent units rendered before its removal still start
--mesh-endpoint—string——this node's own dialable IP:port for the WireGuard mesh (its private cloud interface address + the mesh listen port, e.g. 10.70.0.10:51820); required when --mesh-authority-url is set
--node-relay-domain—string——on a front: relay any control API connection whose TLS SNI is <node-id>.<domain> to that mesh peer's own control API over the private network, TLS untouched (ADR-019). Needs the mesh and a wildcard DNS record *.<domain> on this node's public IP
--advertise-via—string——on a private origin: advertise https://<own mesh node-id>.<domain>:<port> as this node's server, the name the front's --node-relay-domain answers for; ignored when --advertise is set
--public-nic-interface—string——public NIC whose policy routing and SMTP egress the node keeps in place (node.yaml public_nic); empty disables it
--public-nic-source—string——source address routed out of the public NIC (the Additional IP); empty uses the NIC's DHCP address
--public-nic-table—int100—routing table holding the public NIC's default route
--public-nic-mark—int25—fwmark steering outbound SMTP into the public NIC's table
--mesh-cert-fingerprint—string——SHA-256 fingerprint (hex, colons optional) of meshauthority's self-signed certificate, printed by meshauthority at startup. Required to reach an https:// authority: there is no CA to validate it against, so the node pins this instead. Empty for a plain http:// authority.

Technical details

Technical details

Raw command JSON

{
  "path": [
    "sklet",
    "agent"
  ],
  "slug": "agent",
  "name": "agent",
  "short": "Run an empty control-plane node: open the control API and wait for a remote deploy",
  "long": "Start a supervisor with no services and expose the control API on --listen, so a\nremote `sklp deploy <stack> --server https://host:<port>` can push the first\nmanifest over the network. The node generates its own cert + token; nothing is\ndeployed locally. This is the sklp equivalent of a kubelet that boots empty and\nwaits to be scheduled onto.",
  "synopsis": "sklet agent [flags]",
  "flags": [
    {
      "name": "listen",
      "usage": "TCP address to expose the control API on over TLS + a Bearer token (must NOT be the :9443/:9080 front door)",
      "type": "string",
      "default": ":6464"
    },
    {
      "name": "space",
      "usage": "ignored; kept so agent units rendered before its removal still start",
      "type": "string"
    },
    {
      "name": "advertise",
      "usage": "public host/IP written into the generated node config's server field (e.g. 141.94.106.171); empty leaves server blank for the operator to fill in",
      "type": "string"
    },
    {
      "name": "gateway-mode",
      "usage": "REQUIRED: front door for this node: per-space (native mux on :9080/:9443) or singleton (legacy traefik). No default — the mode is a node-level decision, never inferred from a deploy.yaml",
      "type": "string"
    },
    {
      "name": "mesh-authority-url",
      "usage": "meshauthority base URL (e.g. https://mesh.internal:4300); empty disables the cross-VM WireGuard mesh (ADR-006)",
      "type": "string"
    },
    {
      "name": "mesh-authority-url-internal",
      "usage": "ignored; kept so agent units rendered before its removal still start",
      "type": "string"
    },
    {
      "name": "mesh-endpoint",
      "usage": "this node's own dialable IP:port for the WireGuard mesh (its private cloud interface address + the mesh listen port, e.g. 10.70.0.10:51820); required when --mesh-authority-url is set",
      "type": "string"
    },
    {
      "name": "node-relay-domain",
      "usage": "on a front: relay any control API connection whose TLS SNI is <node-id>.<domain> to that mesh peer's own control API over the private network, TLS untouched (ADR-019). Needs the mesh and a wildcard DNS record *.<domain> on this node's public IP",
      "type": "string"
    },
    {
      "name": "advertise-via",
      "usage": "on a private origin: advertise https://<own mesh node-id>.<domain>:<port> as this node's server, the name the front's --node-relay-domain answers for; ignored when --advertise is set",
      "type": "string"
    },
    {
      "name": "public-nic-interface",
      "usage": "public NIC whose policy routing and SMTP egress the node keeps in place (node.yaml public_nic); empty disables it",
      "type": "string"
    },
    {
      "name": "public-nic-source",
      "usage": "source address routed out of the public NIC (the Additional IP); empty uses the NIC's DHCP address",
      "type": "string"
    },
    {
      "name": "public-nic-table",
      "usage": "routing table holding the public NIC's default route",
      "type": "int",
      "default": "100"
    },
    {
      "name": "public-nic-mark",
      "usage": "fwmark steering outbound SMTP into the public NIC's table",
      "type": "int",
      "default": "25"
    },
    {
      "name": "mesh-cert-fingerprint",
      "usage": "SHA-256 fingerprint (hex, colons optional) of meshauthority's self-signed certificate, printed by meshauthority at startup. Required to reach an https:// authority: there is no CA to validate it against, so the node pins this instead. Empty for a plain http:// authority.",
      "type": "string"
    }
  ]
}

See also