Skip to content

Build with chat

Workflows › Build with chat (/ui/workflows/new) turns a requirement into a workflow package by conversation. Authors and above can use it.

  1. You describe what the workflow should do.
  2. The builder looks at the workspace: registered tools and their schemas, datasets, existing workflows, the shipped examples, executors, and whether the well-known secrets are set (never their values).
  3. It asks grouped questions with suggested answers: trigger, data sources, where a person must approve, token usage, delivery. You pick options, write your own, or say “just draft it”.
  4. It proposes the whole package (workflow.yaml, agent profiles, schemas, templates, small scripts). The server compiles it and builds its run plan exactly as an upload would. Compiler errors go back to the model to fix, so you only see drafts that compile.
  5. The draft panel lists the steps, the files, and what must be set up before it can run.
  6. Save draft and open the editor stores an unsigned draft. Publishing still needs your signature.

Pick Anthropic, OpenAI, or OpenCode (GitHub Copilot, or ChatGPT plan). One that cannot be used is shown disabled with the reason. One model is marked Recommended, with the reason.

When the workflow has agent steps, the builder asks how to balance cost and quality:

ChoiceEffect
EconomicalSmaller, cheaper models and tight limits (summarising, classifying, routing)
BalancedA mid-tier model, with the strongest one only on the steps that need it
Highest qualityThe strongest models and roomier limits on every agent step

The draft applies it per step: the model, max_turns, max_output_tokens and the step budget.

If a requirement needs a tool that is not registered (your own MCP server, an internal HTTP API), the builder asks for the start command or URL and the input and output shape, then proposes the tool. An admin clicks Register tool. The builder never asks for a token: it names the credential and you set its value on the Secrets page.

Each turn is in the audit log (builder.turn, with provider, model and token counts) and each save as builder.saved. The conversation stays in your browser tab; the server keeps no transcript.