This is the multi-page printable view of this section. .
Reference
1 - CLI Reference
Overview
verify
Statically validate a pipeline. Checks schema, topology invariants (no cycles, no orphans, source has no in-edges, sink has no out-edges, at least one source→sink path), CEL predicate compilation, Starlark script compilation, job configuration, and semantic lint.
| Flag | Default | Description |
|---|---|---|
--config | (required) | Pipeline YAML file |
--strict | false | Upgrade warnings to errors |
test
Run contract test suites against the real in-process engine. Test files declare injection points, expected captures, and DLQ assertions.
run
Execute a pipeline. Job pipelines (with run.mode: job) run under the
jobs manager with scheduling and catchup. --config-dir starts a
multi-pipeline daemon with the admin surface.
| Flag | Default | Description |
|---|---|---|
--config | — | Single pipeline file |
--config-dir | — | Directory of pipeline files (daemon mode) |
--runtime | ./eventboat.yaml | Runtime config (telemetry endpoints) |
--data-dir | data | SQLite storage directory |
--ephemeral | false | In-memory store (nothing persists) |
trigger
Manually fire a job pipeline once, optionally with parameters (backfill).
explain
Deterministic walkthrough of a pipeline. With --message, performs real
CEL evaluation and Starlark dry-run on the sample. With --topology,
renders the DAG (mermaid + ASCII).
replay
Re-inject dead letters (--dlq), a spool window (--spool --from N),
or one job run’s dead letters (--job <run-id>) into a live pipeline.
repl
Evaluate CEL predicates and Starlark scripts against one sample message without running a pipeline.
mcp
Start the MCP server for AI agents.
| Flag | Description |
|---|---|
--stdio | Speak MCP over stdin/stdout (for agent hosts) |
--http | Serve MCP over HTTP with Admin REST + SSE + UI |
--config-dir | Deploy pipelines at startup |
2 - Configuration
Top-level sections
| Section | Required | Purpose |
|---|---|---|
apiVersion / kind / metadata | ✅ | Resource identity (K8s convention) |
sources | ✅ (≥1) | Topology: where events come from |
transforms | optional | Topology: what happens to events |
sinks | ✅ (≥1) | Topology: where events go |
run | job pipelines only | Job scheduling (mode/schedule/overlap/catchup_window) |
parameters | job optional | Typed job parameters with defaults |
constants | optional | Read-only values visible to scripts and predicates |
hooks | optional | Lifecycle hooks (failure/success → inline sink) |
limits | optional | Per-pipeline resource limits |
edge_defaults | optional | Default edge attributes |
codecs | optional | Named codec declarations |
dlq | optional | Dead-letter policy |
Three-section topology
Nodes are organized by section; edges declared on the downstream side via from:
Edge attributes
Attributes on from elements:
| Attribute | Type | Description |
|---|---|---|
when | string or object | CEL predicate (or {lang: cesql, expr: ...}) |
delivery | object | {retries, backoff, timeout_ms} |
required | bool | false = best-effort (failure doesn’t block siblings) |
buffer | object | {max_events, strategy} |
Variable substitution
${VAR}— environment variable (unset = error)${?VAR}— optional (unset = omit key)${constants.name}— pipeline constant- Applies to all string values
Built-in plugins
Sources
| Name | Key config |
|---|---|
kafka | brokers, topics, group_id |
http_server | listen, max_body_bytes |
cron | expression (5-field) |
file | path (tail) |
sql | driver (mysql/postgres/sqlite), query, cursor, pagination |
Sinks
| Name | Key config |
|---|---|
kafka | brokers, topic |
http | url, timeout_ms |
file | path (JSON lines) |
drop | (none — discards) |
Codecs
| Name | Key config |
|---|---|
json | (none) |
raw | (none) |
csv | columns or header |
avro | schema (inline or file) |
protobuf | descriptor_set (file path) |