Skip to main content

Canvas Workflows

Canvas is a visual workflow system for composing multi-step operations that chain agents, MCP tools, approval gates, GitHub actions, and browser verification into executable DAGs (directed acyclic graphs).

What canvas does

Instead of a single chat turn, canvas lets you define a graph of operations:

Text Input → Agent Node → Approval Gate → GitHub Action → Results

Each node in the graph executes in topological order, with data flowing from outputs to inputs along connections. The runtime streams progress events via SSE so you can watch execution in real time.

Node types

Node typeDescription
textInputNodeStatic text input to the workflow
agentNodeClaude agent execution with prompt and model selection
mcpToolNodeDirect MCP tool call
approvalNodeHuman approval gate — pauses execution until approved
githubNodeGitHub operation (create PR, push commit, etc.)
browserVerifyNodeBrowser-based verification step
resultsNodeCollects and displays workflow output
teamNodeMulti-agent collaboration (feature-flagged)

Approval gates

Write-capable actions (GitHub pushes, data writes) require an upstream approval gate. The runtime enforces this — you cannot skip approval for write operations.

Quick start

CLI

# List saved workflows
rickydata canvas list

# Execute a workflow by ID
rickydata canvas execute <entity-id>

# Execute a local workflow file
rickydata canvas execute ./my-workflow.canvas.json --verbose

# Check run history
rickydata canvas runs
rickydata canvas run <run-id>

Import/export

# Export a workflow to a portable .canvas.json file
rickydata canvas export <entity-id> --output ./backup.canvas.json

# Import a workflow from a file
rickydata canvas import ./workflow.canvas.json

Claude Code integration

Register the canvas MCP server to give Claude Code 7 canvas workflow tools:

claude mcp add --transport stdio canvas-workflows rickydata mcp canvas-server

Available tools:

ToolDescription
canvas_list_workflowsList saved workflows
canvas_get_workflowGet workflow details
canvas_execute_workflowExecute by entity ID
canvas_execute_workflow_from_jsonExecute from inline JSON
canvas_list_runsList execution runs
canvas_get_runGet run details
canvas_save_workflowSave a new workflow

Next steps