A private, local-first canvas where people and AI agents draw together.
Real-time collaboration · Infinite canvas · AI diagramming · No accounts
EzBoard turns a browser tab into a shared visual workspace. Sketch system designs, map ideas, build wireframes, or invite an AI agent to turn a prompt into a structured Excalidraw diagram. Boards stay on your device and live collaboration travels directly between peers over encrypted WebRTC data channels.
| What you get | How it helps |
|---|---|
| Infinite Excalidraw canvas | Draw naturally with shapes, arrows, text, images, laser pointers, and keyboard shortcuts. |
| Live peer-to-peer rooms | Share a five-character room code and collaborate without accounts or a hosted board database. |
| AI collaborator protocol | Connect any local, hosted, CLI, or IDE agent through provider-neutral NDJSON. |
| 30 featured libraries | Start quickly with reusable Excalidraw assets plus built-in system, brainstorm, and wireframe stencils. |
| Local-first persistence | Boards, profile settings, and theme preferences remain in browser storage. |
| Production-ready exports | Export boards as .excalidraw, PNG, SVG, or PDF. |
![]() |
![]() |
| Local-first dashboard Boards remain on this device. |
Built for technical thinking System design, brainstorming, and wireframe components. |
- Open ezboard.vyasdevgna.online.
- Select New board and begin drawing.
- Select Share → Start session.
- Send the link or room code to collaborators.
No registration, workspace setup, or server configuration is required.
flowchart LR
A[Browser A] <-->|Encrypted WebRTC scene updates| B[Browser B]
A -. room discovery .-> R[Public Nostr relays]
B -. room discovery .-> R
AI[AI agent bridge] <-->|ezboard.agent.v1 NDJSON| M[Any model or agent]
AI <-->|WebRTC room peer| A
A --> L[(IndexedDB + localStorage)]
- Direct collaboration: Trystero uses public Nostr relays for peer discovery; canvas data then moves through WebRTC data channels.
- Deterministic convergence: element versions and nonces resolve concurrent edits without resurrecting deleted objects.
- Efficient updates: peers broadcast changed elements and provide a full snapshot when someone joins.
- Static deployment: the React application is built by Vite and served from GitHub Pages with a custom domain and enforced HTTPS.
The bridge does not depend on a specific model vendor. It prints one request as JSON per line and accepts one matching response on stdin.
cd AI-EZBOARD
npm install
node index.js ROOM_CODERequest:
{"protocol":"ezboard.agent.v1","requestId":"…","input":{"message":"Draw a zero-trust architecture","elements":[]}}Response:
{"requestId":"…","message":"Diagram created","elements":[]}Requests include the current scene, quality constraints, and a unique ID for concurrent work. Responses are validated before being added to the board. The reusable agent instructions live in skills/ezboard-agent/SKILL.md.
Requirements: Node.js 22+ and npm.
git clone https://github.com/vyas-devgna/ezboard.git
cd ezboard
npm install
npm run devQuality checks:
npm run lint
npm run typecheck
npm run test:run
npm run build| Layer | Technology |
|---|---|
| Canvas | Excalidraw |
| UI | React 18 + TypeScript |
| Build | Vite 8 |
| Collaboration | Trystero + WebRTC + Nostr discovery |
| Storage | IndexedDB + localStorage |
| AI bridge | Node.js + Puppeteer + NDJSON |
| Hosting | GitHub Pages + GitHub Actions |
Push to main; the Pages workflow installs, lints, type-checks, tests, builds, and deploys the site.
For a custom subdomain:
- Put the domain in
public/CNAME. - Point its DNS
CNAMErecord tovyas-devgna.github.io. - Select GitHub Actions as the Pages source.
- Wait for certificate approval, then enable Enforce HTTPS.
If a browser retains an old HTTP warning after GitHub reports an approved certificate, open the explicit https:// URL and clear that site's cached data.
EzBoard has no accounts and does not upload boards to an application database. Public discovery relays can observe connection metadata, and direct peer connectivity depends on the networks involved. The current deployment intentionally has no hosted TURN service; restrictive corporate or carrier networks may prevent a room connection.
For a controlled production environment, provide authenticated rendezvous infrastructure and short-lived TURN credentials. Never place permanent TURN credentials in the static client bundle.
Issues and focused pull requests are welcome. Keep changes small, preserve the local-first model, and run the quality checks before submitting.
Built by Devgna Vyas · Sponsor the project



