Skip to content

urban-toolkit/curio

Repository files navigation

Curio Logo

Curio

A dataflow-based framework for collaborative urban visual analytics.

Paper Β· Website

Documentation Usage Discord

PyPI GitHub curio.urbantk.org curio-dev.urbantk.org

Full stack build Python Node.js Contributors License: MIT

🌐 Hosted instances β€” Try Curio in your browser without installing anything. Stable at curio.urbantk.org, and the latest main build 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.

Key features

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

Curio Use Cases

πŸ†• What's new

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.zip archives 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 AutkMap and AutkPlot node 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-examples flag 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.


Overview

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.

Usage and contributions

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.


Citation

@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}
}

License

Curio is MIT Licensed. Free for both commercial and research use.

Acknowledgements

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.

About

Curio: A Dataflow-Based Framework for Collaborative Urban Visual Analytics

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors