@omnidraw/resource-runtime
v0.6.0
Published
Portable resource capabilities, providers, and gateway contracts for Omnidraw.
Readme
OmniDraw
Run your real apps in an infinite drawing canvas. Generate apps with ai. Reuses your llm subscriptions.
The project is organized as a monorepo and follows a Functional Core / Imperative Shell architecture.
Quick Start
OmniDraw is currently run from source. Install Bun 1.3.14, then run:
git clone https://github.com/omnidraw/omnidraw.git
cd omnidraw
bun install
bun run devOpen the frontend URL printed by the development runner (by default http://127.0.0.1:3002).
For a production-style local run, build the workspace and start the single Bun server:
bun run server:prodThis builds the frontend and serves its static SPA assets, API, WebSocket, and file routes together at http://localhost:7496.
You can edit the canvas from the UI, or from the CLI. Agents can use the same canvas CLI surface for scripted canvas changes.
Useful CLI commands during local development:
bun run apps/cli/src/main.ts --version
bun run apps/cli/src/main.ts --help
bun run apps/cli/src/main.ts canvas --helpDatabase
- Omnidraw keeps one home at
~/.omnidraw; its primary Turso database is~/.omnidraw/main.db. - In dev mode it the databas is in
/.omnidraw/main.dblocal to the current folder. --data-dir <path>selects another home and takes precedence overOMNIDRAW_HOME.
Debugging the live app
The canvas runtime includes a built-in debug logger that can be enabled per plugin or per service from the browser devtools console.
Debug keys use this format:
omnidraw:debug:<plugin|service>:<name>Levels:
0,false,off, or empty = disabled1= important lifecycle logs2= more detailed state/layout logs3= very noisy per-frame/per-event logs
Examples:
// hosted component plugin logs
localStorage.setItem("omnidraw:debug:plugin:hosted-component", "3")
// camera service logs
localStorage.setItem("omnidraw:debug:service:camera", "1")Then reload the page and inspect the browser console.
To turn a target back off:
localStorage.setItem("omnidraw:debug:plugin:hosted-component", "0")Current log output includes prefixes like:
[omnidraw][plugin:hosted-component][L2] ...This is especially useful for debugging live layout, overlay, hydration, transform, and mount issues inside the running app.
For implementation conventions and deeper subsystem docs, read:
AGENTS.mddocs/internal/llm.architecture.mddocs/internal/llm.widget-system.mddocs/internal/screens/SCREENS.md
License
MIT. See LICENSE.
