Technical docs

Workflows

Public reference generated from tech docs/workflows.md.

Overview

Support reference for organization-owned workflows at `/workflows`.

Routes

- Library route: `/workflows` - Shared editor route: `/skills/[workflow_id]?from=workflows` - Shared runs route: `/skills/[workflow_id]/runs?from=workflows` - Sidebar/menu label: `Workflows`

Library page

- Page title: `Workflows` - Description: `Create, manage, and monitor automated workflows` - Primary action: `Add` - Empty state: - title: `No workflows` - description: `Create your first workflow to get started.`

Table behavior

- The page reuses the shared skills table hook with `no_employee=true`, so it only lists workflows where `employee_id` is `null`. - Search is server-side and is sent as `search` to `GET /api/organizations/{orgId}/workflows`. In backend code that currently filters by workflow `name`. - Pagination is server-side. - Date chips labeled `Added` and `Updated` are client-side only. They filter the rows already loaded on the current page; they are not sent to the backend. - Available columns: - `ID` - `Name` - `Description` - `Added` - `Updated` - `ID` is hidden by default. `Added` is also hidden by default on desktop; mobile hides more columns. - Row click opens the shared editor. - Row actions: - `Logs` -> `/skills/{workflow_id}/runs?from=workflows` - `Delete` - Bulk action: - `Delete` - Export is enabled.

Create flow

- Dialog title: `New Workflow` - Fields: - workflow name - optional description - Create always sends `type: structured`. - The current dialog does not let users assign an AI teammate or choose an agent workflow type. - After create succeeds, the UI redirects straight into the shared editor for that workflow.

Shared editor behavior

- `/workflows` opens the same `/skills/[workflow_id]` editor used elsewhere, with `from=workflows` for back-navigation. - The page opens in read-only mode first. - Header actions are currently: - `Back to Workflows` - `View Runs` - `Edit` - In edit mode: - draft changes auto-save to `PUT /api/organizations/{orgId}/workflows/{workflow_id}/draft` after a 1 second debounce - `Reset Draft` clears the saved draft by updating the workflow with `draft: null` - `Publish` validates the graph and publishes `flow`, `starting_step_id`, `payload_format`, `state_definition`, `mode`, `debounce_seconds`, and `debounce_key` - closing edit mode flushes any pending draft save and resets the canvas back to the published flow

Builder scope

- Org workflows created from `/workflows` are structured workflows. - The current structured builder palette exposes: - `Run Skill` - `Run Employee` - `Condition` - `Tool` - `Run Code` - `User Input` - `LLM` - `Send Message` - `Finish` - grouping/support nodes such as `Starting Step` and `Group` - Backend workflow types still include `mapping` and `wait_callback`, but those node types are not in the current frontend palette and are not runnable in the processor.

API behavior

- Library list: - `GET /api/organizations/{orgId}/workflows?no_employee=true&page=<n>&limit=<n>&search=<text>` - Create: - `POST /api/organizations/{orgId}/workflows` - Delete and restore: - `DELETE /api/organizations/{orgId}/workflows/{workflow_id}/` - `POST /api/organizations/{orgId}/workflows/bulk-delete/` - `POST /api/organizations/{orgId}/workflows/bulk-restore/` - Shared editor: - `GET /api/organizations/{orgId}/workflows/{workflow_id}/` - `PUT /api/organizations/{orgId}/workflows/{workflow_id}/` - `PUT /api/organizations/{orgId}/workflows/{workflow_id}/draft` - `POST /api/organizations/{orgId}/workflows/{workflow_id}/publish` - Runs surfaces: - `GET /api/organizations/{orgId}/workflows/{workflow_id}/runs/` - `POST /api/organizations/{orgId}/workflows/{workflow_id}/runs/` - `GET /api/organizations/{orgId}/workflows/{workflow_id}/runs/{run_id}/`

Permissions

- Workflow actions are organization-scoped and authorized by backend checks.

Start building your AI team