Hermes Workflow

A canvas for multi-step agent runs.

Package
visual-workflow
Version
1.0.0
Requires Hermes
>= 0.21
License
Apache-2.0
Tools
5 workflow_design_* tools
Hooks
none
Status
Released — 1.0.0

What it is

Hermes Workflow adds a visual designer for agent workflows: five node kinds on a canvas, executed by a plugin-owned sequential runner. Designs are plain JSON, runs are resumable state on disk, and agent steps execute through the host’s own model seams — never through a second scheduler or a background thread.

You can build the graph in the canvas, save it, run it from chat or from the dashboard, and answer an approval gate from either. A run that pauses survives a restart, a closed browser and a fresh process.

PieceRole
Canvas (three copies)Drag-and-drop editor for trigger, agent, condition, approval and output nodes, plus sticky notes
/workflow commandCreate, list, open, save, validate, run and approve from chat
Five toolsworkflow_design_{save,load,validate,run,respond} for the agent
Dashboard APIREST routes the web and Desktop canvases call
RunnerSequential, resumable execution with gates, retries, deadlines and delivery
SchedulerRecurring runs as real Hermes cron jobs, never an in-process timer

The five node kinds

There are exactly five runnable kinds, and the schema, the validator, every canvas and the runbook all agree on them. A sixth canvas node, the note, is a sticky label for the person reading the canvas — it has no ports, takes no edges, and is dropped by the converter.

KindRequiredOptionalBehaviour
triggertrigger_modescheduleExactly one per design; manual or schedule
agentpromptprofile, model, schema, inputs, timeout, retriesA model call through the host’s spawn seam
conditionexpression—Evaluates an upstream output; false prunes the branch
approvalquestioncontext, options, timeout_minutes, on_timeoutParks the run until a person answers, or the deadline passes
output—deliver, targetCollects parents’ outputs; optionally delivers them
note—text, colorCanvas annotation only; never reaches the runner

Edges are after: [<parent-id>...]: a node runs once all of its parents have run. x and y are widget-only coordinates and never affect execution order.

Install

hermes plugins install https://github.com/Printaga/Hermes-Workflow.git
hermes plugins enable visual-workflow
hermes plugins doctor .

To develop on a checkout in place, clone it into the plugin directory and adopt it, because a symlink is discoverable but cannot be tracked:

git clone https://github.com/Printaga/Hermes-Workflow.git ~/.hermes/plugins/visual-workflow
hermes plugins adopt visual-workflow
`hermes plugins adopt` refuses paths that resolve outside the plugins directory.

Quick start

  1. Start from a template

    examples/*.designer.json holds four working designs: hello-world, daily-digest, approval-demo and review-gate. The canvas’s start from a template picker loads one as an unsaved draft; GET /designs/templates returns the same list with the graph inline for scripting.

  2. Build and validate

    Click a palette kind to add a node, drag to arrange, and drag from an output port to another node to add an edge. Press Validate until it reports valid.

  3. Save it

    Copy JSON, then /workflow save <name> <json>, or use the workflow_design_save tool. Names must match ^[a-z0-9][a-z0-9_.-]{0,63}$ because the name becomes a filename.

  4. Run it

    workflow_design_validate on the stored graph, then workflow_design_run with the design name. The result tells you whether it finished, paused at a gate, or failed and why.

::preview{file="<REPO_ABS>/widgets/designer.html"}
The dependency-free standalone canvas that chat previews use. One static file, no dependencies.