Using Workflows via the Web UI

The workflow web interface is at /workflow. It requires login and the workflow permission. It provides a visual dashboard for creating, monitoring, and managing workflows without writing code or using an API client.

Getting There

Navigate to:

https://workingagents.ai/workflow

If you don’t have the workflow permission, you’ll see a 403 page. Ask an admin to grant it via the Access Control panel.


The Dashboard

The main page shows all workflows in reverse chronological order. Each workflow card displays:

The list refreshes automatically every 5 seconds.


Creating a Workflow

Click + New Workflow to open the creation form. Three fields:

Name – a short descriptive name for this workflow run.

Flow (JSON) – the step graph. This is a JSON object where the "start" key is the first step. Paste or type the flow definition directly. Example:

{
  "start": {
    "name": "search",
    "tool": "knowledge_search",
    "args": {"query": "{{input.topic}}"},
    "next": "notify"
  },
  "notify": {
    "name": "notify",
    "tool": "pushover_send",
    "args": {"message": "Search complete"},
    "done": true
  }
}

Input (JSON) – optional key-value data that step args can reference as {{input.key}}. Example:

{"topic": "AI agent security"}

Click Create to start the workflow. It appears in the list immediately with status running.


Monitoring a Running Workflow

Click any workflow card to expand it and see its steps. Each step row shows:

The expansion refreshes with the page’s 5-second auto-refresh cycle. For a fast workflow, it may already show completed by the time you expand it.


Handling Approval Gates

A step with "tool": null is an approval gate. In the expanded step view, it appears as:

Step: await_approval  |  Tool: (none)  |  Status: running
[Ready] button

The workflow is paused here. Nothing happens until a human clicks Ready.

When you click Ready:

  1. The button sends POST /api/workflow/:step_id/ready
  2. The executor picks up the step within one second
  3. Since there’s no tool to call, the step completes immediately
  4. The next step is created and starts running
  5. The page refreshes and shows the workflow progressing

This is the human-in-the-loop mechanism. Define any write operation behind an approval gate to require explicit human confirmation before it executes.


Cancelling a Workflow

On any workflow card with status running, a Cancel button appears. Clicking it:

  1. Sends DELETE /api/workflow/:id
  2. The workflow status updates to cancelled
  3. Any steps still pending or running do not execute (the executor checks workflow status before running steps)

Cancelled workflows remain visible in the list for audit purposes. They are never deleted.


Practical Examples

Run a Knowledge Search

{
  "start": {
    "name": "search",
    "tool": "knowledge_search",
    "args": {"query": "{{input.topic}}", "k": 5},
    "done": true
  }
}

Input: {"topic": "deployment checklist"}

The result appears in the step’s result field when done.

Send a Notification After a Task

{
  "start": {
    "name": "check",
    "tool": "get_counter",
    "args": {},
    "next": "notify"
  },
  "notify": {
    "name": "notify",
    "tool": "pushover_send",
    "args": {"message": "Counter value fetched", "title": "Workflow done"},
    "done": true
  }
}

Approval-Gated Write

{
  "start": {
    "name": "review",
    "tool": null,
    "args": {},
    "next": "write"
  },
  "write": {
    "name": "write",
    "tool": "knowledge_add",
    "args": {
      "title": "{{input.title}}",
      "content": "{{input.content}}",
      "scope": "general"
    },
    "done": true
  }
}

Input: {"title": "My Document", "content": "Document body..."}

The workflow pauses at review. Click Ready to proceed to the write.


Tips

Workflow IDs are timestamps. The ID is a millisecond timestamp, so id / 1000 tells you when it was created in Unix seconds.

Step results are JSON strings. The result field in the step view is the raw JSON-encoded output of the tool call. A string result looks like "Hello!", a list like [{...}].

Failed steps show the error. If a step fails, its result field contains the error message. The executor retries up to 3 times with increasing backoff (5s, 30s, 60s) before marking the workflow failed.

The Ready button only appears on running no-tool steps. If you don’t see it, the step is either not yet created, already done, or has a tool assigned.

Page auto-refreshes every 5 seconds. You don’t need to manually reload to track a running workflow.