← Back

Desk of Einstein

Co-founded an infinite-canvas workspace with a Figma-class extension platform.

Co-founder · Engineering

Cloudflare Workers · Durable Objects · tldraw · LangGraph · Supabase · tRPC · Electron · Capacitor · Next.js


Desk of Einstein is an infinite-canvas workspace for messy minds — it pulls your browser tabs, notes, AI chats, videos, and code sessions onto a single spatial board, so the half-formed stuff lives somewhere before it's ready. I started building it in January 2026. It's the first product I'm making mostly because I want to use it every day myself.

What it does

  • An infinite canvas where blocks can be notes, AI chats, terminals, browser embeds, videos, or custom extensions.
  • An in-canvas AI agent that sees what's on your board, keeps long-term memory, and can create or arrange blocks for you.
  • Real-time multiplayer collaboration with sub-100ms sync globally.
  • A cross-platform client (desktop, web, iOS, Android, Apple Watch) that feels native on each.
  • A Figma-style extension platform: an SDK, CLI, and marketplace so anyone can build a block type or theme without forking the app.

Architecture

  • Real-time sync: tldraw's sync engine running on Cloudflare Workers + Durable Objects. Each canvas is its own Durable Object — one authoritative actor per document, routed to the nearest edge — with snapshots persisted to R2.
  • Storage: Cloudflare R2 for canvas snapshots and assets (zero egress, which matters when people paste large images).
  • Canvas engine: tldraw as the base, extended with custom shape types — notes, AI chats, terminals, browser embeds, and more — that live as first-class blocks on the canvas.
  • AI agent: a LangGraph agent running in a Cloudflare Worker, aware of your viewport, selection, and active app, with retrieval-based long-term memory and tools that create and arrange shapes. Built on the Vercel AI SDK over OpenAI, Google, and OpenRouter.
  • Backend: Supabase for auth, Postgres, and the extension marketplace, with a tRPC API between clients and server.
  • Clients: Electron + React on desktop; Capacitor-wrapped React on mobile with deep native extensions (iOS Widgets, Watch complications, Siri Shortcuts), shipped over-the-air via Capgo.

The extension platform (doe-sdk)

This is the part I'm most proud of, technically. Instead of a closed app, Desk of Einstein is built as a platform, and I designed and shipped the whole developer experience myself:

  • A doe-sdk CLI with init, create, validate, login, publish, and status: the same shape as Figma's plugin CLI, tuned for canvas block extensions.
  • A sandboxed runtime. Extensions run in an iframe inside the host, and a typed DOEExtensionAPI proxy talks to the host over a postMessage bridge with origin validation, timeouts, and pub/sub events that clean up after themselves.
  • A permission system: 16 declarative permissions across 10 domains, with runtime consent dialogs for the sensitive ones and per-extension URL whitelisting.
  • A validator and publish pipeline. validate checks the manifest, permissions, bundle size, and forbidden patterns; publish uploads the bundle to R2 and submits it to the marketplace review queue over tRPC.

It's the same category of thing as Figma's plugin platform or VS Code's extension API, built solo, because I wanted the product to keep growing without me having to be in the loop for every new block type.