Own your code
This dashboard was ejected — and it runs in your browser
A real Vibedasher dashboard, pulled out through the MCP as plain React and mounted directly on this page. No iframe. And every row you see was computed by DuckDB-WASM on your own machine — we ran no query for you.
45
files, ejected through the MCP — the entire dashboard
22 KB
of Parquet, downloaded once to your browser
0
queries run on our servers to render this
How this page was built
Three steps, no bespoke glue. An AI agent with access to the Vibedasher MCP did all of it — the same way yours would.
# 1. install, sign in, point your AI at the Vibedasher MCP
pip install 'vibedasher-mcp>=0.6.0' && vibedasher login # opens your browser; no API key
{ "mcpServers": { "vibedasher": { "command": "vibedasher-mcp",
"env": { "VIBEDASHER_REGION": "eu-central-1" } } } }
# 2. ask it to eject the dashboard
eject_viz(viz_id=1275)
-> 45 files: App.tsx, pages/, charts/, components/, stores/,
vibedasherWasm.ts, tailwind.config.js, package.json, main.tsx
# 3. mount it in your app and hand it a query function
<App viz={viz} useSQL={useSQL} />Nothing in the ejected tree was hand-tuned to run on this page — that is the whole claim, and it holds. It is real eject_viz output: the five files the MCP ships identically to every customer (build config, tsconfig, the DuckDB-WASM runner) are pinned byte-for-byte against its current output by a CI test, and three spots across two generated files were brought forward to match a generator fix this tree predates. tsc --noEmit over all 45 files is clean, and CI keeps it there. The only file we wrote is the ~40-line component that mounts it and hands it a query function.
The ejected dashboard, live
rendering natively on this page — not in an iframeThe query function we inject is backed by DuckDB-WASM reading a Parquet extract of the dataset. Swap it for the Vibedasher SDK client and the exact same components run against the hosted engine instead — that is the only thing that changes.