Skip to content

Daemon

daemon mode runs Oura in the background with no live output. It’s the mode you use in production — to continuously bridge chain data into another system, or to trigger an automated action whenever a particular event pattern shows up.

If you’re just getting started, the Quick Start walks through a minimal daemon config end to end.

Getting started

  1. Write a config file describing your pipeline — which source, filters, and sink to use (see Configuration below).

  2. Start the daemon, pointing it at your config:

    Terminal window
    oura daemon --config my_config.toml

    With no --config, Oura loads /etc/oura/daemon.toml by default:

    Terminal window
    oura daemon

The Examples section has ready-to-run daemon.toml files for every source, filter, and sink — a good starting point to copy and adapt.

Configuration

A config file describes one pipeline: a source, where to intersect the chain, a chain of filters, and a sink. Here’s the typical skeleton:

daemon.toml
[source]
type = "X" # the type of source to use
# custom config fields for this source type
foo = "abc"
bar = "xyz"
[intersect]
type = "W" # where to start reading the chain
[[filters]]
type = "Y" # the type of filter to use
# custom config fields for this filter type
foo = "123"
bar = "789"
[sink]
type = "Z" # the type of sink to use
# custom config fields for this sink type
foo = "123"
bar = "789"

Every section has a type field selecting one of the built-in components; the remaining fields depend on the type you choose.

  • [source] — where the data comes from. See Sources for the options and their fields.
  • [intersect] — where on the chain to start reading. See Intersect options.
  • [[filters]] — a sequence of transformations applied to each event, in order. This is an array, so you can list several. See Filters.
  • [sink] — where the data goes. See Sinks.

Full example

A pipeline reading from a Node-to-Node source and publishing to a Kafka topic:

daemon.toml
[source]
type = "N2N"
peers = ["backbone.mainnet.cardanofoundation.org:3001"]
[intersect]
type = "Tip"
[[filters]]
type = "SplitBlock"
[[filters]]
type = "ParseCbor"
[sink]
type = "Kafka"
brokers = ["127.0.0.1:53147"]
topic = "mainnet"