Skip to content

Quick Start

Get Metis running locally and submit your first workflow run in minutes.

Prerequisites

1. Clone the Repository

bash
git clone https://github.com/jaeaeich/metis.git
cd metis

2. Start All Services

bash
docker-compose up -d

This starts six services:

ServicePortDescription
metis-api8080HTTP API
metis-ui80Web UI
metis-engine-nextflowNextflow engine runtime
postgres5432State and log storage
valkey6379Engine registry and PIDs
nats4222Job queue and events

Wait ~15 seconds for health checks to pass, then verify:

bash
curl http://localhost:8080/service-info

3. Submit Your First Run

Send a POST /runs request with workflow parameters:

bash
curl -s -X POST http://localhost:8080/runs \
  -H "Content-Type: application/json" \
  -d '{
    "workflow_engine": "Nextflow",
    "workflow_engine_version": "25.10.4",
    "workflow_type": "NFL",
    "workflow_type_version": "DSL2",
    "workflow_url": "/root/workflows/main.nf",
    "workflow_params": {
      "input": "/data/samples.csv",
      "outdir": "/results/output"
    },
    "workflow_engine_parameters": {
      "profile": "docker",
      "resume": "true"
    },
    "tags": {
      "project": "my-pipeline"
    }
  }'

The response contains the run ID:

json
{ "run_id": "01965c3f-1234-7abc-..." }

4. Monitor the Run

Via Web UI

Open http://localhost — the UI shows run status, logs, and state history in real time.

Via API — Poll Status

bash
RUN_ID="<your-run-id>"
curl http://localhost:8080/runs/$RUN_ID/status
json
{ "run_id": "...", "state": "RUNNING" }

Via API — Stream Status (SSE)

bash
curl -N http://localhost:8080/runs/$RUN_ID/status/stream

Events are emitted on each state transition; the stream closes automatically when the run reaches a terminal state.

Via API — Stream Logs (SSE)

bash
curl -N http://localhost:8080/runs/$RUN_ID/logs/stream

Use ?after_seq=N to resume from a known position:

bash
curl -N "http://localhost:8080/runs/$RUN_ID/logs/stream?after_seq=42"

5. Fetch Full Run Details

bash
curl http://localhost:8080/runs/$RUN_ID

Returns the complete run log including command, exit code, stdout/stderr summary, and all task logs.

6. Cancel a Run

bash
curl -X POST http://localhost:8080/runs/$RUN_ID/cancel

7. Stop and Clean Up

bash
docker-compose down

To also remove persisted volumes:

bash
docker-compose down -v

What's Next

  • Engine Configuration — customise the engine, add validated parameters, set workdir layout
  • Deployment — production Docker Compose setup, Kubernetes, and environment variables
  • API Reference — complete endpoint documentation

Proprietary software. All rights reserved.