SyncingBoard (Cross-Tool Sync Engine)
How the Three Pillars of the Studio of Two guided the architecture, protocol design, and execution of a stateless canvas sync engine.
SyncingBoard is a production-grade, open-source sync engine that connects design tools (Figma, Penpot) directly to collaborative whiteboards (Miro, FigJam) with in-place updates and zero server persistence.
This case study documents how The Three Pillars of the Studio of Two were applied in practice to design and build the entire system from concept to production.
The Three Pillars Pairing Model
+-----------------------------------------------------------------------------+
| PILLAR 1: THE HUMAN DOMAIN (Biology & Intent) |
| The Architect: Mental models, user ergonomics, product intuition, UX triage |
+--------------------------------------┬--------------------------------------+
|
v
+-----------------------------------------------------------------------------+
| PILLAR 2: THE BRIDGE (Context Design) |
| The Protocol: Markdown specs, AGENTS.md rules, normalized schemas, contracts|
+--------------------------------------┬--------------------------------------+
|
v
+-----------------------------------------------------------------------------+
| PILLAR 3: THE AGENT DOMAIN (Execution & Symbiosis) |
| The Engine: Strict typing, edge-case probing, WebSocket pipelines, runtime |
+-----------------------------------------------------------------------------+Pillar 1: The Human Domain (Biology & Intent)
The Human Domain represents the biological partner: intuition, ergonomics, edge-case sensitivity, and user-centric priorities that algorithms cannot infer from training sets alone.
In SyncingBoard, human intent established the non-negotiable architectural boundaries:
-
Identifying Cognitive Friction (The Canvas Clutter Problem): Traditional design sync tools duplicate images onto the canvas. The human partner identified that this destroys spatial organization, severs Miro comment threads, and breaks arrow connectors. The mandate: All image updates must be non-destructive and occur strictly in-place.
-
Privacy & Security Boundaries: Design assets often contain confidential unreleased product UI. The human partner mandated that zero design bytes or user tokens may ever persist on a backend database or cloud storage bucket.
-
Domain Triage (Open-Source Ergonomics): Recognizing that Penpot is frequently self-hosted behind enterprise VPNs, the human partner realized that requiring OAuth client registration per custom domain would create immense adoption friction. The mandate: Build a zero-config companion extension that rides existing authenticated browser sessions.
Pillar 2: The Bridge (Context Design)
The Bridge is the translation protocol. It turns human intuition and product requirements into dense, structured, unambiguous context representations that an AI agent can execute against without hallucination or context degradation.
In SyncingBoard, The Bridge was structured through four explicit mechanisms:
-
The Normalized Interface Contract (
DesignPayload): Instead of allowing the agent to write entangled spaghetti code connecting each source to each target, The Bridge defined a decoupled schema:export interface DesignPayload { sourceId: 'figma' | 'penpot'; frameId: string; frameTitle: string; svgContent?: string; imageUrl?: string; bounds: { width: number; height: number }; pairingHash: string; } -
Documenting Runtime & DOM Constraints: The human partner documented Penpot’s internal ClojureScript behavior (
viewport.cljsactive-page DOM unmounting, Rum component lifecycles) in structured markdown specs. This provided the agent with the precise technical boundaries needed to build the programmatic router bridge. -
Plan -> Execute Verification Protocols: Complex refactors (such as the Miro widget
snapshot+restoreretry loop) were mapped into step-by-step phases with strict rollback criteria before touching code.
Pillar 3: The Agent Domain (Execution & Symbiosis)
The Agent Domain represents the synthetic partner: relentless type rigor, rapid algorithmic exploration, mathematical precision, and exhaustive code generation across multiple SDKs.
In SyncingBoard, the agent executed across the entire stack:
-
Geometry Preservation & Aspect-Ratio Formulas: The agent implemented the geometry calculation engine in
MiroAdapter.ts, snapshotting canvas matrices, swapping foreign SVG payloads, and dynamically adjusting scale offsets to prevent widget distortion. -
End-to-End Strict TypeScript & Zero-Any Typing: Generated strict interfaces across Next.js API routes, Ably WebSocket channels, and Upstash Redis handshakes with zero
anytypes. -
String Sanitization & Entity Parsing: Engineered the
decodeHtmlEntities()pipeline and AST regex transformations inpairingId.tsto sanitize ClojureScript entity strings before writing Miro metadata tags. -
Multi-SDK Adapter Implementation: Rapidly implemented adapter layers across Miro Web SDK v2, Penpot Plugin RPC, Figma REST API, and FigJam Plugin APIs adhering strictly to the normalized contract.
The Human-Bridge-Agent Matrix
| Architectural Challenge | 1. Human Domain (Intent & Intuition) | 2. The Bridge (Context & Specification) | 3. Agent Domain (Execution & Symbiosis) |
|---|---|---|---|
| In-Place Image Updating | ”Canvas clutter is a fatal UX flaw. Original board layout, connector lines, and comments must not move.” | Defined the appData metadata schema and the 4-step snapshot -> url swap -> restore geometry lifecycle contract. | Implemented MiroAdapter.ts with bounding box aspect-ratio recalculation and retry loops. |
| Multi-Source Architecture | ”We shouldn’t build siloed plugins for each tool combination.” | Designed the decoupled Source-vs-Target architecture with the normalized DesignPayload interface. | Generated adapter scaffolding for Figma REST API, Penpot Web Components, and FigJam Plugin API. |
| Penpot Batch Sync | ”Users have multi-page files. Having to manually switch pages defeats batch syncing.” | Documented Penpot’s viewport.cljs active-page DOM unmounting constraint and page navigation protocol. | Engineered programmatic page switching in companionRelayClient.ts with DOM mutation observer polling. |
| Security & Privacy | ”Zero persistence. We cannot store confidential client designs on our servers.” | Specified stateless Vercel Serverless Edge Relay + Ably WebSockets + 5-minute Upstash Redis TTL (SET EX 300). | Implemented AES-256-GCM encrypted payload streaming and Redis TTL expiration mechanics in relayRedis.ts. |
Key Takeaways for Studio of Two Practitioners
- Intent precedes Specification: Never ask an agent to build a feature until the human partner has isolated the core friction and established the non-negotiable boundaries.
- Context is Code: High-fidelity architectural specs (The Bridge) prevent hallucinations and eliminate architectural drift.
- Symbiotic Velocity: When the Bridge is well-designed, the agent executes with extreme velocity, producing robust, strictly-typed systems that work on the first compilation.
Explore the live project: SyncingBoard Overview or visit the Studio of Two Framework.