> ## 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

> Run your first Replay workflow in 60 seconds.

# 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

```bash theme={null}
go install github.com/replay/replay@latest
```

Or use Docker:

```bash theme={null}
docker pull ghcr.io/replay/replay:latest
```

Verify the installation:

```bash theme={null}
replay version
```

## 2. Create a Workflow

Create a file called `hello.yaml`:

```yaml theme={null}
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

```bash theme={null}
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`:

```yaml theme={null}
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:

```bash theme={null}
replay run slow-a.yaml --concurrency 2
```

Both tasks run concurrently — total time is \~5s instead of \~8s.

## What's Next?

* Learn about [installation options](/replay/installation)
* Dive into [writing workflows](/replay/guides/writing-workflows)
* Explore [use cases](/replay/guides/use-cases) for QA and dev teams
