Core pipelines
Use for inline filtering, field transforms, aggregation, and routing calculations beside source events.
Understand CoreAllSource Core matches accepted event types and runs ordered Filter, Map, Reduce, Window, and Branch operators in process. Source events stay unchanged; pipeline counters remain inspectable.
Current boundary: results are not persisted or published automatically, definitions and state are in memory, and hosted gateway routes are not exposed.
Accepted source event
order.placed
Computed result
in process{ "group": "GBP", "value": 4827 }
Source event
Stored
Counters
Tracked
Result sink
Not automatic
Execution contract
Ordered operators
Operators execute in array order. Filter can halt processing; stateful operators keep values inside that pipeline instance.
Keep or drop an event by field value using eq, ne, gt, lt, or contains.
field: "status" · op: "eq" · value: "paid"
Update one field with uppercase, lowercase, trim, multiply, or add transforms.
field: "currency" · transform: "uppercase"
Maintain count, sum, average, minimum, or maximum state with optional grouping.
function: "sum" · group_by: "currency"
Run a nested aggregation over tumbling, sliding, or session windows.
tumbling · sliding · session
Map a string field value to a route name stored on the computed result.
field: "region" · branches: { "uk": "gbp" }
Operator shape exists, but external lookups are not wired. Current Core code emits placeholder values.
Do not use for production joins yet
Valid Core payload
This example matches the current Rust `PipelineConfig` serde shape, including required `id` and `output` fields and nested window aggregation.
{
"id": "7af7b1c8-6165-4c42-9081-e9d20d811780",
"name": "daily-revenue",
"description": "Paid revenue grouped by currency",
"source_event_types": ["order.placed"],
"operators": [
{
"type": "filter",
"field": "status",
"value": "paid",
"op": "eq"
},
{
"type": "window",
"config": {
"window_type": "tumbling",
"size_seconds": 86400,
"slide_seconds": null,
"session_timeout_seconds": null
},
"aggregation": {
"type": "reduce",
"field": "total",
"function": "sum",
"group_by": "currency"
}
}
],
"enabled": true,
"output": "daily-revenue-by-currency"
}Lifecycle endpoints
These routes live on Core's internal server, normally port 3900. Keep Core behind your network boundary.
/api/v1/pipelinesRegister an in-memory pipeline
/api/v1/pipelinesList registered definitions
/api/v1/pipelines/statsRead processing statistics
/api/v1/pipelines/{id}Read one definition
/api/v1/pipelines/{id}/statsRead one pipeline's statistics
/api/v1/pipelines/{id}/resetClear operator state and counters
/api/v1/pipelines/{id}Remove a definition
`output` is currently descriptive configuration. It does not create a projection, write another event, or publish a topic.
System boundary
“Stream processing” covers several jobs. AllSource Core owns one of them: ordered computation beside accepted history.
Use for inline filtering, field transforms, aggregation, and routing calculations beside source events.
Understand CoreUse for live accepted-event feeds to clients. These feeds do not publish Core pipeline results.
See real-time analyticsUse source events to rebuild queryable state. This remains separate from a pipeline's configured output name.
See replay use caseUse when transport, durable output topics, connectors, consumer offsets, or independent scaling are primary.
Direct answers
AllSource Core can match accepted event types and run an ordered, in-process pipeline of Filter, Map, Reduce, Window, Branch, and Enrich operators. Source events remain unchanged. Enrich external lookups and automatic output persistence are not complete today.
No. Core computes matching pipeline results in process and tracks processing statistics, but the configured output name does not currently persist a projection or publish a topic. Applications that need a durable output must add that integration.
Not yet. Pipeline definitions, window buffers, reduction state, and counters live in memory. Register definitions again after restart and rebuild any required state from source events.
Not currently. Pipeline lifecycle endpoints exist on the self-hosted Core server. The hosted public gateway does not expose those routes, so this page treats stream processing as a self-hosted Core capability.
No. Core pipelines suit transformations that should execute beside the event store. Use Kafka, Redpanda, Flink, or another stream platform when you need cross-service transport, independent scaling, connector ecosystems, durable output topics, or separate consumer offsets.
Build from evidence
Published 469K events/sec result measures Core batch ingestion, not arbitrary operator chains. Benchmark your definition, durability mode, and hardware.