Skip to content

Flow Definition

Every CAFF flow is a JSON object with this shape:

{
"$schema": "https://cavos.org/schemas/flow/v1.json",
"version": "1.0.0",
"metadata": { ... },
"variables": { ... },
"nodes": [ ... ],
"edges": [ ... ],
"viewport": { ... },
"credentials": { ... },
"runtime": { ... },
"settings": { ... }
}
{
"metadata": {
"id": "unique-flow-id",
"name": "My Agent Flow",
"description": "What this flow does",
"author": "user-id",
"tags": ["support", "chatbot"],
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}
FieldTypeRequiredDescription
idstringYesUnique identifier
namestringYesDisplay name
descriptionstringNoWhat the flow does
authorstringNoCreator user ID
tagsstring[]NoCategorization tags
createdAtISO 8601NoCreation timestamp
updatedAtISO 8601NoLast update timestamp

Canvas state for the flow builder:

{
"viewport": {
"x": 0,
"y": 0,
"zoom": 1
}
}

Define credential requirements for portability:

{
"credentials": {
"required": [
{
"key": "openai_api_key",
"description": "OpenAI API key for GPT models",
"type": "api_key"
}
],
"optional": [
{
"key": "slack_token",
"description": "Slack bot token for notifications"
}
]
}
}
{
"runtime": {
"supportedRuntimes": ["node", "edge"],
"timeoutMs": 300000,
"memoryMB": 256,
"maxConcurrency": 5,
"retry": {
"maxAttempts": 3,
"backoffMs": 1000,
"backoffMultiplier": 2
}
}
}