Skip to content

motel

CI Go Report Card Go Reference

motel /mōˈtel/ noun mock opentelemetry. A synthetic signal generator for testing and developing observability pipelines.

motel is a synthetic OpenTelemetry generator.

Describe your distributed system in YAML and motel generates realistic traces, metrics, and logs — no live services required.

Install

brew tap andrewh/tap
brew install motel

Or with Go:

go install github.com/andrewh/motel/cmd/motel@latest

Or download a binary from the releases page.

Quick start

# my-topology.yaml
version: 1

services:
  gateway:
    operations:
      GET /users:
        duration: 30ms +/- 10ms
        error_rate: 1%
        calls:
          - users.list
  users:
    operations:
      list:
        duration: 15ms +/- 5ms

traffic:
  rate: 10/s
# Validate the topology
motel validate my-topology.yaml

# Generate traces to stdout
motel run --stdout --duration 5s my-topology.yaml

# Send to an OTLP collector
motel run --endpoint localhost:4318 --duration 30s my-topology.yaml

What it does

motel reads a YAML topology file describing services, operations, call patterns, latency distributions, and error rates. It walks the topology tree once per trace, producing spans that look like they came from real instrumented services. Every span carries synth.service and synth.operation attributes, and all signals include a motel.version resource attribute, so synthetic traffic is never mistaken for real data.

Use cases:

  • Test observability pipelines — feed realistic traces into collectors, backends, or dashboards without deploying services
  • Load test — generate trace traffic at controlled rates with configurable patterns (uniform, diurnal, bursty, custom)
  • Demo and prototype — show what your system's telemetry will look like before building it
  • Import real tracesmotel import infers a topology from existing trace data, so you can replay and modify production patterns

Signals

By default motel emits traces. Use --signals to add metrics and logs:

motel run --stdout --signals traces,metrics,logs --slow-threshold 200ms topology.yaml

All three signal types are driven by the same topology.

Documentation

Licence

Apache 2.0