Rerun is an easy-to-use database and visualization toolbox for multimodal and temporal data. Try it live at https://rerun.io/viewer.
- Python:
pip install -U rerun-sdk - Rust:
cargo add rerunandcargo install rerun-cli --locked - Online demo: https://rerun.io/viewer
- C++ FetchContent: https://github.com/rerun-io/rerun/releases/download/0.31.1/rerun_cpp_sdk.zip
🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-31
✨ Overview & highlights
Component mappings
https://github.com/user-attachments/assets/18954263-1b34-4819-869d-02fa8117d6a3
You can now map components more generally. Want to display your mesh as a point cloud? Just add a point cloud visualizer and select the vertex positions as the source.
Prettier primitives
https://github.com/user-attachments/assets/4e523454-4b3c-492b-a2a4-463f0f17ec51
Our 3D primitives got a new default look!
Performance improvements
- Optimization for point clouds, videos shared among views, data ingestion, and recordings with many entities.
⚠️ Breaking changes
- MCAP "layers" renamed to "decoders" cf0a800
rr.Serverandrr.CatalogClient:addressparameter/method renamed tourl;rerun server --addressis now--host#12402Entry.update(name=…)is deprecated in favor ofEntry.set_name(…)#12370
🧳 Migration guide: https://rerun.io/docs/reference/migration/migration-0-31
🔎 Details
🪵 Log API
- Redesign Lens
OpAPI to beSelector-based d962bfe - Add cull mode for front/back face culling on
Mesh3Dbe5a50f - Add
frame_prefixtoUrdfTreefor multi-robot URDF setups 8e27391
🐍 Python API
- Improve
DynamicArchetypedocs with example on how to use builtin batch types 2052af5 - Narrow typing for dynamic archetype 7b0bfaf
- Fix wrong variable in error message for extra args in log() #12674 (thanks @jashshah999!)
- Allow re-registering the same blueprint to a dataset fd03bf0
- Fix
using_index_valuenot accepting pyarrow data of the correct types 62b8ac3 - Fix passing color columns with one element in the python sdk e312d36
- Entity filter: do not include all properties if a single property is included 5d3a25f
- Support binary stream 0a05422
- Reuse precomputed timelines dict in send_columns instead of re-iterating indexes #12673 (thanks @jashshah999!)
- Add description back to python package 6ab7971
- Add
save()toRecording4ab863a - Add
compress()andas_pil_image()toDepthImagewith PNG compression bde6870 - Introduce
ChunkAPI to the Python SDK 32eb891 - Adds
rr.logoutto Python SDK 97af60e - Disable cloud vector & full-text-search for now 3da7180
- Add ContentFilter for cleaner filter_contents 8ce6d13
- Add cloud provider details to end point c8dd0c8
- Add component descriptor helper to Python archetype classes 8a2ef31
🦀 Rust API
🪳 Bug fixes
- Fixes recording staying open when user logs out 80ab340
- Selection panel: show all values at the latest time stamp 474dbe8
- Gracefully handle Rrd Manifest failures 900edfd
- Fix docs urls being loaded as data sources 80e3ce6
- Fix: fix clicking names of color maps 92529ca
- Fix rare ui id conflict in list item content 0966696
- Fix drag'n'drop issue on web 2d97010
- Handle
?url=rerun+http://…in web viewer 0a47b41 - Fix weird tooltip sizes in streams view 0d98570
- Fix showing empty label boxes for various 2d & 3d visualizations 9c547ce
- Fix bounding box calculation for GLB/GLTF & DAE meshes 8382f14
- Fix eye camera being affected by previous recording of the same application/dataset 1b9a60f
- Ignore NaN/Inf values for bounding box calculations used in 3d eye camera operations 3e26be7
- Ensure that share modals are always on top 8d8eb40
- Add zoom in limit to camera, because zooming in too far broke the view 4534001
- Bump
lz4_flexto prevent web viewer crashes 9355dd8 - Improve handling of texture creation errors ea4283e
- Fix prematurely resetting to Welcome screen even if stream finished properly 46d86eb
- Fix flipping chunks between loaded/unloaded when hovering time panel 0e51fa6
- Fix unset/reset not being greyed out for previously cleared out values 45f6ed2
- Fix default blueprint not being activated for Redap segments e66cb92
- Don't close active recording when opening settings ea86ae9
- Fix some AV1 videos not playing in the WebViewer c062098
- Fix
sensor_msgs::PointCloud2MCAP parser for empty point clouds #12684 (thanks @Woodii1998!) - Stop time control following if set time is called acba7b3
- Support LeRobot feature names on the
ListArraypath 30a86e1
🌁 Viewer improvements
- Support custom bool types in plots 888a9e8
- Add util to compute column of
Transform3Dupdates for URDF joints #12666 - Unified color swatches c020c80
- Make more visualizer errors point to specific components that are in an invalid state 19b2c79
- Add context menu to visualizer pills on time series view 136a2d1
- Make many more required components ui editable 2f791ad
- Limit number of plots only for non-builtin components and increase the limit 0d66ceb
- Show all visualizable scalars on time series add-visualizer menu 90bf07b
- Stop warning on synthetic
oneofprotobuf fields 975d3ba - Allow saving image previews in the selection panel 6e09d66
- Support plotting components that contain
FixedSizeListArray53d2864 - Add
!operator toSelectorto assert non-nullvalues a53c683 - Allow all visualizers to be created for any datatype match 5d5c2f2
- Fix overrides in blueprints created by a native viewer no showing up on the web viewer and vice versa 74a30f2
- Displays WorkOS organization when logged in 784c7b5
- Use full recording schema in manifest ingestion 6589388
- Change default fill mode for primitives 9d54afd
- Fixes logout + login into a different account 15d18e7
- Fix spamming errors when trying to show static scalars in the time series view f9ca495
- Ensure that URDF primitives are colored correctly 25ee3cb
- Add 5% vertical margin to time series plot bounds 5beb61e
- Ignore outliers for focusing on 2d & 3d point clouds b367ae9
- Limit amount of heuristic lineseries from arbitrary sources 2f6d88f
- Adds cancel button to login flow 900887f
- Add
magnification_filtercomponent to all image archetypes & add bicubic filtering 2c1ccee - Truncate strings in syntax highlighted arrow ui to 100 chars d06fc95
- Show login information on token mismatches in viewer 710ccd9
- Allow cpu->gpu transfer buffer to shrink again 4977603
- Fixes login in Safari 750f65f
- Add support for subtasks in LeRobot loader 464ff56
🗄️ OSS server
- Allow OSS server to register existing segments to new datasets d0b8f78
🚀 Performance improvements
- Remove collapsing time gaps for performance reasons eb0b67a
- Share video players between views, de-duplicating video decoding work between pinholes and 2d views 64f1003
- Support progressive ingest of the rrd manifest 9a67723
- Performance improvements for many views + many entities 8f297fe
- Speed up many-entities (Refactor view class store subscriber) e24407f
- Much faster 3D point clouds cb62f8c
- Add
ChunkStoreDiff::SchemaAdditionand use it for heuristics 822ac41
🧑🏫 Examples
- Add any scalar example ffd1687
📚 Docs
- Add generalized example (snippet + doc page) for component mappings 41cb42f
- Corrected the docs example for the
DynamicArchetype64d466d - Adding snippet showing how to register a dataset as a subset of an existing dataset 09814c0
🖼 UI improvements
- Visibility control from scalar visualizer list 5f03f15
- Make arrow values expandable if they don't fit b30522c
- Add scrolling to column popup a9a00ad
- Allow to switch between recordings in chunk store browser d449525
- Don't flicker videos to black when there's unloaded samples dc8c31f
- Show tooltip even when hovering play head in the time series view d8bd248
- Show number of columns and rows in the recording ui 29a88f9
- Collapse multi-line labels if there are too many on screen 2916462
- Fix slow resizing of table columns 299969c
- Default to only showing active timeline in dataframe and log views 4df6c62
- Refactor chunk browser UI 5b6017b
- Add cmd-K as secondary shortcut for command palette 6d5d512
- Add fade to scroll areas to indicate that scrolling is possible c0b8685
- Better time range deselect UX c947940
- Better legend ui on plot views (time series & bar chart) bc7393b
🕸️ Web
- Enable WebGPU rendering on Safari (MacOS Tahoe+ only) 76bd562
- Update wasm-bindgen to 0.2.108 7314d4d
- Fix(web-viewer): clean up loader when startup is interrupted #12696 (thanks @Woodii1998!)
🧢 MCAP
- Protobuf schema evolution and optional field support in Lenses 75a6dbc
- Improve Lenses errors and debug output 47596e0
- Support also "sec" & "nsec" in
TimeSpecToNanosf7eb4cd - Add a list of available layers to mcap convert cli bc46df7
- Add
--timestamp-offset-nsoption to MCAP CLI 787e6cc - Decode MCAP metadata records into
__properties0b43178 - Split
re_arrow_combinatorsintore_lensesandre_lenses_corea9f4ca3 - Rename MCAP
LayertoDecodercf0a800 - Default to UNIX epoch timestamp timeline in MCAP decoders bb6aee5
- Support protobuf messages with
Mapand arbitraryoneoffields 5ba2817 - Create static timeline for /tf_static ROS 2 MCAP channels 959f77f
- Ignore empty MCAP channels f0c99c5
- Ignore 'rosbag2' metadata field 357aab8
- Load URDF from
/robot_descriptionROS 2 string topics in MCAP 426fcfc - Make
SelectorevaluationArrayRef-based 35dff31 - Remove lenses that produce static columns 95ba113
📦 Dependencies
- Upgrade
jsonwebtokento 10.3 10a42b6