Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.ellomas.com/llms.txt

Use this file to discover all available pages before exploring further.

Quickstart

This guide walks through installing Replay and running your first workflow.

Prerequisites

  • A working internet connection (for the HTTP example)
  • Go 1.25+ or Docker (for installation)

1. Install Replay

go install github.com/replay/replay@latest
Or use Docker:
docker pull ghcr.io/replay/replay:latest
Verify the installation:
replay version

2. Create a Workflow

Create a file called hello.yaml:
name: hello-replay
steps:
  - name: greet
    type: print
    message: "Hello, Replay!"

  - name: check-http
    type: http
    request:
      method: GET
      url: https://httpbin.org/get
    extract:
      origin: $.data.origin
    assert:
      - ["$.status", "eq", 200]
      - ["$.data.origin", "not_null"]

  - name: report
    type: print
    message: "Request came from IP: {{ origin }}"

3. Run It

replay run hello.yaml
You should see:
🚀 Starting workflow: hello-replay
----------------------------------------
• Running greet [print]...
   Hello, Replay!
PASS (0ms)
• Running check-http [http]... PASS (843ms)
• Running report [print]...
   Request came from IP: 123.456.789.0
PASS (0ms)
----------------------------------------
✨ Workflow hello-replay finished: SUCCESS (total 845ms)
The print steps display their message on an indented line between the step header and the PASS status.

4. Understand What Happened

  • Step 1 (greet): Printed “Hello, Replay!” using the print step type
  • Step 2 (check-http): Made a GET request to httpbin.org, extracted the origin IP into a variable, asserted status 200 and non-null origin
  • Step 3 (report): Reused the extracted {{ origin }} variable in a second print statement
The state bag carried origin from step 2 into step 3 automatically.

5. Run Multiple Workflows

Create slow-a.yaml:
name: Slow Task A
steps:
  - name: sleep
    type: shell
    command: sleep 3
  - name: done
    type: print
    message: "Task A finished"
---
name: Slow Task B
steps:
  - name: sleep
    type: shell
    command: sleep 5
  - name: done
    type: print
    message: "Task B finished"
Run them in parallel:
replay run slow-a.yaml --concurrency 2
Both tasks run concurrently — total time is ~5s instead of ~8s.

What’s Next?