Easel

Share a Cursor Canvas with people who don’t use Cursor.

Publish a .canvas.tsxfile to an unlisted URL. The reader gets the real canvas in their browser — no install, no account, no screenshot.

Publish

$ easel publish analysis.canvas.tsx  published v1 → https://easel.cytra.link/c/8kQ2mXbR7vLpN4wZcT1yHd

Update

Publish the same file again and it becomes the next version. The link you already shared keeps working and shows the newest version, while /v/1 stays pinned to what you sent originally.

$ easel versions analysis.canvas.tsx$ easel delete analysis.canvas.tsx

How it works

  1. Validated, not executed. The server parses your file, requires a default export, and rejects any import other than cursor/canvas. Your code never runs on our servers.
  2. Rendered by the real component set. Canvases render through the open-source cursor/canvas shim, so what your reader sees matches what you see in Cursor.
  3. Sandboxed in the browser. Published code runs in an iframe with an opaque origin and no network access. It cannot read cookies, reach the page around it, or call out.
  4. Unlisted and permanent. There is no index and no search. The link works until you delete it.

Anonymous publishing: your edit token is stored only on your machine, so keep it if you want to publish new versions later.