● Product Milestones

Workflows

A visual + agentic automation layer: define a trigger, build the flow, and let the agent do the work — with durable human-in-the-loop steps, connected accounts, and delivery back into chat.

Phase 1 · Shipped Phase 2 · Planned Phase 3 · Vision

Delivery timeline

Phase 1 · v1
Aug 11
Tue 11 Aug — live in production
Phase 2
by Aug 21
Before 21 Aug
Phase 3
Early Sep
Early September
1
Foundation — build & run a workflow★ First version · v1

Our first shipping version: create a workflow from a trigger, author it two ways, and run it with interactive steps and delivery.

Shipped
📋 What this phase is

The end-to-end foundation of Workflows: a user can pick a trigger, build the automation either by describing it to the agent or assembling typed steps in the flow builder, collect input via forms, gate on human approval or button choices, call APIs and connected accounts, and deliver results back into chat — all running durably with live progress.

🎯 Target

Ship the first usable version to production so early users can create and run real workflows end-to-end. Live in prod Tue 11 Aug.

Authoring · Mode 1

🤖 Full agent

Describe the goal in one line of plain language. The agent decides how to accomplish it at run time — the fastest path from intent to a working automation.

Authoring · Mode 2

🧩 Flow builder + delivery

Assemble the workflow step by step from typed blocks — add, edit, reorder — then choose how the result is delivered back to a channel or person. Deterministic and reviewable.

⚡ Triggers

What starts a workflow.

  • Message — a chat message, with filters (keyword, mention-only, room, owner-only)
  • Shareable link — an authenticated deep link others can run
  • Schedule (cron) — repeat on an interval or a cron expression
  • Connection — Jira & GitHub events (issue/PR/comment/status)
  • Manual — run on demand from the Workflows tab

🧱 Flow builder blocks

The typed steps you assemble a flow from.

  • Collect info in a form New
  • Ask a question — one-tap button card
  • Approval gate — allow / deny
  • Branch — pick a path (no card)
  • Call an API — full HTTP + auth New
  • Use a connected account · AI step

💬 Messages & delivery

Getting results and questions into chat.

  • Send to a channel or reply into the triggering room
  • Direct-message a person
  • Reply to the triggering message in-thread
  • @-mentions supported in delivered messages

📝 Forms & human-in-the-loop

Interactive steps that pause and wait for a person.

  • Forms — collect text / number / dropdown fields
  • Button choices — branch on the tapped option
  • Approvals — a human allow/deny gate
  • Durable wait-resume — runs pause safely (survive a restart) and resume where they left off

🔌 Connector support

Connected accounts wired end-to-end for v1.

  • Jira — trigger on events + authenticated API calls
  • GitHub — trigger on events + authenticated API calls
  • Slack — authenticated API calls & message delivery
  • Authenticated API calls — attach a connected account and its token is injected automatically

▶️ Run experience

Watching a workflow execute.

  • Live step panel — each step's status as it runs
  • Inline prompts — forms, buttons, and approvals appear right in the run
  • Test run — verify a workflow before publishing
  • Telemetry — tokens, cost, and duration per run

🛡️ Safety built in

Guardrails so automations stay safe.

  • Trust tiers — untrusted runs are clamped; connected-account access is owner-only
  • Network hardening — outbound calls can't reach internal targets
  • Crash-safe steps — side effects are recorded so a resumed run never double-fires

🤖 Continuous expansion bot

An agent that keeps growing the catalog — always on.

  • Continuously adds features — new flow-builder blocks & run capabilities land on a rolling basis
  • Continuously adds connectors — new connected accounts wired in as they're requested
  • Bootstrapped in v1 — seeds the catalog beyond the launch set of triggers, blocks & connectors

💠 Matrix (Rooms) — native surface

Where interactive workflows run in our own chat.

  • In-room button choices Matrix-only v1 — choice() posts a tappable card right in the room; a tap resumes the run
  • Room-scoped triggers — the message trigger filters to a specific room (keyword, mention-only, owner-only)
  • Delivery back into the room — send to a room, reply in-thread, and @-mention members
  • Note: multi-field forms render on web/mobile, not in a Matrix client — free-text prompts & buttons work in-room
🔒 Human approval, built in

Any step can pause and wait for a person to allow or deny before it continues — durably, so the run survives a restart and picks up exactly where it paused.

1
Reach a gated stepThe run hits an approval() gate — e.g. before sending an external message or calling a write API.
→
2
Pause & notifyThe run parks and posts an approval card to the owner (and any named assignee) in chat.
→
3
DecideOwner responds Allow once / Allow always / Deny — from the card or with /approve <id>.
→
4
Resume or stopAllow → the run continues from the journal. Deny → it stops cleanly. Expired → escalates back to the owner.
🧩 Sample · build a flow step by step

"Triage a new bug report and post a summary"

Assembled in the flow builder from typed blocks — trigger, an AI step, an API call, an approval gate, then delivery. Each block is added, edited, and reordered; the run executes them top-to-bottom.

Trigger
⚡ When a message is posted in #bugs
Message trigger, room-scoped to the #bugs Matrix room · fires on any new report.
Step 1 · AI
🤖 Agent step — read the report & extract structure
The agent reads the message and returns a title, severity, and a one-line summary. agent() — no developer writes this step.
Step 2 · API call
🔌 Create a Jira issue
Authenticated http() / connected-account call — the Jira token is injected automatically. Returns the new issue key.
Step 3 · Approval
🔒 Ask the owner to confirm before notifying the channel
approval() — the run pauses and posts Allow / Deny to the owner. Deny stops here; allow continues.
Step 4 · Message
💬 Post the triage summary to #eng
send() — delivers the title, severity, and Jira link into the room, @-mentioning the on-call.
Step 5 · Buttons
💠 Offer a follow-up choice in the room
choice() posts a tappable “Assign to me” / “Escalate” / “Ignore” card (Matrix-only in v1); the tap resumes the run to branch.

Add / remove / reorder blocks freely — the flow compiles deterministically to a runnable script. Preview each step before publishing with a Test run (writes stubbed).

2
Scale & Integrate — more surfaces, more reach

Broaden how workflows are triggered and where they run, and stand the service up on its own footing.

Planned
📋 What this phase is

Expand reach and robustness: add webhook triggers and let assistant (AIC) messages drive steps, bring workflows into Slack as an app, let users trigger agent actions directly, and broaden the connector catalog (including Google Workspace). Under the hood, move workflow data into a database and split workflows into their own service.

🎯 Target

Make workflows reachable from more places and ready to scale independently, with a wider set of integrations. Delivered before 21 Aug.

🪝 Webhook triggers

Let any external service kick off a workflow.

  • Inbound webhook endpoints as a first-class trigger
  • Bring third-party events into the flow

🔗 AIC message → drive the flow

Use an assistant message as a signal inside a workflow.

  • Leverage AIC messages to trigger other steps in the flow
  • Chain agent conversations into automation

🟣 Slack app support

Run and interact with workflows natively in Slack.

  • First-class Slack app integration
  • Trigger and respond to workflows from Slack

👆 User-triggered agent actions

Let a person pick up and run a workflow's action.

  • Users trigger an agent action directly
  • Pick up / hand off a workflow on demand

🗄️ Move data to a database

Persist workflow data properly.

  • Back workflow state & results with a database
  • Durable, queryable storage

🧩 Separate workflow service

Give workflows their own service boundary.

  • Split workflows into a dedicated service
  • Independent scaling & deployment

➕ More connectors

Broaden the integration catalog.

  • Google Workspace — Gmail, Calendar, Drive
  • More connected-account vendors (Notion, Linear, Salesforce, Microsoft…)
  • Wider coverage across tools teams use

🤖 Continuous expansion bot

An agent that keeps growing the catalog — always on.

  • Ramps up feature output — steadily adds new blocks, triggers & run capabilities
  • Widens the connector catalog — automates onboarding new connected-account vendors
  • Scales with the service split — connector & feature growth runs independently of the core release cadence
3
Team & Trust — workflows for the whole team

Bring team bots and shared credentials into workflows, safely.

Vision
📋 What this phase is

Take workflows from individual to team scale: integrate team bots / bot services so automations run on behalf of a team, and let a workflow securely borrow the permissions and secrets held by the team bot — governed, delegated access instead of per-user credentials.

🎯 Target

Enable shared, team-level automation with delegated, governed access to team-owned permissions and secrets. Early September.

🤝 Team bot & bot services

Workflows that work hand-in-hand with team bots.

  • Team bot / bot services integrated with workflows
  • Shared automation across a team

🔑 Borrowed permissions & secrets

Run workflows with the team bot's access.

  • A workflow user can use permissions from the team bot
  • Access shared secrets / credentials owned by the team bot
  • Governed, delegated access

🤖 Continuous expansion bot

An agent that keeps growing the catalog — always on.

  • Team-aware feature growth — new blocks & capabilities land with team governance baked in
  • Continuously adds connectors — including team-owned & delegated-credential vendors
  • Self-sustaining catalog — feature & connector expansion continues without a manual release each time