π Hosted instances β Try Curio in your browser without installing anything. Stable at curio.urbantk.org, and the latest
mainbuild at curio-dev.urbantk.org. Sign in with Google to save dataflows; guests can browse shared examples read-only. To run your own server, see the deployment guide. For local deployment, see installation and usage guide. Local installs require Python 3.12.
Curio is a framework for collaborative urban visual analytics that uses a dataflow model with multiple abstraction levels (code, grammar, GUI elements) to facilitate collaboration across the design and implementation of visual analytics components. The framework allows experts to intertwine preprocessing, managing, and visualization stages while tracking provenance of code and visualizations.
|
Provenance-aware dataflow Track transformation and visualization steps |
Linked interactions Data-driven cross-view filtering and brushing |
Autark + Vega-Lite First-class 2D and 3D maps via Autark, plus Vega-Lite charts |
|
LLM integration via Urbanite Natural-language assistance for dataflow authoring |
Jupyter Notebook import Bring existing notebooks into Curio dataflows |
Scenario-oriented analyses Multi-user what-if exploration with branching dataflows |
|
One-click Node Catalog Install packaged nodes from a catalog, or author your own from the canvas |
Composable node packages Mix built-ins, community packages, and your own in a single dataflow |
Reproducible & shareable Versioned, forkable .curio.zip archives pin a workflow's exact node set
|
A lot has landed since v0.5. Highlights:
- π Hosted instances β Public deployments at curio.urbantk.org (stable) and curio-dev.urbantk.org (dev), plus a deployment guide for self-hosting behind HTTPS.
- π¦ Node Catalog β Every node now lives in a manifest-driven package, and you can freely mix built-ins, community packages, and your own in a single dataflow. Install ready-made packages from the catalog with one click, save a canvas node directly into a (new or existing) package via Save as pack node, import
.curio.ziparchives shared by collaborators, or fork an existing package to extend it. Per-package metadata (description, license, README, permissions) is editable from the catalog drawer; Python / JS dependencies are detected automatically from each template's source. Packages are versioned and pinnable, so a workflow can declare the exact node set it depends on β reproducibility for shared research artefacts. See the Node Catalog guide. - π€ Per-user LLM configuration β Connect Curio to OpenAI, Anthropic, Gemini, or a custom endpoint, configurable per user.
- πΊοΈ Autark integration β New
AutkMapandAutkPlotnode types, with JS Computation I/O routed through Python DuckDB. - β‘ JavaScript Computation node β Run Node.js code in a sandbox subprocess alongside Python nodes.
- 𧬠Provenance refactor β Provenance is now tracked in the dataflow JSON itself, with the visualization rebuilt on React Flow (no separate provenance DB).
- π Jupyter β dataflow conversion β Initial bidirectional notebook conversion support.
- πΎ Auto-save β With unsaved-changes guard and a save status icon.
βΆοΈ Play All & auto-play ancestors β Execute nodes in topological order, or automatically run upstream nodes when a downstream play button is clicked.- π₯ Session-level multi-user isolation β Across backend, sandbox, and frontend.
- π Dashboard mode toggle β Switches mode while preserving node state, edges, and positions.
- π¦ DuckDB-native artifact I/O β Faster, type-safe data exchange between sandbox and backend.
- πΌοΈ Project thumbnails in the project list, plus the
--with-examplesflag to seed example projects on startup, and toast notifications replacing browser alerts. - π₯ Real-time collaboration β Opt-in via
curio start --collab. Co-edit a project with presence, soft locks, and shared execution output. See docs/COLLABORATION.md.
See the full release notes for more. To get started, follow the usage guide or jump into the quick start tutorial. If you'd like to contribute, read the contribution guide.
Curio: A Dataflow-Based Framework for Collaborative Urban Visual Analytics
Gustavo Moreira, Maryam Hosseini, Carolina Veiga, Lucas Alexandre, Nico Colaninno, Daniel de Oliveira, Nivan Ferreira, Marcos Lage, Fabio Miranda
IEEE Transactions on Visualization and Computer Graphics (Volume: 31, Issue: 1, January 2025)
Paper: [DOI], [Arxiv]
This project is part of the Urban Toolkit ecosystem, which includes Autark. Curio is a framework for collaborative urban visual analytics that uses a dataflow model with multiple abstraction levels to facilitate collaboration across the design and implementation of visual analytics components. Autark is a flexible and extensible visualization framework that enables the easy authoring of web-based urban visualizations.
For detailed instructions on how to use the project, please see the usage document. To install, fork, or publish node packages, see the node catalog guide. A set of examples can be found here.
π³ Curio supports a Docker-based setup for easier installation and orchestration of all components. See the usage guide for instructions on running Curio with Docker.
π To host a multi-user instance on your own server with HTTPS, see the deployment guide.
If you'd like to contribute, see the contributions and architecture documents for guidelines.
@ARTICLE{moreira2025curio,
author={Moreira, Gustavo and Hosseini, Maryam and Veiga, Carolina and Alexandre, Lucas and Colaninno, Nicola and de Oliveira, Daniel and Ferreira, Nivan and Lage, Marcos and Miranda, Fabio},
journal={IEEE Transactions on Visualization and Computer Graphics},
title={Curio: A Dataflow-Based Framework for Collaborative Urban Visual Analytics},
year={2025},
volume={31},
number={1},
pages={1224-1234},
doi={10.1109/TVCG.2024.3456353}
}
Curio is MIT Licensed. Free for both commercial and research use.
Curio and the Urban Toolkit have been supported by the National Science Foundation (NSF) (Awards #2320261, #2330565, and #2411223), Discovery Partners Institute (DPI), and IDOT.

