Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

executions.protocol

The live channel's contract

What it is

Where the WebSocket is, how a subscription and a reconnect are expressed, what the server writes, and the JSON Schema of every message — derived from the Rust types that implement it, so a client validating against this is validating against the implementation. OpenAPI cannot describe a socket; this is where that contract lives.

Descriptor

Canonical id
executions.protocol
Module
executions
Kind
query
Stability
behaviorallyverified
Provenance
declared
Source
apps/majordomus-cli/src/capability/builtin/executions.rs
Cache
disabled
Benchmark
required
Tags
executionscontrol-planeprotocol

Run

query
A query. It reads and changes nothing.

This capability takes no input.

GET /api/v1/executions/protocol

Projections

InterfaceAsWhere
MCP toolmajordomus_execution_protocol-
MCP resourcemajordomus://executions/protocol-
HTTPGET /api/v1/executions/protocolSwagger
Command linemajordomus executions protocol-

Schemas

Input · Empty
{
  "type": "object",
  "additionalProperties": false,
  "description": "No input.",
  "title": "Empty"
}
Output · ProtocolReport
{
  "type": "object",
  "properties": {
    "protocol_version": {
      "type": "string",
      "description": "The version of the event protocol this server speaks."
    },
    "websocket": {
      "type": "string",
      "description": "Where the live channel is: a path on this same server, not a second daemon."
    },
    "subscription": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ParameterView"
      },
      "description": "How the subscription is expressed, and what a reconnect sends."
    },
    "heartbeat_seconds": {
      "type": "integer",
      "format": "uint64",
      "minimum": 0,
      "description": "How many seconds of quiet before the server pings."
    },
    "max_connections": {
      "type": "integer",
      "format": "uint",
      "minimum": 0,
      "description": "How many live channels this process serves at once."
    },
    "max_replay": {
      "type": "integer",
      "format": "uint",
      "minimum": 0,
      "description": "How many retained events a scoped connection replays before going live."
    },
    "event_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The event types a client may receive, from the one enum that defines them."
    },
    "stream_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The stream's own control messages."
    },
    "event_schema": {
      "description": "The JSON Schema of an event, derived from the Rust type."
    },
    "stream_schema": {
      "description": "The JSON Schema of a control message, derived from the Rust type."
    },
    "limits": {
      "$ref": "#/$defs/LimitsView",
      "description": "What the store keeps, so a client knows what it may ask for."
    }
  },
  "required": [
    "protocol_version",
    "websocket",
    "subscription",
    "heartbeat_seconds",
    "max_connections",
    "max_replay",
    "event_types",
    "stream_types",
    "event_schema",
    "stream_schema",
    "limits"
  ],
  "description": "The answer of `executions.protocol`: the live channel's whole contract, derived from\nthe types that implement it.",
  "title": "ProtocolReport",
  "$defs": {
    "ParameterView": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Its name."
        },
        "description": {
          "type": "string",
          "description": "What it does."
        },
        "required": {
          "type": "boolean",
          "description": "Whether it must be given."
        }
      },
      "required": [
        "name",
        "description",
        "required"
      ],
      "description": "One query parameter of the live channel."
    },
    "LimitsView": {
      "type": "object",
      "properties": {
        "max_executions": {
          "type": "integer",
          "format": "uint",
          "minimum": 0,
          "description": "How many executions are remembered."
        },
        "max_events": {
          "type": "integer",
          "format": "uint",
          "minimum": 0,
          "description": "How many events are retained per execution."
        },
        "max_log_chars": {
          "type": "integer",
          "format": "uint",
          "minimum": 0,
          "description": "The longest a single log line may be."
        },
        "max_running": {
          "type": "integer",
          "format": "uint",
          "minimum": 0,
          "description": "How many executions run at once."
        },
        "max_subscriber_queue": {
          "type": "integer",
          "format": "uint",
          "minimum": 0,
          "description": "How far a live channel may fall behind before it is told to resynchronise."
        }
      },
      "required": [
        "max_executions",
        "max_events",
        "max_log_chars",
        "max_running",
        "max_subscriber_queue"
      ],
      "description": "What this process's execution store keeps."
    }
  }
}

Examples

These are the capability's own benchmark cases: the same inputs the benchmark runs and the OpenAPI document shows.

default
{}