Skip to main content
Tell’s pipeline — sources, routing, transforms, and sinks — is configured in a single TOML file. The defaults work for most setups, so you only need to add what you want to change.

Minimal config

A working pipeline with one source and one sink:
This accepts SDK data on TCP port 50000 and writes it to ClickHouse. Everything else uses defaults.

Sources

Sources define where data comes in. You can run multiple sources at the same time.

TCP

The primary source for SDK data. SDKs send FlatBuffer batches over TCP.
Common options:

HTTP

HTTP source for web apps and the JavaScript SDK — supports JSONL and binary ingestion.

Syslog

Collect logs from syslog-compatible systems (RFC 3164/5424).
Syslog sources require a workspace_id since syslog clients don’t authenticate with API keys.

Sinks

Sinks define where data goes. Each sink has a name and a type.

Disk

Binary and plaintext file sinks for local storage.

Parquet

Columnar storage for data warehousing.
Compression options: snappy, zstd, lz4, uncompressed.

Arrow IPC

Fast columnar storage for hot data — readable with DuckDB, PyArrow, or Polars.

Forwarder

Send data to another Tell instance for edge-to-cloud deployments.
The api_key must be exactly 32 hex characters.

Routing

Routing connects sources to sinks. Data from a source goes through matching rules and is delivered to the configured sinks.
  • default — sinks for traffic that doesn’t match any rule
  • match — filter by source (exact name) or source_type ("tcp", "syslog")
  • sinks — where to send matched data (must exist in [sinks])
  • transformers — transforms to apply in order before writing
See Routing for match logic and Transforms for available transformers.

Transforms

Transforms modify data in routing rules before it reaches sinks.
Available types: pattern_matcher, redact, filter, reduce. See Transforms for configuration details.

Global defaults

Tune pipeline-wide defaults in [global]:
Most users don’t need to change these.