Introduction
Metapages is an open-source platform for building composable, browser-native workflows. Connect visualizations, compute containers, and AI models through a declarative JSON graph — then embed the result in any web application or share it as a standalone URL.
Built for:
- Scientists building reproducible data pipelines and interactive figures
- Web developers building modular dashboards and data applications
- Platform builders embedding interactive computational components
Core model
A metapage is a JSON-defined graph of metaframes — each metaframe is a URL pointing to a web application. The metapage library runs in the parent document, loads each metaframe as an iframe, and routes data between them via structured postMessage. No server coordination required.
{
"version": "2",
"metaframes": {
"data-source": { "url": "https://random.mtfm.io/" },
"chart": {
"url": "https://plot.mtfm.io/",
"inputs": [{ "metaframe": "data-source", "source": "data", "target": "data" }]
}
}
}
Key capabilities
- Any language via Docker — run Python, R, Julia, or any container as a metaframe; inputs and outputs are files on disk
- Embed anywhere — one npm import renders a full metapage in your React or vanilla JS app
- URL-parameterized — metapages act as functions: URL params propagate into metaframe URLs, enabling configurable deployments
- Real-time streaming — every metapage has a WebSocket broadcast channel for low-latency event passing between containers and frontends
- Config as code —
metapage.jsondefines the entire workflow; version it, fetch it, generate it programmatically
Navigation
| Section | What's there |
|---|---|
| Quickstart | Render a metapage in under 5 minutes |
| Architecture | How metaframes, data flow, and the JSON config work |
| Build | SDKs for JavaScript, React, and Docker containers |
| Deploy | Run and scale container workers |
| Reference | JSON schema, REST API, SDK method reference |
| Examples | Annotated workflow examples |