JSON-based workflow definitions with 7 node types, Temporal orchestration, and human approval gates for automated business processes.
Every Monday morning you spend two hours pulling metrics from your database, making charts in Excel, and emailing the team. Every single week. It's tedious, it's error-prone, and you forget half the time.
What if it just... happened? Automatically. Perfectly. Every time.
"Every Monday at 8am, check last week's revenue. If it dropped more than 10%, alert me on Slack with the top 10 customers and their recent activity. Otherwise, just post a summary to #metrics."
*Creates workflow: Schedule trigger → Query revenue → Condition check → Slack notification*
"Done. The workflow is active. It'll run every Monday at 8am. Want to test it now to see what it looks like?"
"Yes. And can you also add a step where if revenue dropped, it automatically creates a customer health dashboard so I can investigate?"
*Adds dashboard generation node to workflow, runs test execution*
"Updated. Test complete—here's your Slack alert and the auto-generated dashboard. Looks good?"
This isn't magic. This is collaboration.
Describe what should happen automatically. Your Awareness builds the workflow. You never manually pull metrics again.
Execute service operations
Branch based on conditions
Iterate over data
Execute branches concurrently
Custom JavaScript execution
Pause execution
Human-in-the-loop approvals
Compose workflows
User-initiated execution with optional input schema
{
"type": "manual",
"inputSchema": {
"type": "object",
"properties": {
"email": { "type": "string" },
"count": { "type": "number" }
}
}
}Time-based execution with cron or interval
{
"type": "schedule",
"cron": "0 9 * * 1", // Mon at 9am
"timezone": "Europe/London"
}
// OR
{
"type": "schedule",
"interval": "PT1H" // Every hour
}HTTP endpoint for external integrations
{
"type": "webhook",
"path": "github/push",
"method": "POST",
"secret": "hmac_secret"
}
// Endpoint:
// POST /api/webhooks/workflows/{id}/github/pushInternal event-driven execution
{
"type": "event",
"eventType": "file.uploaded",
"source": "space_123"
}Access data from previous nodes, trigger input, and workflow variables using {{expression}} syntax.
// Access node outputs
{{node_1.output.userId}}
{{http_fetch.output.body.results[0].id}}
// Access trigger data
{{trigger.email}}
{{trigger.payload.repository.full_name}}
// Access workflow variables
{{variables.apiKey}}
{{variables.config.baseUrl}}
// Operators
{{node_1.output.count > 100}}
{{node_2.output.status == "success"}}
// Array operations
{{node_list.output.items.length}}
{{node_list.output.items[0].name}}
// Example in HTTP action:
{
"service": "http",
"operation": "request",
"config": {
"url": "{{variables.apiUrl}}/users/{{node_1.output.userId}}",
"method": "GET",
"headers": {
"Authorization": "Bearer {{variables.apiKey}}"
}
}
}{
"name": "Daily User Export",
"description": "Extract users from Postgres, transform, and load to S3",
"trigger": {
"type": "schedule",
"cron": "0 2 * * *", // 2am daily
"timezone": "UTC"
},
"nodes": [
{
"id": "extract",
"type": "action",
"name": "Extract Users",
"action": {
"service": "postgres",
"operation": "query",
"config": {
"query": "SELECT * FROM users WHERE created_at >= NOW() - INTERVAL '1 day'"
}
}
},
{
"id": "transform",
"type": "code",
"name": "Transform Data",
"language": "javascript",
"sandbox": true,
"code": "return input.rows.map(u => ({ id: u.id, email: u.email.toLowerCase(), active: u.status === 'active' }));"
},
{
"id": "check_count",
"type": "condition",
"name": "Check if any users",
"condition": {
"left": "{{transform.output.length}}",
"operator": "gt",
"right": 0
},
"trueBranch": "upload",
"falseBranch": "notify_empty"
},
{
"id": "upload",
"type": "action",
"name": "Upload to S3",
"action": {
"service": "minio",
"operation": "upload",
"config": {
"bucket": "exports",
"key": "users/{{trigger.timestamp}}.json",
"content": "{{JSON.stringify(transform.output)}}"
}
}
},
{
"id": "notify_empty",
"type": "action",
"name": "Notify Empty",
"action": {
"service": "email",
"operation": "send",
"config": {
"to": "admin@example.com",
"subject": "No users to export",
"body": "Daily export found 0 new users"
}
}
}
],
"edges": [
{ "id": "e1", "from": "extract", "to": "transform" },
{ "id": "e2", "from": "transform", "to": "check_count" }
]
}Workflows are executed by Temporal, providing:
Namespace isolation ensures workflows in different spaces cannot interfere with each other.
list_processesList all workflow definitions
create_processCreate new workflow from JSON
execute_processTrigger workflow execution
get_executionGet execution status and outputs
cancel_executionCancel running workflow