Walk through the whole platform along one real workflow
Braidrun builds and runs AI workflows with human approval. The growth report on the right runs in production every day: cron fires on time, it pulls Apple Search Ads and Google Ads spend plus subscription revenue, AI writes the commentary, and an xlsx lands in Slack. Follow it, and every part of the platform makes an appearance.
Canvas and YAML Share One Definition
This report was first built in the editor: canvas on the left, YAML on the right, and editing either side syncs the other instantly. When you can't articulate the exact change, just tell the AI assistant what you need.
- Canvas ⇄ YAML two-way sync: operations reads the canvas, engineers review the YAML — one and the same definition
- Built-in diagnostics: bad variable references and missing config get flagged before you save
- Version history with diffs — if you break it, roll back to the last version that ran
- The AI assistant builds through conversation; no change takes effect until you hit save

8 Step Types for Building Complex Workflows
The daily report only uses code steps and a single-agent commentary. There are 8 step types in all: when you want several agents cross-checking each other, state-driven progression, or a whole workflow reused as one step, changing the type is all it takes.
- singleOne agent completes a step from instructions — the report's AI commentary is this
- CodeRuns scripts in the sandbox: fetch data, clean it, generate files
- classifierRoutes the run to different branches based on the input
- group_chatSeveral agents discuss the same question over multiple rounds and reach a conclusion
- agent_basedA coordinator agent dynamically decides which tools and subtasks to call
- state_machineDescribes multi-phase flows with explicit states and transitions
- sub_workflowCalls another workflow as a single step
- workflow_output_readReads other workflows' run results and picks up from there
steps: - name: pull_spend type: sub_workflow # Reuse another data-fetching workflow workflow: ads-spend-fetcher - name: review_numbers type: group_chat # Several agents cross-check each other against the data agents: [analyst, skeptic] rounds: 2 - name: plan_actions type: agent_based # A coordinator agent calls tools as needed - name: apply_changes type: code manual_approval: true # Executes only after human approval
Cron Runs on Schedule; Scripts Run in the Sandbox
This report is triggered by a 5-field cron expression with a configurable time zone; in multi-instance deployments a distributed lock guarantees it fires only once. The scripts that pull data and build the spreadsheet run in a Docker sandbox in production, with variables injected as WF_VAR_* environment variables.
- Schedules: 5-field cron + time zone, with a distributed lock preventing duplicate triggers across instances
- Webhook: your system sends one POST, and top-level JSON fields map to variables automatically
- Manual and API: click run in the UI, or trigger via the v1 API from an external system
- Chained: N seconds after one workflow finishes, the next one triggers automatically
- Code steps support seven languages — python, javascript, typescript, bash, ruby, lua, cli — with a 30-second default timeout
# Schedule: 8 a.m. daily, time zone configurable schedule: "0 8 * * *" # Or trigger it with one POST from your system curl -X POST \ https://braidrun.com/api/webhooks/{id}/trigger \ -H "X-API-Key: <your-key>" \ -d '{"channel": "#growth-daily"}'
The day a number looks wrong, you can trace it to the step
Some morning the numbers in Slack look off — open that run: every step's inputs, outputs, logs, and costs are there. Once you've found the bad step, just rerun from there.
- Debugger: 9 breakpoint types; edit variables while paused and continue (Pro and up)
- Rerun from a chosen step; completed LLM steps aren't billed again
- Auto-resume after service restarts, with a definition-hash check preventing resumption after edits
- Token usage and cost recorded per run; runs export as JSON / YAML


Human Approval Before Production Changes
The daily report only reads data — unattended is fine. Another workflow on the same team changes ad bids, so it has approval before execution: the AI only produces suggestions, nothing happens until a human approves, and rejection or timeout changes nothing.
- Values on the approval form are editable: nudge the AI's suggested bid down before approving
- Approvals flow through three channels — in-app, email, or API — and auto-reject on timeout
- Credentials are stored with AES-256-GCM encryption, with key rotation supported
- Quotas are tiered across Free, Pro, Team, and Enterprise, with caps on concurrency and schedule counts
- Audit logs record process changes and approval decisions (Enterprise tier)
The same platform can move into your own data center
For this report, Braidrun cloud is plenty; teams whose data can't leave their boundary can self-host the whole platform in their own environment and take workflow definitions along unchanged.
- Self-hosted: data and model calls stay inside your boundary
- Scale horizontally across instances for more concurrent runs
- 14 OAuth login methods, including WeChat, Alipay, DingTalk, Lark, and your own OIDC
- Exposes Prometheus metrics that plug into your existing monitoring dashboards
- 8 interface languages; GDPR data export and deletion are already product features
Every part has its own page
This page only walked the daily-report thread; the details, quotas, and limits of each capability live on their own pages.