Eventum Logo

Eventum

eventum.yml

Full schema reference for the main application configuration file — server, logging, paths, and default generation parameters.

The main application config controls how Eventum runs as a service with eventum run. It defines four sections: server settings, file paths, logging, and default generation parameters that all generators inherit.

eventum.yml
server:
  host: "0.0.0.0"
  port: 9474

path:
  startup: /etc/eventum/startup.yml
  generators_dir: /etc/eventum/generators
  logs: /var/log/eventum
  keyring_cryptfile: /etc/eventum/cryptfile.cfg

log:
  level: info
  format: plain

generation:
  timezone: UTC
  batch:
    size: 10000

The config supports both nested YAML and dot notation. For example, server.host: "0.0.0.0" is equivalent to the nested server: { host: "0.0.0.0" }. Both formats can be mixed in the same file.

Extra fields are forbidden — any unrecognized key will cause a validation error at load time.


server

Controls the built-in web server that exposes the UI and REST API.

ParameterTypeDefaultConstraintsDescription
server.ui.enabledbooleantrueEnable the web-based management UI.
server.api.enabledbooleantrueEnable the REST API endpoints.
server.hoststring"0.0.0.0"Non-empty.Address the server binds to.
server.portinteger9474>= 1Port the server binds to.

server.ssl

TLS/SSL settings for the server.

ParameterTypeDefaultConstraintsDescription
server.ssl.enabledbooleanfalseEnable HTTPS. When true, cert and cert_key are required.
server.ssl.verify_modestring or nullnull"none", "optional", or "required"Client certificate verification mode. "none" — no client certificate required. "optional" — request but don't require. "required" — reject connections without a valid client certificate.
server.ssl.ca_certpath or nullnullMust be an absolute path.CA certificate for verifying client certificates.
server.ssl.certpath or nullnullMust be an absolute path. Required when SSL is enabled. Must be provided together with cert_key.Server certificate file.
server.ssl.cert_keypath or nullnullMust be an absolute path. Required when SSL is enabled. Must be provided together with cert.Server certificate private key file.

All SSL paths must be absolute.

server:
  ssl:
    enabled: true
    cert: /etc/eventum/server.crt
    cert_key: /etc/eventum/server.key
    verify_mode: optional
    ca_cert: /etc/eventum/ca.crt

server.auth

HTTP basic authentication credentials for the UI and API.

ParameterTypeDefaultConstraintsDescription
server.auth.userstring"eventum"Non-empty.Username.
server.auth.passwordstring"eventum"Non-empty.Password.

Change the default credentials before exposing Eventum on a network.

server.mcp

Mounts the MCP server into the running server so an AI agent can build, validate, preview, and manage generators over HTTP. Disabled by default. The endpoint is served at <host>:<port><path> and protected by the server.auth credentials.

ParameterTypeDefaultConstraintsDescription
server.mcp.enabledbooleanfalseMount the MCP server over HTTP.
server.mcp.allow_writebooleanfalseAllow write tools — file writes and deletes, one-shot runs, and starting, stopping, registering, and unregistering generators. When false, the endpoint is read-only: discovery, validation, preview, and live status/log reads, but no changes. Enabling writes grants code execution on the host (see the warning below).
server.mcp.pathstring"/mcp"Leading /, no trailing /.Mount path for the MCP endpoint.
server.mcp.allowed_hostslist of strings[]Allowed Host header values (DNS-rebinding protection). Empty disables the check — suitable behind a trusted reverse proxy; a non-empty list enables it and rejects other hosts. Allowed Origin values are derived from this list, so browser-based clients on a listed host pass while foreign origins are rejected.
server:
  mcp:
    enabled: true
    allow_write: false
    path: /mcp
    allowed_hosts: []

allow_write over HTTP grants code execution: a connected agent can write a generator and preview it, and some plugins execute code on the host by design (the template plugin runs arbitrary Python; a script plugin runs a script you provide). Enable it only on a trusted network with a trusted agent, and change the default server.auth credentials first.

Local authoring doesn't need the server — run eventum mcp for a stdio server next to your agent. See Connect your agent.


path

File system paths used by the application. All paths must be absolute.

ParameterTypeDefaultConstraintsDescription
path.logspathRequired. Must be an absolute path.Directory for application log files. Created automatically if it doesn't exist.
path.startuppathRequired. Must be an absolute path.Path to the startup.yml file.
path.generators_dirpathRequired. Must be an absolute path.Directory containing generator subdirectories. Generator paths in startup.yml are resolved relative to this directory.
path.keyring_cryptfilepathRequired. Must be an absolute path.Path to the encrypted keyring file used for secrets.
path.repositoriespathnullMust be an absolute path when set.Path to the file listing the connected repositories. Defaults to repositories.yml next to path.startup.
path.generator_config_filenamepath"generator.yml"Single filename. Must end with .yml or .yaml.The expected config filename inside each generator directory. Used by the API to auto-detect valid generator directories.
path:
  startup: /etc/eventum/startup.yml
  generators_dir: /etc/eventum/generators
  logs: /var/log/eventum
  keyring_cryptfile: /etc/eventum/cryptfile.cfg
  generator_config_filename: generator.yml

log

Controls application logging — separate from the events that generators produce.

ParameterTypeDefaultConstraintsDescription
log.levelstring"info""debug", "info", "warning", "error", or "critical"Minimum severity level for log messages.
log.third_party_levelstring"warning""debug", "info", "warning", "error", or "critical"Minimum severity level for messages of third-party libraries. Independent of log.level, so running Eventum at "debug" doesn't bring the debug output of every dependency with it.
log.formatstring"plain""plain" or "json"Log output format. "plain" is human-readable, "json" is structured.
log.max_bytesinteger10485760 (10 MiB)>= 1024Maximum size per log file before rotation.
log.backupsinteger5>= 1Number of rotated log files to keep.
log:
  level: info
  third_party_level: warning
  format: json
  max_bytes: 52428800    # 50 MiB
  backups: 10

Log files

Each message goes to one file in path.logs, named after the part of the application it came from. Standard output receives all of them, so docker logs stays the combined view.

FileContents
main.logApplication startup, shutdown and everything not attributed below.
server.logREST API and HTTP server, including its startup and errors.
server_access.logOne line per HTTP request.
mcp.logMCP server.
generator_<id>.logEverything one generator does, including the delivery its output plugins perform.

With log.format: json the same files carry the .json extension instead.


generation

Default generation parameters inherited by all generators. Individual generators can override any of these in startup.yml.

ParameterTypeDefaultConstraintsDescription
generation.timezonestring"UTC"Valid IANA timezone. Min length: 3.Default timezone for generating timestamps.

generation.batch

Controls how events are grouped before being passed to output plugins:

ParameterTypeDefaultConstraintsDescription
generation.batch.sizeinteger or null10000*>= 1Maximum number of events per batch.
generation.batch.delayfloat or null1.0*>= 0.1Maximum time span, in seconds, of the event timestamps one batch covers.

*The defaults of 10000 and 1.0 apply as a pair when neither field is specified. If you set only one, the other defaults to null. At least one of size or delay must be set.

size is the primary limit. delay bounds the lag batching adds to delivery in live mode, so it forms the batches of timestamps that are still ahead of real time; timestamps that have already passed, and every timestamp in sample mode, are grouped by size. With no size set, delay is the only limit on how large a batch grows and therefore always applies — see Batching for the full breakdown.

generation.queue

Controls the internal queues between pipeline stages. These act as backpressure buffers — when a downstream stage is slower, the upstream stage will block once the queue is full.

ParameterTypeDefaultConstraintsDescription
generation.queue.max_timestamp_batchesinteger10>= 1Maximum timestamp batches in the input→event queue.
generation.queue.max_event_batchesinteger10>= 1Maximum event batches in the event→output queue.
generation.queue.max_event_bytesinteger or null268435456>= 1Maximum memory the event batches in the event→output queue occupy together, 256 MiB by default. null leaves it unlimited.

A batch is as large as the events in it, so the number of batches alone does not bound how much the queue holds: ten batches of ten thousand events come to twenty megabytes with small events and half a gigabyte with large ones. Both limits of the events queue apply, whichever is reached first, so max_event_bytes keeps that figure predictable no matter what the templates render. A single batch larger than the whole limit still passes through — holding it back would stall the pipeline — so keep batch.size in proportion to the size of an event.

What a generator occupies while it produces and writes a batch is a separate figure, and it follows batch.size — see how much memory a generator holds.

The memory each queue currently holds is reported on the instance page next to the batches it holds.

Concurrency and ordering

ParameterTypeDefaultConstraintsDescription
generation.keep_orderbooleanfalseWhen true, output plugins process batches sequentially to preserve chronological order.
generation.max_concurrencyinteger100>= 1Maximum number of concurrent write operations across all output plugins.
generation.write_timeoutinteger10>= 1Timeout in seconds for a single write operation.
generation:
  timezone: America/New_York
  batch:
    size: 20000
    delay: 2.0
  queue:
    max_timestamp_batches: 20
    max_event_batches: 20
    max_event_bytes: 536870912
  keep_order: false
  max_concurrency: 200
  write_timeout: 30

Complete example

eventum.yml
# Server
server:
  ui:
    enabled: true
  api:
    enabled: true
  host: "0.0.0.0"
  port: 9474
  ssl:
    enabled: true
    cert: /etc/eventum/server.crt
    cert_key: /etc/eventum/server.key
    verify_mode: none
  auth:
    user: admin
    password: s3cret

# Paths
path:
  startup: /etc/eventum/startup.yml
  generators_dir: /etc/eventum/generators
  logs: /var/log/eventum
  keyring_cryptfile: /etc/eventum/cryptfile.cfg

# Logging
log:
  level: info
  format: json
  max_bytes: 52428800
  backups: 10

# Default generation parameters
generation:
  timezone: UTC
  batch:
    size: 10000
    delay: 1.0
  queue:
    max_timestamp_batches: 10
    max_event_batches: 10
    max_event_bytes: 268435456
  keep_order: false
  max_concurrency: 100
  write_timeout: 10

What's next

On this page