Skip to content
Dagweave LocalBeta

Run Argo Workflows on your laptop. No cluster to set up.

Dagweave Local runs your workflow locally, using the same CLI commands you already use, for free.

The loop

Editing a workflow usually means pushing it to a cluster and waiting to find out you had a typo. Dagweave Local runs the same YAML on your machine instead.

Script steps run straight on your machine. Steps with a container image need Docker, and Dagweave Local starts and manages a small cluster for them.

$ dagweave run examples/pipeline.yaml
dagweave: running on the host, because every step is a command this machine can run directly
dagweave: steps run against this machine, so alpine:3.20 is not used
dagweave: steps share this machine's /tmp, which separate pods would not, so a step reading what another wrote there works here and would not on a cluster
hello
HELLO
5
HELLO has 5 letters

  Succeeded  produce                  4ms
  Succeeded  shout                    6ms
  Succeeded  count                    6ms
  Succeeded  finish                   3ms
  Succeeded  pipeline                 14ms

dagweave: Succeeded, 5 step(s), under /home/you/.local/state/dagweave/runs/pipeline

The commands you already use

You run the same CLI commands as if you were running the argo CLI.

argo submit wf.yaml   ->  dagweave submit wf.yaml
argo get NAME         ->  dagweave get NAME
argo logs NAME        ->  dagweave logs NAME
argo list             ->  dagweave list
argo lint wf.yaml     ->  dagweave lint wf.yaml
argo delete NAME      ->  dagweave delete NAME

Try an expression before you run it

Argo expressions are easy to get wrong, and you usually find out halfway through a run. Try one with dagweave expr first, and it tells you what Argo would get. Run dagweave lint and it checks every expression in the workflow.

$ dagweave expr 'asInt(inputs.parameters.m) * 2'
dagweave: column 7: nothing called inputs.parameters.m is in scope.
  asInt(inputs.parameters.m) * 2
        ^
Give it a value with --param m=VALUE.

Free

Dagweave Local is free to download and use, with no limits on what you run and no account needed.

Download Dagweave Local, free

curl -fsSL https://github.com/dagweave/local-releases/releases/latest/download/dagweave-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/') -o Dagweave && chmod +x Dagweave
curl -fsSL https://github.com/dagweave/local-releases/releases/latest/download/dagweave-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/') -o Dagweave && chmod +x Dagweave
$a = if ($env:PROCESSOR_ARCHITECTURE -eq 'ARM64') { 'arm64' } else { 'amd64' }; irm "https://github.com/dagweave/local-releases/releases/latest/download/dagweave-windows-$a.exe" -OutFile dagweave.exe

Using Homebrew? brew install dagweave/tap/dagweave

You'll need Docker installed if your steps run containers.

Next: run your first workflow

Install guide, if macOS or Windows blocks the download

All downloads and checksums

Develop locally. Ship to your cluster.

Test every change locally, straight from the Dagweave editor. When it works, run the exact same workflow on your cluster. Nothing to rewrite.

The Dagweave Local CLI is free. Want a UI? Connect it to the Dagweave app with a paid plan.

How to connect your machine

$ dagweave login
Open https://app.dagweave.com/device and enter BCDF-GHJK
Waiting for you to approve this machine in the browser...

$ dagweave listen
dagweave: connecting my-laptop to https://app.dagweave.com
dagweave: listening.