canvas-drop
Open app

canvas-drop

canvas-drop is an open-source, self-hostable platform where members of an organization deploy and share small web artifacts — canvases. A canvas is just static files (HTML, CSS, JS, images). Drop them in and they're live at a URL your colleagues can open.

The constraint is the product: a small set of primitives, done well, instead of a general-purpose hosting platform. Canvases run with no build step and no secrets in the page, and they gain backend capability only through five primitives exposed by a zero-config browser SDK.

Status: v1 is feature-complete and hardening toward a public release. The Docker image, one-command compose, MCP server, and examples have all shipped. The remaining ops/packaging work (M10) is proving the backup/restore round-trip, a single-VPS load test, and a colleague IAP pilot. See Self-hosting → Install.

What you can build

Prototypes, dashboards, demos, microsites, small games, internal tools — anything that communicates better as a working artifact than as a screenshot or a slide.

How it fits together

  • Publish a canvas four ways: paste a single index.html, drag a folder of files, upload a .zip, or call the deploy API with a per-canvas key. Agents can ship without a human in the loop, either over that HTTP API or through the built-in MCP server at {base}/mcp. You can also edit in the browser and Publish from the draft.
  • Add backend capability with the browser SDK at {base}/sdk/v1.js: key–value storage, file storage, the signed-in viewer's identity (me()), AI, and realtime. The owner opts a canvas into backend (off by default), then toggles kv, files, ai, and realtime independently; me() is on whenever backend is on.
  • Version & roll back. Every publish is an immutable version (last 10 kept); one-click Make current switches the served version.
  • Share the URL on a per-canvas access rung: private (owner only), specific_people (named org members and email-invited guests), whole_org (any signed-in member with the link), or public_link (anyone with the link — admin-gated per owner, and static-only). Layer on a per-canvas password or a share expiry, and opt into the gallery to let colleagues browse it.

Where to go next

Examples and URLs in these docs use {base} (your instance's base URL) and localhost placeholders. Substitute your own instance's address.