Multi-step, identity-aware workflows with approval gates, conditional branching, and parallel execution β security enforced at every step
Submit expense β auto-approve under threshold β manager approval if over β process payment β notify
Search flights β check budget β approval if over limit β book β charge card β send confirmation
Alert β assess severity β page on-call β escalate if not acknowledged β resolve
Create accounts β assign groups β equipment approval β schedule orientation β welcome email
Visual Designer: Drag-and-drop steps in the Workflows tab. Add tool calls, conditions, approvals, notifications β wire them together visually.
JSON/YAML: Power users can write workflow definitions as code. Steps, triggers, branches, retry policies β all declared in a structured format.
Templates: Start from a pre-built template and customize. One-click install from the template gallery.
Manual: User clicks "Run" in the dashboard or types "start expense approval" in chat.
Webhook: External systems (monitoring alerts, form submissions, API calls) trigger workflows via POST /api/workflows/:id/run.
β° Schedule (Built-in Cron): APScheduler fires workflows on a cron schedule with scoped identity:
β User scope: Runs as the user who created it, using their vault credentials
β Group scope: Runs with group-level credentials (team lead creates)
β Org scope: Runs with org-level credentials (manager only)
Presets: hourly, daily 9am, weekly Monday, weekdays, monthly. Custom cron supported.
Schedules persist to Cosmos DB and auto-restore on pod restart.
Tool call steps are not simulated β they execute against real MCP engines via agent.call_tool():
1. Tool lookup β finds which MCP engine has the requested tool (searches all registered servers)
2. Identity injection β _user_email, _user_role, _user_groups from the workflow trigger
3. Credential resolution β vault cascade (user β group β org) per the triggering user
4. Policy check β role β₯ min_role? write allowed? rate limit OK?
5. MCP execution β calls the plugin function against the external API
6. Result stored β output saved as workflow variables for subsequent steps
Retry: Configurable per step with exponential backoff. If all retries fail, workflow follows error path.
The workflow pauses and sends a notification to the designated approvers. They can:
β Approve β workflow resumes to the next step
β Reject β workflow follows the rejection path (notify user, log reason)
β° Timeout β if no response within the SLA, automatically escalate to the next level (e.g., director)
Multiple approvers: Configure "require 2 of 3" or "require all" policies.
When all steps finish, the workflow engine:
1. Marks the run as completed (or failed/cancelled/timed_out)
2. Saves the full execution history β every step, every result, every approval decision
3. Persists to Cosmos DB (or DynamoDB/Firestore depending on cloud)
4. Available for audit trail β who triggered it, who approved it, what was the outcome
Executes any MCP tool β email-send, payments-charge, travel-search, github-create-issue, etc. Arguments can use {{variables}} from previous steps. Configurable retry count with exponential backoff.
Pauses the workflow. Sends notification to approvers. Supports: single approver, multiple approvers (require all or N-of-M), timeout with auto-escalation, rejection path.
Evaluates an expression against workflow variables. Routes to "true" path or "false" path. Examples: amount > 500, severity == 'critical', department == 'engineering'.
Fans out to multiple branches simultaneously. Waits for all branches to complete (or N-of-M). Example: send approval to 3 managers, continue when 2 approve.
Sends a message via email, Slack, Teams, or SMS. Uses {{variable}} templates. Sends through the user's own configured channels (their Gmail, their Slack).
Pauses the workflow for a specified duration. Use for: follow-up reminders, SLA waiting periods, rate-limiting between API calls, scheduled check-ins.
Validate β check threshold ($500) β if over, get manager approval (24h timeout β escalate to director) β process payment via Stripe β email confirmation. Under $500 auto-approves.
Search flights β check against budget β if over budget, get manager approval β book flight β charge card β email itinerary with booking reference. Uses hierarchical RAG for seat preferences and airline policies.
Assess severity β if critical, page on-call (15-min ack timeout β escalate to engineering manager) β if non-critical, notify team channel β update incident status.
Create email account β assign department groups β get manager approval for equipment β schedule orientation meeting β send welcome email to new hire β notify manager that onboarding is complete.