Repository navigation
Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data.
- Python:
pip install -U rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.41.0/rerun_cpp_sdk.zip
- Online demo: https://rerun.io/viewer
✨ Overview & highlights
-
Automatic visualization of raw ROS messages: the Viewer sets up component mappings for common
std_msgsandsensor_msgstypes -
New streaming dataset-query pipeline, enabled by default, with bounded memory and reliable cancellation
-
Copy table cells, rows, and selected rows from the context menu
-
Hovering a truncated value shows all of it in a tooltip (video)
-
The text log view loads data lazily and scales to much larger logs
-
The web viewer wasm is served with Brotli, a 35% smaller download
🧪 Experimental and unstable
These may change in future releases, and unstable types may not stay backwards compatible.
- Table columns show and edit any component type (video)
- Python
ViewerClientcan read schemas, read and write blueprints, run commands, and take screenshots - Typed viewer API in the JS web viewer, with a
viewer_controlexample - Segment preview time controls in the table blueprint
📖 Release notes: https://rerun.io/docs/changelog/changeset-0-41#highlights
⚠️ Breaking changes
- Chained
filter_contents()calls intersect - Table blueprints:
Column(cell=…)is nowColumn(column_type=…), and the*Cellclasses are removed - Duplicate and segment-limit registration failures are reported by the registration task
ViewerClient.set_timetakes aplay_state- Rust 1.98 is the minimum supported version
- Rust:
build_info()removed, the binary passes in its build info
🧳 Migration guide: https://rerun.io/docs/changelog/changeset-0-41#breaking-changes
🔎 Details
🌊 C++ API
- Configurable gRPC flush timeout in the C and C++ SDKs 595ba5f
🐍 Python API
- Add every ViewerControl operation to the Python ViewerClient 4e7c6f0
- Improve
SetTimeCursorViewerControlAPI d0ec12d - Rename
GetViewerStatetoGetState2a19757 - Fetch the dataset schema once per dataset revision aa0bfe3
- Optionally account for assets with
segment.schema()and use/GetSchemaswhen available 01054be
🦀 Rust API
🪳 Bug fixes
- Rely on TLS certificates provided by the OS for all requests 6aae3bb
- Bump pulldown-cmark to 0.13.5 for RUSTSEC-2026-0414 6da992a
- Fix incorrect behavior of
DatasetSelectionwith no segments selected 2430ac9 - Prevent overwrites from concurrent write access grants b2639ae
- Fix chunk-scanner cache memory accounting 40c31ae
- Loading spinner next to Catalog name for ongoing registrations 0c35191
- Fix default blueprint sometimes not loading for recordings that were shown as previews c79700f
- Fix empty rows for video streams & encoded images c50ba3a
- Keep up better when keyframes are logged in the live case 6c6d00a
- Fix undo history filling up when the JS or gRPC API changes the time 447b630
- Fix hardcoded units in spatial depth labels a576790
- Fix Arrow type hover labels overlapping scrollbars 7050fa0
- Fix
missing grpc-status traileron web viewer 9c4e5c4 - Web viewer: import
./re_viewer.jswith its extension, so it works without a bundler f3e2374 - Fix audio issues on web a9880d0
🌁 Viewer improvements
- Automatic visualization of raw ROS messages through heuristic component mappings e88ef2e
- Use rerun components for table columns f4626ea
- Show arrow ui tooltip when hovering truncated table fields 24b39d1
- Preview time controls in blueprint a3e5790
- Start previews at their midpoint b9a651e
🗄️ OSS server
- Report duplicate and segment-limit registration failures through the registration task f9eb37f
🚀 Performance improvements
- Text log view no longer queries entire timeline, making it much more scalable f6161a3
- Serve the web viewer wasm with Brotli (35% smaller download) aca2d09
🖼 UI improvements
- Allow copying table cells and rows 7947439
🕸️ Web
- Add WebViewer methods for all ViewerControl commands 6b16fd7
- Move the WebViewer time and recording methods onto the Viewer Control API e5fc7f0
- Async WebViewer.open and close, through ViewerControl b4b4a11
- Take screenshots over ViewerControl as PNG bytes, and in the web viewer 16350de
🤷 Other
- Replace
cargo-run-wasmwith a Python script forre_rendererweb examples #12982 (thanks @michele-xilo!)
