Canvas for Ryu — a ComfyUI / ElevenLabs-Flows-style node board: wire up image / video / chat / tts / stt / upload / note nodes through Ryu's media and agent bridges; each board persists as a Space document.
The public home of
ryu-canvas. Source, builds, and releases live here — binaries for every platform are attached to each release.This tree is generated from the Ryu monorepo, so commits pushed here directly are replaced on the next sync. Pull requests are welcome — open them here and they are ported into the monorepo, then flow back out. Ryu as a whole: https://github.com/amajorai/ryu
This is the source of record for the app UI. It imports Ryu's private
@ryu/ui design system, so it does not build standalone outside the
monorepo — it builds inside the amajorai/ryu monorepo workspace.
The shipped bundle below is the built artifact: a prebuilt single-file
companion bundle is included at dist/canvas.ui.html —
the runnable UI Ryu loads for this app.
Apache-2.0 — see LICENSE.
A ComfyUI / ElevenLabs-Flows-style node board: wire up image / video / chat / tts / stt / upload / note nodes and run them through Ryu's media and agent bridges. Each board persists as a Space document.
ui/— companion (@ryu/canvas-app). A sandboxed full-page Companion (Path B,ui_format: "html"), a React Flow (@xyflow/react) canvas built to one self-containeddist/index.htmlviavite-plugin-singlefile. No backend crate of its own — it persists viaspaces:docsand runs nodes through thewindow.ryumedia/agent bridge, never rawfetch.
- id
@ryu/canvas· onecompanionrunnable (Canvas, iconai-image). - Requires: app
@ryu/spaces+ grantspaces:docs(a hard dependency — boards are stored as Space documents). - Grants:
spaces:docs(persistence),core:list_agents(pick a chat node's agent),media:generate+media:transcribe(image/video/tts + stt nodes),hook:run-agent+hook:side-model(chat / side-model nodes). - CSP: the sandbox is opened to
api.iconify.design/api.svgl.app/svgl.appfor icon/logo fetches (connect_domains+resource_domains). - No sidecar: all node execution rides Core's existing media + agent hooks.
Registers as the Canvas companion in the desktop app store / launcher.
Node kinds are the extensible unit; each maps to a bridge capability
(media:*, hook:*), none hardcoded to a provider. Boards live in Spaces, so a
different Spaces backend behind spaces:docs backs persistence unchanged.