Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cerulion.com/llms.txt

Use this file to discover all available pages before exploring further.

Workspaces store graphs in graphs/<name>.yaml and schemas in schemas/<Name>.yaml. Both are YAML.

Graph YAML

The graph file extension is .yaml, not .crln. There is no policy: block in graph YAML — trigger policy lives only on the macro side.
name: perception          # required
prefix: robot1            # optional; omitted line => default = hostname without ".local"
nodes:
  - id: camera            # required, unique instance ID
    type: camera          # required, node type = folder name (YAML key is `type`)
    inputs:               # optional
      - name: image       # input port name (matches #[input] field)
        source: camera/image   # "<node_id>/<output_name>"
    outputs:              # optional
      - name: image       # output port name (matches #[output] field)
        schema: sensor_msgs/Image   # optional; "::" auto-normalized to "/"
        max_slice_len: 6291456      # optional usize; runtime resolves if omitted (final fallback 16 MiB)
        history_size: 2             # optional usize, default 0 (volatile; >0 = transient-local replay depth)

Top-level fields (GraphConfig)

FieldTypeRequiredDefaultMeaning
nameStringYes—Graph name.
prefixStringNohostname without .localTopic prefix. Omitted line resolves to the hostname at load time.
nodeslist of node entriesNoemptyNode instances in the graph.

Node entry fields (NodeDef)

FieldYAML keyTypeRequiredDefaultMeaning
ididStringYes—Unique instance ID.
node_typetypeStringYes—Node type = folder name. The YAML key is type (serde rename).
inputsinputslistNoemptyInput bindings.
outputsoutputslistNoemptyOutput ports.

Input fields (InputDef)

FieldTypeRequiredMeaning
nameStringYesInput port name (matches the #[input] field).
sourceStringYes<node_id>/<output_name>.

Output fields (OutputDef)

FieldTypeRequiredDefaultMeaning
nameStringYes—Output port name (matches the #[output] field).
schemaStringNoemptySchema name. :: is normalized to /.
max_slice_lenusizeNo(runtime-resolved; final fallback 16 MiB)Max slice length. Skipped from output when none.
history_sizeusizeNo00 = volatile; > 0 = transient-local replay depth.
A reference fixture (perception graph with nodes camera/detector/imu/fusion/tracker/diagnostics, topology only) exists at cerulion_core/fixtures/test_graph.yaml.

Schema YAML

cerulion schema create Reading writes schemas/Reading.yaml with a skeleton:
schemas:
  Reading:
    description: ""
    fields:
      # Add fields: type name
A populated schema the parser accepts:
schemas:
  Reading:
    description: "A single sensor reading"
    fields:
      float64 value:
      uint64 timestamp:
The top-level schemas: map holds one entry per schema name; each entry has a description string and a fields: map keyed by type name.

Schema info hash

cerulion schema info reports the schema name, description, field count, and Hash: 0x<16-hex>. The hash is the FNV-1a hash of the schema name.