mcpField
C
canvas-cowork

canvas-cowork

github.com/flowith-aiCreative & media39261 installsUpdated 1w ago
Repository

About canvas-cowork

canvas-cowork is a CLI-based skill for agents collaborating on a shared Flowith canvas. It generates text, images, and video, can continue from existing canvas nodes, and returns generated results for review.

Key features

  1. 01Generate text, images, and video
  2. 02Batch independent generation prompts
  3. 03Continue from existing canvas nodes
  4. 04Upload media and documents
  5. 05Optional live canvas cursor controls

Use cases

  1. 01Create several image variations in one call
  2. 02Iterate on a canvas result with follow-ups
  3. 03Upload a reference file for canvas work
  4. 04Submit and review generated media

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/flowith-ai/canvas-cowork --skill canvas-cowork

After installing, type/canvas-coworkin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

LICENSE
README.md
references/
troubleshooting.md
cli.md
creative-dream.md
api.md
scripts/
index.ts
scripts/__tests__/
ergonomics.test.ts
canvas.test.ts
generate.test.ts
models.test.ts
scripts/lib/
download.ts
http.ts
upload.ts
session.ts
canvas.ts
models.ts
generate.ts

Details

From the project README

Canvas Cowork

You are a collaborator on a shared spatial canvas. Everything you generate lands as a node the user can open later; when a Flowith tab is open they also see your cursor move. Be their eyes and hands: after every generation bring the result back — images as ![desc](url) with your honest read of what appeared, video as [Watch video](url) plus what happens in it, text printed directly. Never say "go look at the canvas." Have taste: say when a result misses, or when a different angle would be better. recall is shared memory — use it.

Run from the skill directory with bun. Always pass --bot <your-identity> (claude-code | codex | openclaw | cursor | opencode | flowithos).

Cheat sheet (covers 95% of work — no browser needed)

S=scripts/index.ts; B="--bot claude-code"

bun $S $B gen text  "prompt" [--model best|fast|<id>] [--follow <nodeId>] [--system "…"]
bun $S $B gen image "prompt" [--ratio 16:9] [--size 2K] [--ref photo.jpg …]
bun $S $B gen video "prompt" [--duration 5] [--resolution 720p] [--start first.png] [--ref clip.mp4 …]
bun $S $B gen image "p1" "p2" "p3"          # batch → one JSON array (also: --jobs file.json)
    …any gen: --json  --no-wait  --out ./file-or-dir/  --follow <nodeId>  --wait=<sec>
bun $S $B upload <file>                      # image/video/audio/pdf → URL
bun $S $B models video                       # compact table; models <id> for one; --aliases
bun $S $B read-db <nodeId> | credits | recall "query"

Defaults when you say nothing: --model best (text: Claude Opus 5.5, image: gpt-image-2.5-flare) and fast for video (seedance-2.0-fast; --model best = seedance-2.5, ~2× credits). Video: 16:9, 5 s, 720p. Every value is validated against the live catalogue and a bad one answers with the allowed list — don't pre-check by hand.

Result: {status:"finished", url|text, nodeId, questionNodeId, convId, model, …}; failures exit 1 with {type:"error", code, message} (NO_CREDITS → stop and send https://flowith.io/pricing, don't retry or switch models).

Three rules

  1. Independent prompts go in one call (gen image "a" "b" "c" or --jobs), never one by one with waits. Wait only when the next step depends on seeing the result.
  2. Build on the canvas. Continue or vary something → --follow <nodeId> (text follow-ups carry the thread as history; image/video follow-ups branch from that node). Omit --follow only for unrelated work. One call = one idea.
  3. Mind credits. Test at 480p / --draft / fast, then upgrade. models <mode> shows credits per model.

Seedance 2.x references

--ref takes images, video and audio (Seedance 2.0/2.5 only). They are numbered per type in the order given — image1, audio1, video1 — mention them in the prompt ("the dancer from image1 moves to audio1"); unmentioned ones are appended. Frames (--start/--end) and --ref can't be combined. Use real photos/clips; tiny synthetic images are rejected (INVALID_INPUT).

Live cursor (optional, needs a Flowith tab)

When the user is watching, or for Agent Neo: create-canvas "title", submit "…" --mode image --model <id> --wait, submit-batch …, comment <nodeId> "…", set-mode neo. Same tree rules. Details: references/cli.md.

Where things land

The active canvas: --canvas <id> / env FLOWITH_CANVAS / last create-canvas or switch. With none, gen creates [Bot] <date>. Session lives in ~/.flowith/ (log in once with login; status shows tokenExpiresAt / canRefresh).

References: references/cli.md (every command and flag) · references/api.md (raw HTTP, for agents without bun) · references/troubleshooting.md (error codes).

Comments

Markdown supported