Nhost · Hasura · PostgreSQL

Chain AI agent steps into workflows other systems can start.

Six node types on a canvas. Four ways a run can begin. A run's position lives in Postgres, so it can pause for a human to approve and resume whenever they do.

Multi-tenant throughout — organizations, roles, a usage quota, and two permission layers.

6

node types

4

trigger types

2

permission layers

156

automated checks

What a run looks like from outside

An endpoint per trigger, configured per trigger.

Each webhook sets its own HTTP method, where it expects its secret, which payload fields are mandatory, and whether the caller gets an immediate 202 or waits for the result. All of it is enforced at the endpoint — a wrong method gets 405 naming the right one, and a missing required field gets 400 with no run created.

The run itself walks the graph: prompt a model, call an API, branch on what the model said, stop for an approval, save the result.

An external system starts a run
curl -X POST https://<app>/api/webhooks/<trigger-id> \
  -H 'x-webhook-secret: 9f3c…' \
  -d '{"text": "Charged twice and the page crashed"}'
llm_call → http_request → condition → db_write
The response, when set to wait
{
  "workflow_run_id": "7c1e…",
  "status": "completed",
  "duration_ms": 1846,
  "output":  { "text": "negative", "model": "llama-3.1-8b-instant" },
  "outputs": [ { "key": "verdict", "value": "negative" } ]
}

Try it

Four seeded accounts, so the rules are visible rather than described.

Sign in as two of them side by side. The interesting one is owner-b — paste an Org A workflow id into their URL bar and the page reports that it does not exist, because for them it does not.

AccountOrganizationCan
owner-aNorthwind SupportEverything — including db_write and notify nodes, webhook triggers and LLM connections.
editor-aNorthwind SupportBuild, run and approve. Refused the owner-only node types, by the database.
viewer-aNorthwind SupportRead. Cannot start a run or clear a gate.
owner-bContoso LogisticsOrg B only — and cannot see that Org A exists.

Addresses are <name>@agentflow.test, password Password123!, created by npm run seed. Signing up with your own email works too — a new account belongs to no organization yet, so it asks you to create one.