Your first workflow
Build one concrete workflow end to end, a daily standup digest, and run it.
A workflow is a reusable recipe you own for agent work: choose agents and models, define steps and inputs, grant only the tools it needs, then run it manually — locally or in Cloud — or trigger it from a schedule or a feed. Schedules can target Cloud or a local repository; poll feeds target Cloud. Every run leaves sessions, outputs, and diffs you can inspect.
This page walks one concrete example all the way through: a daily standup digest that collects yesterday's activity, drafts a summary, and posts it to Slack. It's small enough to build in a few minutes and shows off most of the step kinds you'll reach for later.
Open the editor
From Workflows in the sidebar, click New workflow. The editor's left
rail lists agents, not a flat list of steps. Add one agent — give its slot
a name like digest, pick a harness and a model — and expand it to author its
ordered steps underneath. For the full tour of agents, slots, and step kinds,
see the editor.
Declare one input
Inputs are the typed values a run starts with. Declare a single text input,
since, with a default of yesterday, so a run can be pointed at a
different window without editing the workflow. Reference it from any step's
templated fields with {{inputs.since}}.
Add five steps to the agent
Every step belongs to the digest agent and runs in its session, top to
bottom:
- Script — collect the day's merged pull requests and commits and write
them to a file in the run's checkout (
git log --since="{{inputs.since}}" > activity.txt, then agh pr list >> activity.txt). A Script step's stdout isn't passed to the next step; only what it leaves on disk is, so the file is how the agent gets real material to summarize. - Prompt — ask the agent to read
activity.txtand draft a standup digest grouped by area (shipped, in progress, needs a look). Name the file explicitly. The prompt doesn't inherit the script's output on its own. - Write output — named
standup, re-ask the agent to return that draft as a typed result — asummarytext field and ashippedboolean — so later steps can reference{{standup.summary}}and branch on{{standup.shipped}}. - Branch — switch on
standup.shipped: end the run if nothing shipped, otherwise continue to the next step. - Notify — post
{{standup.summary}}to a Slack channel.
Grant the one integration it needs
The Notify step posts to Slack, so turn on the Slack integration for the workflow. The grant applies to the whole run — every agent in it gets that access, frozen for the run's duration and released when the run ends. Issues and Slack are the integrations you can grant today.
A workflow that grants an integration needs a Cloud run — a local run fails explicitly at the step that needs it rather than skipping it silently. The launch modal warns you if you've picked a local location for a workflow like this one.
Run it
Save, then launch from Run on the workflow's card. The launch modal asks
for the since input, a Run location (Cloud, since this one grants
Slack), and the workspace to run in. Launching drops a run pill at the bottom
of the window and leaves you where you were; View jumps to the run's page
with its step timeline, per-step output chips, and Open session links
into each agent's checkout. Full walkthrough:
running a workflow.
Put it on a schedule
Once a manual run looks right, attach a schedule trigger from the editor and pick a recurrence (daily, on weekdays, at a time and timezone you set). Target a cloud workspace so it fires on its own clock and the digest arrives whether or not your laptop is open. See scheduling a workflow for the recurrence options and the missed-run policy.
Where to go next
The workflow editor
Agents, steps, inputs, and integrations — how a workflow is actually built.
Running a workflow
Launching a run, watching it live, and taking back control.
Scheduling a workflow
Cron-style recurrence, missed-run policy, and what over-budget means.
Integrations
Connect Slack, Issues, and more.