UserTasks has refocused on an open-source headless workflow engine. What changed and why →

Open source · Apache-2.0

The headless workflow engine you drive from code.

Design processes on a visual canvas or as JSON, put people in the loop with typed tasks, connect any API — then run, change and watch all of it from the REST API, the MCP server or the CLI. Self-host it or use the cloud.

shell
npm install -g @usertasks/cli
The UserTasks workflow designer showing an invoice approval workflow with the User Task settings panel open
  • API-first: every screen is an endpoint, described by OpenAPI 3.1
  • A command for every operation, plus config as code
  • Every run, call and change in one exportable event stream

Use cases

What teams build on it.

Human steps inside your own apps, approvals you can prove, agents with a person in the loop, an integration hub — and a home for workflows moving off SharePoint, Nintex or K2.

Everything from the CLI

Create, update, delete and monitor — from your terminal or CI.

usertasks talks only to the public API, so it obeys the same permissions as any client. Log in with your browser or an API key, keep profiles for dev and prod, and pipe JSON into the rest of your tools.

Create

Create anything from a file

Every REST operation is a command. Send JSON or YAML with -f, or set fields inline.

shell
usertasks workflows create -f invoice-approval.json
usertasks email-templates create --set name="Invoice approved" \
  --set subject="Invoice {{invoice_number}} approved" --set html_body=@approved.html
usertasks log-destinations create -f splunk.json

Update

Edit workflows in your editor

Pull the draft as JSON, change it, push it back and publish. Runs keep the old version until you do.

shell
usertasks workflows definition <id> -o json > wf.json
$EDITOR wf.json
usertasks workflows update <id> -f wf.json
usertasks workflows publish <id> --set notes="CFO step over 50k"

Delete

Clean up safely

Destructive commands confirm on a terminal and take --yes in scripts. Deletions check dependencies first.

shell
usertasks roles delete <id>
usertasks references bulk-delete --set ids:='["…","…"]' --yes
usertasks api-keys revoke <id> --yes

Monitor

Watch it run

Tail the live event stream with filters, list failed runs, check log shipping.

shell
usertasks logs tail --category workflow --severity warn
usertasks runs list --status failed
usertasks log-destinations status <id>
Terminal output of exporting, updating and publishing a workflow with the usertasks CLI
Real output: edit a workflow as a file and publish it.
Terminal output of usertasks logs tail streaming live workflow events
Real output: logs tail following runs as they happen.

CLI guide · Every command · Recipes: dev → prod, CI, monitoring

Ship logs anywhere

Your workflows, in the log platform you already use.

Run transitions, step logs, integration calls, agent runs, task changes, audit and security events — one normalised stream, delivered at least once, usually within seconds. No request bodies, prompts or secrets ever leave.

  • Splunk HECHTTP Event Collector, index and sourcetype
  • Datadog LogsEvery site, tags and facets out of the box
  • OpenTelemetryOTLP/HTTP to any collector or vendor
  • WebhooksSigned HTTPS batches (HMAC-SHA256)
  • Live tailServer-Sent Events, the CLI and the SDK
Settings, Log Export page listing a Splunk HEC destination and a webhook destination with healthy status and lag
Terminal output creating a Splunk destination from a file and checking its status
  • Filters by category, type glob, severity and workflow
  • Send-test button, lag and last-error per destination
  • Pull API with a cursor and an SSE stream for your own consumers
Observability guide

Config as code

Review processes like code. Promote them like code.

Export a workspace to files, review the change in a pull request, diff it against production and apply it. Secrets stay out of Git. Or let GitHub sync commit every change and deploy pinned commits for you.

shell
usertasks --profile dev config export ./config
git commit -am "Invoice approval v2"
usertasks --profile prod config diff ./config --exit-code
usertasks --profile prod config apply ./config
Config as code and GitHub sync
Terminal output of usertasks config export and config diff

Performance

A fast execution engine.

Single-digit-millisecond API and MCP calls, a queue that clears hundreds of runs a second, and expressions evaluated in about a microsecond — so the engine is never the slow step in your process.

REST API responses
4–8 ms
MCP tool calls
3–5 ms
200 queued workflows, start to finish
< 1 s
Evaluating a template expression
~1 µs
A member’s task list, row-level security applied
~40 ms

Medians measured on our benchmark (app and database on one machine). Your numbers depend on network and hosting — see /docs/performance.

Run it your way

Same code, two ways to run it.

Self-hosted

Apache-2.0. Start on Supabase with zero extra configuration, then move each area — database, auth, storage, email, secrets — to AWS, Azure, Google Cloud or your own servers. Docker image included.

  • Your data stays where you put it
  • One reversible usertasks-admin switch per area
  • Fully on-premises and air-gapped when you need it
Deploy anywhere

Cloud

The same engine at usertasks.com, run and upgraded by the team that builds it.

  • Nothing to install — start in the browser
  • Same API, MCP server, CLI and docs
  • Move to self-hosting any time with config as code
Sign in

Start with the docs. Ship with the CLI.

Every node, function, permission, MCP tool and command is documented — generated from the code, so it matches what you run.

Open source (Apache-2.0) — source release coming at launch