Arazzo canvas for GitHub Copilot
Design Arazzo API workflows visually, right inside GitHub Copilot.
CI Release Coverage Mutation semantic-release License
Watch the 56 s video on YouTube, with sound and English or French subtitles: drag operations from an API, wire values, then ask Copilot to finish the workflow on the same canvas.
The Arazzo canvas: palette of APIs and operations, the workflow diagram, and the step inspector
Quick start
Requires the GitHub Copilot CLI (or the GitHub Copilot app) with plugin support, and Node.js 22 or later.
copilot plugin marketplace add SebastienDegodez/github-copilot-arazzo
copilot plugin install arazzo@github-copilot-arazzo
The plugin ships with no runtime dependency.
Why
An Arazzo document describes how API calls chain together: which operation runs first, what each
step sends, which response values flow into the next step, when to retry or stop. Writing it by
hand means juggling operationIds, runtime expressions such as $steps.findPets.outputs.petId,
and a specification you rarely keep in your head.
This plugin adds an arazzo canvas to GitHub Copilot. You build the workflow by dragging the
operations of your OpenAPI descriptions; the canvas writes valid Arazzo YAML, checks it against the
spectral:arazzo rules as
you go, and Copilot can read and edit the same workflow from the chat.
Features
| 🧭 Visual flow chart | Inputs → steps → outputs, with data edges for the values each step receives, and retry loops, goto jumps and end exits drawn on each step — after the Arazzo diagram of Microcks. |
| 🖱️ Drag and drop | Drop an operation to add a step (onto a step to insert it before), drag a step to reorder, drag an input or a step output onto a parameter to pass it on. |
| ✏️ Step inspector | Every parameter of the operation with its value — fixed or a runtime expression — plus extra headers and JSON body properties; click an empty slot to fill it. |
| 🔌 API descriptions | Each OpenAPI/Arazzo source with its file, type, state and operation count. A source is only added once it can be read (≤ 5 MB); the form proposes the description files of your workspace. |
| ✅ Live validation | The full spectral:arazzo ruleset (errors and warnings) plus what only the canvas knows — unknown operations, values read from a later step. Each problem has its rule, severity, JSON pointer and line, and is shown on its step. |
| 📝 YAML view | Diagram, Split or YAML. The YAML is editable, validated as you type, and is exactly what gets saved — comments and key order preserved. |
| 💾 Your save model | Autosave on: every edit is written at once. Off: edit a draft, save with Save or Ctrl/⌘+S. Undo/redo everything. External file changes are picked up, with a conflict prompt when you have unsaved edits. |
| 💬 Ask Copilot | Ask about the workflow or the selected step: the question reaches the chat with the step, its problems and the document path, and Copilot answers by editing the canvas. |
Split view: the diagram next to the YAML it produces
Usage
Ask Copilot:
Open the Arazzo canvas on
flows/adopt.arazzo.yamlusing the API inapis/petstore.yaml.
or open the canvas directly:
{ "canvasId": "arazzo", "input": { "path": "flows/adopt.arazzo.yaml",
"sources": [{ "name": "petstore", "url": "apis/petstore.yaml" }] } }
| Input | Meaning |
|---|---|
path | Arazzo document, relative to the workspace. Created with one empty workflow when missing; defaults to the first *.arazzo.yaml found. |
workflowId | Workflow to show, or the id given to the workflow of a new document. |
sources | OpenAPI descriptions a new document calls, url relative to the document. |
Driving the canvas from Copilot
The bundled arazzo-workflow-authoring skill teaches the agent to edit through the canvas actions,
so every change appears on the diagram and is refused with a reason when it would break the
workflow:
get_workflow · select_workflow · add_workflow · add_source · remove_source ·
list_source_candidates · add_step · move_step · remove_step · add_input ·
set_step_value · clear_step_value · set_step_output · link_data · add_workflow_output ·
add_success_criterion · add_action · save · undo · redo · set_autosave · get_yaml ·
set_yaml
Your autosave preference is stored in
$COPILOT_HOME/extensions/arazzo-canvas/artifacts/settings.json (~/.copilot by default).
Contributing
Contributions are welcome — see CONTRIBUTING.md for the architecture, quality gates, demo video and release process. Please report security issues as described in SECURITY.md.
License
Apache-2.0. The diagram layout is adapted from Microcks (Copyright The Microcks Authors, Apache-2.0).