{"repo":"Flaminis/Dalaran","free":true,"listed":false,"github":"https://github.com/Flaminis/Dalaran","clone":"git clone https://github.com/Flaminis/Dalaran.git","description":"Dalaran — Apache-2.0, robotics-first visualization and data infrastructure for multimodal time-series. ROS 2 native, reads existing .rrd recordings. A hard fork of Rerun.","language":"Rust","stars":967,"topics":["apache2","computer-vision","lidar","pointcloud","python","robotics","ros2","rust","time-series","visualization"],"license":"Apache-2.0","category":"robotics_visualization","readme_excerpt":"<p align=\"center\">\n  <img width=\"360\" alt=\"Dalaran\" src=\"docs/assets/dalaran-wordmark.svg\" />\n</p>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/dalaran-sdk/\"><img alt=\"PyPI\" src=\"https://img.shields.io/pypi/v/dalaran-sdk.svg\"></a>\n  <a href=\"https://crates.io/crates/dalaran\"><img alt=\"crates.io\" src=\"https://img.shields.io/crates/v/dalaran.svg\"></a>\n  <a href=\"LICENSE\"><img alt=\"Apache-2.0\" src=\"https://img.shields.io/badge/license-Apache--2.0-blue.svg\"></a>\n</p>\n\n# Dalaran\n\n**Dalaran is an Apache-2.0, robotics-first observability and visualization stack\nfor multimodal time-series data — ROS 2 topics, LiDAR sweeps, camera streams,\nIMU, and TF transforms, recorded and replayed on one timeline.**\n\nYou log data from your robot, your simulator, or an offline pipeline; Dalaran\nstores it in an Arrow-backed columnar chunk store, renders it in a 3D/2D viewer\nthat stays in sync across every sensor, and hands the same data back to you as\ndataframes when you want to compute on it instead of look at it.\n\n---\n\n## 60-second quickstart\n\n### Python\n\n```sh\npip install dalaran-sdk\n```\n\n```python\nimport dalaran as dl\nimport numpy as np\n\ndl.init(\"dalaran_example_app\", spawn=True)  # spawn a viewer process and stream to it\n\npositions = np.random.default_rng(0).normal(size=(1000, 3)).astype(np.float32)\ncolors = np.random.default_rng(1).integers(0, 255, size=(1000, 3), dtype=np.uint8)\n\nfor frame in range(100):\n    dl.set_time(\"frame\", sequence=frame)\n    dl.log(\"world/points\", dl.Points3D(positions + frame * 0.01, colors=colors))\n```\n\nWrite to a file instead of a live viewer with `dl.save(\"session.dlr\")`, then\nopen it later with `dalaran session.dlr`.\n\n### Rust\n\n```sh\ncargo add dalaran\n```\n\n```rust\nfn main() -> Result<(), Box<dyn std::error::Error>> {\n    let rec = dalaran::RecordingStreamBuilder::new(\"dalaran_example_app\").spawn()?;\n\n    let positions: Vec<_> = (0..1000)\n        .map(|i| ((i % 10) as f32, ((i / 10) % 10) as f32, (i / 100) as f32))\n        .collect();\n\n    rec.set_time_sequence(\"frame\", 0);\n    rec.log(\"world/points\", &dalaran::Points3D::new(positions))?;\n\n    Ok(())\n}\n```\n\n### C++\n\nFetch the SDK in your `CMakeLists.txt` and link against `dalaran_sdk`:\n\n```cmake\ninclude(FetchContent)\nFetchContent_Declare(dalaran_sdk URL\n  https://github.com/Flaminis/Dalaran/releases/latest/download/dalaran_cpp_sdk.zip)\nFetchContent_MakeAvailable(dalaran_sdk)\ntarget_link_libraries(your_target PRIVATE dalaran_sdk)\n```\n\n```cpp\n#include <dalaran.hpp>\n\nint main() {\n    const auto rec = dalaran::RecordingStream(\"dalaran_example_app\");\n    rec.spawn().exit_on_failure();\n\n    rec.set_time_sequence(\"frame\", 0);\n    rec.log(\"world/points\", dalaran::Points3D({{0.0f, 0.0f, 0.0f}, {1.0f, 1.0f, 1.0f}}));\n}\n```\n\n### The viewer and CLI\n\nThe `dalaran` binary is both the viewer and the CLI. It ships with the Python\nwheel, or you can install it on its own:\n\n```sh\ncargo install dalaran-cli --locked\ndalaran --help\ndalaran session.dlr        # open a recording\ndalaran --serve            # serve a web viewer\n```\n\nRecordings are `.dlr` files and saved blueprints are `.dbl` files. Live streams\nand remote catalogs are addressed with `dalaran://` URIs.\n\n---\n\n## Why Dalaran\n\nEverything below is what Dalaran adds for robotics teams specifically, and\neverything below works today — it is code in this repository with tests, not a\nroadmap. What is *not* built yet lives in [ROADMAP.md](ROADMAP.md).\n\n- **`dalaran.robot`, a high-level robotics logging API** — one handle that knows\n  about a robot: joint states, base pose, sensor frames, and URDF-driven link\n  transforms, so you log `robot.log_joint_states(...)` instead of hand-rolling a\n  dozen entity paths and quaternion conversions. Point it at a URDF and joint\n  limits, joint axes and `<mimic>` joints are honoured for you.\n- **ROS 2 bridge and rosbag2 replay** — subscribe to live ROS 2\n  topics or replay a rosbag2 into Dalaran, backed by an **extensible message\n  registry** so you can teach it your own `.msg` types without patching the\n  core. Today the repository already ingests MCAP and a set of common ROS\n  message schemas.\n- **ROS axis-convention helpers** — REP-103/REP-105 conventions (`x`-forward\n  `z`-up, ENU vs. NED for positions *and* orientations, `map`/`odom`/`base_link`\n  frame semantics that make the direction hard to get backwards) as first-class\n  helpers, because silently mismatched axis conventions are the single most\n  common way a robotics visualization ends up wrong.\n- **Occupancy grids and costmaps** — `nav_msgs/OccupancyGrid`, `nav2_msgs/Costmap`\n  and nav2's `/global_costmap` and `/local_costmap` topics land on the `GridMap`\n  archetype with proper origin/resolution handling, instead of being flattened\n  into an untyped image. nav2's cost semantics are modelled properly, so\n  `INSCRIBED_INFLATED_OBSTACLE` and `LETHAL_OBSTACLE` are drawn as the categories\n  they are rather than as points on the cost gradient, a costmap's layers stack\n  as separate entities with their own draw order and opacity, and the rolling\n  local window keeps one entity while its origin moves.\n- **`dalaran doctor`** — a diagnostic subcommand that inspects your environment\n  (build info, wgpu adapters and drivers, `DALARAN_*` variables, headless and\n  ROS 2 setup, recording integrity) and tells you what is wrong in plain\n  language. It lives in the viewer binary, so it still runs when your Python\n  installation is the thing that is broken; `dalaran-doctor` covers the\n  interpreter and SDK/viewer version skew from the Python side.\n- **`.dlrpack` portable dataset bundles** — a single file that\n  carries recordings, the blueprint, referenced assets, and metadata, so\n  \"here is the run that failed\" is one artifact you can hand to a colleague.\n- **Apache-2.0 throughout, self-hostable** — no dual-licence ambiguity, no\n  hosted-service dependency. Everything in this repository runs on your own\n  machines, and the catalog server is part of the open-source tree.\n\n## Reading existing `.rrd` recordings\n\nDalaran did not change the storage container. The on-disk format still uses the\n`RRF2` fourcc, so `dalaran recording.rrd` opens an upstream recording directly —\nno renaming and no conversion step — and `dalaran convert` will turn one into a\n`.dlr` if you want it normalized.\n\nHow far that goes, stated precisely, because \"compatible\" is easy to overclaim:\n\n- **Container and framing: compatible.** The stream header, framing and footer\n  are unchanged, and legacy `.rrd`/`.rbl` extensions are accepted everywhere\n  `.dlr`/`.dbl` are.\n- **Chunk data: compatible.** Upstream writes its Arrow metadata under `rerun:*`\n  and Dalaran writes `dalaran:*`; readers accept both, so chunks, entity paths,\n  timelines and segment ids resolve out of an upstream file.\n- **Blueprints from upstream: partial.** Some component descriptors in upstream\n  blueprint stores do not yet resolve here, so a recording's saved layout may be\n  ignored while its data loads. Being worked on.\n- **Very old recordings:** bounded by the same migration rules that apply\n  upstream. Recordings from long-past versions may need a migration pass.\n\n## Architecture\n\nRust crates live under `crates/` and are prefixed `dl_*`. The table lists the\nones worth knowing about first; each directory has its own `README.md`.\n\n| Crate | Group | What it does |\n| --- | --- | --- |\n| [`dalaran`](crates/top/dalaran) | top | Umbrella crate. What `cargo add dalaran` gives you. |\n| [`dalaran-cli`](crates/top/dalaran-cli) | top | The `dalaran` binary: viewer, CLI, web server. |\n| [`dl_sdk`](crates/top/dl_sdk) | top | The logging SDK proper: `RecordingStream` and sinks. |\n| [`dalaran_c`](crates/top/dalaran_c) | top | C API (`dl_`/`DL_` prefixed), which the C++ SDK wraps. |\n| [`dl_types`](crates/store/dl_types) | store | Generated archetypes, components, and datatypes. |\n| [`dl_log_types`](crates/store/dl_log_types) | store | Entity paths, timelines, and core log primitives. |\n| [`dl_chunk`](crates/store/dl_chunk) | store | The Arrow chunk: the unit of data everything moves in. |\n| [`dl_chunk_store`](crates/store/dl_chunk_store) | store | Indexed storage and retrieval of chunks. |\n| [`dl_query`](crates/store/dl_query) | store | Latest-at and range queries over the store. |\n| [`dl_dataframe`](crates/store/dl_dataframe) | store | Dataframe view of a recording, for getting data back out. |\n| [`dl_log_encoding`](crates/store/dl_log_encoding) | store | The `.dlr` container: encode, decode, migrate. |\n| [`dl_mcap`](crates/store/dl_mcap) | store | MCAP ingestion. |\n| [`dl_ros_msg`](crates/utils/dl_ros_msg) | utils | ROS message schema parsing and decoding. |\n| [`dl_tf`](crates/store/dl_tf) | store | Transform trees and frame resolution. |\n| [`dl_server`](crates/store/dl_server) | store | Self-hostable catalog/data server. |\n| [`dl_viewer`](crates/viewer/dl_viewer) | viewer | The viewer application shell. |\n| [`dl_renderer`](crates/viewer/dl_renderer) | viewer | `wgpu` rendering backend. |\n\nLanguage bindings live in [`dalaran_py/`](dalaran_py) (Python, package\n`dalaran`, distribution `dalaran-sdk`), [`dalaran_cpp/`](dalaran_cpp) (C++,\nnamespace `dalaran::` with the alias `dl`), and [`dalaran_js/`](dalaran_js)\n(web).\n\n[`ARCHITECTURE.md`](ARCHITECTURE.md) has the long version.\n\n## Documentation\n\n- [User docs](docs/content) — concepts, how-to guides, and reference\n- [Code snippets index](docs/snippets/INDEX.md)\n- [Examples](examples)\n- [`BUILD.md`](BUILD.md) — building from source\n- [`ARCHITECTURE.md`](ARCHITECTURE.md) — how the pieces fit together\n- [`ROADMAP.md`](ROADMAP.md) — what we are doing next, and what we are not\n\n## Status\n\nDalaran is under active development and the API is still evolving. Expect\nbreaking changes between releases, and read [`CHANGELOG.md`](CHANGELOG.md)\nbefore upgrading. We would rather ship a small honest surface than a large\nspeculative one, so features listed as *in progress* above are exactly that.\n\n## Contributing\n\nBug reports, robotics-integration reports, and pull requests a","default_branch":"main","files":8177,"tree":[".DALARAN_ROOT",".cargo/config.toml",".cargo/cranelift.toml",".clang-format",".config/nextest.toml",".dockerignore",".editorconfig",".gitattributes",".github/CODEOWNERS",".github/ISSUE_TEMPLATE/annoyance_report.md",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/config.yml",".github/ISSUE_TEMPLATE/feature_request.md",".github/ISSUE_TEMPLATE/robotics_integration.md",".github/PULL_REQUEST_TEMPLATE.md",".github/workflows/README.md",".gitignore",".idea/.gitignore",".idea/vcs.xml",".idea/watcherTasks.xml",".mcp.json",".prettierignore",".prettierrc.toml",".python-version",".run/viewer_fast.run.xml",".rustfmt.toml",".typos.toml",".vscode/extensions.json",".vscode/launch.json",".vscode/settings.json","AGENTS.md","ARCHITECTURE.md","ATTRIBUTION.md","BUILD.md","CHANGELOG.md","CLAUDE.md","CMakeLists.txt","CODE_OF_CONDUCT.md","CODE_STYLE.md","CONTRIBUTING.md","Cargo.lock","Cargo.toml","DESIGN.md","LICENSE","NOTICE","README.md","RELEASES.md","ROADMAP.md","SECURITY.md","TESTING.md","bacon.toml","ci_docker/Dockerfile","ci_docker/README.md","ci_docker/publish.sh","clippy.toml","crates/build/README.md","crates/build/dl_build_info/Cargo.toml","crates/build/dl_build_info/README.md","crates/build/dl_build_info/src/build_info.rs","crates/build/dl_build_info/src/crate_version.rs","crates/build/dl_build_info/src/lib.rs","crates/build/dl_build_tools/Cargo.toml","crates/build/dl_build_tools/README.md","crates/build/dl_build_tools/src/git.rs","crates/build/dl_build_tools/src/hashing.rs","crates/build/dl_build_tools/src/lib.rs","crates/build/dl_build_tools/src/rebuild_detector.rs","crates/build/dl_build_tools/src/rustfmt.rs","crates/build/dl_dev_tools/Cargo.toml","crates/build/dl_dev_tools/README.md","crates/build/dl_dev_tools/src/build_examples/dlr.rs","crates/build/dl_dev_tools/src/build_examples/example.rs","crates/build/dl_dev_tools/src/build_examples/install.rs","crates/build/dl_dev_tools/src/build_examples/manifest.rs","crates/build/dl_dev_tools/src/build_examples/mod.rs","crates/build/dl_dev_tools/src/build_examples/notebook.rs","crates/build/dl_dev_tools/src/build_examples/snippets.rs","crates/build/dl_dev_tools/src/build_examples/wait_for_output.rs","crates/build/dl_dev_tools/src/build_search_index/README.md","crates/build/dl_dev_tools/src/build_search_index/build.rs","crates/build/dl_dev_tools/src/build_search_index/ingest.rs","crates/build/dl_dev_tools/src/build_search_index/ingest/cpp.rs","crates/build/dl_dev_tools/src/build_search_index/ingest/docs.rs","crates/build/dl_dev_tools/src/build_search_index/ingest/examples.rs","crates/build/dl_dev_tools/src/build_search_index/ingest/python.rs","crates/build/dl_dev_tools/src/build_search_index/meili.rs","crates/build/dl_dev_tools/src/build_search_index/mod.rs","crates/build/dl_dev_tools/src/build_search_index/repl.rs","crates/build/dl_dev_tools/src/build_search_index/util.rs","crates/build/dl_dev_tools/src/build_web_viewer/README.md","crates/build/dl_dev_tools/src/build_web_viewer/lib.rs","crates/build/dl_dev_tools/src/build_web_viewer/mod.rs","crates/build/dl_dev_tools/src/main.rs","crates/build/dl_protos_builder/Cargo.toml","crates/build/dl_protos_builder/README.md","crates/build/dl_protos_builder/src/bin/build_re_remote_store_types.rs","crates/build/dl_protos_builder/src/lib.rs","crates/build/dl_types_builder/.gitignore","crates/build/dl_types_builder/Cargo.toml","crates/build/dl_types_builder/README.md","crates/build/dl_types_builder/build.rs","crates/build/dl_types_builder/definitions/reflection.fbs","crates/build/dl_types_builder/src/bin/build_re_types.rs","crates/build/dl_types_builder/src/codegen/common.rs","crates/build/dl_types_builder/src/codegen/cpp/array_builder.rs","crates/build/dl_types_builder/src/codegen/cpp/forward_decl.rs","crates/build/dl_types_builder/src/codegen/cpp/includes.rs","crates/build/dl_types_builder/src/codegen/cpp/method.rs","crates/build/dl_types_builder/src/codegen/cpp/mod.rs","crates/build/dl_types_builder/src/codegen/definitions/mod.rs","crates/build/dl_types_builder/src/codegen/docs/datatype_docs.rs","crates/build/dl_types_builder/src/codegen/docs/mod.rs","crates/build/dl_types_builder/src/codegen/docs/snippets_ref.rs","crates/build/dl_types_builder/src/codegen/docs/website.rs","crates/build/dl_types_builder/src/codegen/fbs/mod.rs","crates/build/dl_types_builder/src/codegen/mod.rs","crates/build/dl_types_builder/src/codegen/python/mod.rs","crates/build/dl_types_builder/src/codegen/python/views.rs","crates/build/dl_types_builder/src/codegen/rust/api.rs","crates/build/dl_types_builder/src/codegen/rust/arrow.rs","crates/build/dl_types_builder/src/codegen/rust/deserializer.rs","crates/build/dl_types_builder/src/codegen/rust/mod.rs","crates/build/dl_types_builder/src/codegen/rust/reflection.rs","crates/build/dl_types_builder/src/codegen/rust/serializer.rs","crates/build/dl_types_builder/src/codegen/rust/util.rs","crates/build/dl_types_builder/src/data_type.rs","crates/build/dl_types_builder/src/docs.rs","crates/build/dl_types_builder/src/format/cpp.rs","crates/build/dl_types_builder/src/format/fbs.rs","crates/build/dl_types_builder/src/format/mod.rs","crates/build/dl_types_builder/src/format/python.rs","crates/build/dl_types_builder/src/format/rust.rs","crates/build/dl_types_builder/src/lib.rs","crates/build/dl_types_builder/src/objects/from_fbs.rs","crates/build/dl_types_builder/src/objects/from_rust.rs","crates/build/dl_types_builder/src/objects/mod.rs","crates/build/dl_types_builder/src/reflection.rs","crates/build/dl_types_builder/src/report.rs","crates/build/dl_types_builder/src/type_registry.rs","crates/build/dl_types_builder_macros/Cargo.toml","crates/build/dl_types_builder_macros/README.md","crates/build/dl_types_builder_macros/src/lib.rs","crates/build/dl_types_builder_prelude/Cargo.toml","crates/build/dl_types_builder_prelude/README.md","crates/build/dl_types_builder_prelude/src/lib.rs","crates/build/dl_types_builder_prelude/tests/definitions.rs","crates/build/dl_web_tests/Cargo.toml","crates/build/dl_web_tests/README.md","crates/build/dl_web_tests/src/main.rs","crates/store/README.md","crates/store/dl_chunk/Cargo.toml","crates/store/dl_chunk/README.md","crates/store/dl_chunk/examples/chunk_latest_at.rs","crates/store/dl_chunk/examples/chunk_range.rs","crates/store/dl_chunk/src/batcher.rs","crates/store/dl_chunk/src/builder.rs","crates/store/dl_chunk/src/chunk.rs","crates/store/dl_chunk/src/iter.rs","crates/store/dl_chunk/src/latest_at.rs","crates/store/dl_chunk/src/lib.rs","crates/store/dl_chunk/src/merge.rs","crates/store/dl_chunk/src/range.rs","crates/store/dl_chunk/src/shuffle.rs","crates/store/dl_chunk/src/slice.rs","crates/store/dl_chunk/src/split.rs","crates/store/dl_chunk/src/transport.rs","crates/store/dl_chunk/src/unit_chunk.rs","crates/store/dl_chunk/tests/formatting.rs","crates/store/dl_chunk/tests/latest_at.rs","crates/store/dl_chunk/tests/memory_test.rs","crates/store/dl_chunk/tests/range.rs","crates/store/dl_chunk/tests/snapshots/formatting__format_chunk.snap","crates/store/dl_chunk/tests/snapshots/formatting__format_chunk_redacted.snap","crates/store/dl_chunk/tests/sorbet.rs","crates/store/dl_chunk/tests/timeline.rs","crates/store/dl_chunk/tests/with_mapped_component.rs","crates/store/dl_chunk_store/Cargo.toml","crates/store/dl_chunk_store/README.md","crates/store/dl_chunk_store/benches/gc.rs","crates/store/dl_chunk_store/src/compact.rs","crates/store/dl_chunk_store/src/dataframe.rs","crates/store/dl_chunk_store/src/drop_time_range.rs","crates/store/dl_chunk_store/src/entity_tree.rs","crates/store/dl_chunk_store/src/events.rs","crates/store/dl_chunk_store/src/gc.rs","crates/store/dl_chunk_store/src/lazy_store.rs","crates/store/dl_chunk_store/src/lib.rs","crates/store/dl_chunk_store/src/lineage.rs","crates/store/dl_chunk_store/src/missing_chunk_reporter.rs","crates/store/dl_chunk_store/src/profile.rs","crates/store/dl_chunk_store/src/properties.rs","crates/store/dl_chunk_store/src/query.rs","crates/store/dl_chunk_store/src/rebatch_videos.rs","crates/store/dl_chunk_store/src/snapshots/dl_chunk_store__lineage__tests__lineage_bootstrapped.snap","crates/store/dl_chunk_store/src/snapshots/dl_chunk_store__lineage__tests__lineage_leaky_compactions.snap","crates/store/dl_chunk_store/src/snapshots/dl_chunk_store__lineage__tests__lineage_volatile.snap","crates/store/dl_chunk_store/src/split_thick_thin.rs","crates/store/dl_chunk_store/src/stats.rs","crates/store/dl_chunk_store/src/store.rs","crates/store/dl_chunk_store/src/store_schema.rs","crates/store/dl_chunk_store/src/subscribers.rs","crates/store/dl_chunk_store/src/writes.rs","crates/store/dl_chunk_store/tests/compact.rs","crates/store/dl_chunk_store/tests/correctness.rs","crates/store/dl_chunk_store/tests/dataframe.rs","crates/store/dl_chunk_store/tests/drop_time_range.rs","crates/store/dl_chunk_store/tests/formatting.rs","crates/store/dl_chunk_store/tests/gc.rs","crates/store/dl_chunk_store/tests/memory_test.rs","crates/store/dl_chunk_store/tests/reads.rs","crates/store/dl_chunk_store/tests/snapshots/dataframe__schema_static_columns-2.snap","crates/store/dl_chunk_store/tests/snapshots/dataframe__schema_static_columns-3.snap","crates/store/dl_chunk_store/tests/snapshots/dataframe__schema_static_columns.snap","crates/store/dl_chunk_store/tests/snapshots/formatting__format_chunk_store.snap","crates/store/dl_chunk_store/tests/snapshots/memory_test__scalars_on_one_timeline_new.snap","crates/store/dl_chunk_store/tests/stats.rs","crates/store/dl_data_source/Cargo.toml","crates/store/dl_data_source/README.md","crates/store/dl_data_source/src/data_source.rs","crates/store/dl_data_source/src/fetch_file_from_http.rs","crates/store/dl_data_source/src/lib.rs","crates/store/dl_data_source/src/load_stdin.rs","crates/store/dl_data_source/src/stream_dlr_from_http.rs","crates/store/dl_dataframe/Cargo.toml","crates/store/dl_dataframe/README.md","crates/store/dl_dataframe/benches/next_row.rs","crates/store/dl_dataframe/examples/query.rs","crates/store/dl_dataframe/src/engine.rs","crates/store/dl_dataframe/src/lib.rs","crates/store/dl_dataframe/src/query.rs","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__async_barebones_static.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__async_barebones_temporal.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__barebones-2.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__barebones.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__clears-2.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__clears.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__filtered_index_range.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__filtered_index_values.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__filtered_is_not_null-2.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__filtered_is_not_null-3.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__filtered_is_not_null-4.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__filtered_is_not_null.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__query_static_any_values.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__selection-2.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__selection-3.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__selection-4.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__selection.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__sparse_fill_strategy_latestatglobal.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__using_index_values-2.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__using_index_values.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__view_contents-2.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__view_contents.snap","crates/store/dl_dataframe/src/snapshots/dl_dataframe__query__tests__view_contents_and_selection.snap","crates/store/dl_dataframe/src/utils.rs","crates/store/dl_datafusion/ARCHITECTURE.md","crates/store/dl_datafusion/Cargo.toml","crates/store/dl_datafusion/PIPELINE_BUDGET.md","crates/store/dl_datafusion/README.md","crates/store/dl_datafusion/src/analytics.rs","crates/store/dl_datafusion/src/batch_coalescer/coalesce_exec.rs","crates/store/dl_datafusion/src/batch_coalescer/coalescer.rs","crates/store/dl_datafusion/src/batch_coalescer/mod.rs","crates/store/dl_datafusion/src/catalog_provider.rs","crates/store/dl_datafusion/src/chunk_fetcher.rs","crates/store/dl_datafusion/src/cpu_count.rs","crates/store/dl_datafusion/src/dataframe_query_common.rs","crates/store/dl_datafusion/src/dataframe_query_provider.rs","crates/store/dl_datafusion/src/dataframe_query_provider/cpu_worker.rs","crates/store/dl_datafusion/src/dataframe_query_provider/io_loop.rs","crates/store/dl_datafusion/src/dataframe_query_provider_wasm.rs","crates/store/dl_datafusion/src/dataset_manifest.rs","crates/store/dl_datafusion/src/errors.rs","crates/store/dl_datafusion/src/grpc_streaming_provider.rs","crates/store/dl_datafusion/src/lib.rs","crates/store/dl_datafusion/src/local_chunk_store_provider.rs","crates/store/dl_datafusion/src/metrics_capture.rs","crates/store/dl_datafusion/src/pipeline_budget.rs","crates/store/dl_datafusion/src/pipeline_budget/tests.rs","crates/store/dl_datafusion/src/pushdown_expressions.rs","crates/store/dl_datafusion/src/segment_chunk_manifest.rs","crates/store/dl_datafusion/src/segment_table.rs","crates/store/dl_datafusion/src/table_entry_provider.rs","crates/store/dl_datafusion/src/wasm_compat.rs","crates/store/dl_entity_db/Cargo.toml","crates/store/dl_entity_db/README.md","crates/store/dl_entity_db/examples/memory_usage.rs","crates/store/dl_entity_db/src/chunk_requests.rs","crates/store/dl_entity_db/src/data_meta_per_timeline.rs","crates/store/dl_entity_db/src/dlr_manifest_index.rs","crates/store/dl_entity_db/src/dlr_manifest_index/chunk_prioritizer.rs","crates/store/dl_entity_db/src/dlr_manifest_index/collapsed_time_ranges.rs","crates/store/dl_entity_db/src/dlr_manifest_index/sorted_temporal_chunks.rs","crates/store/dl_entity_db/src/dlr_manifest_index/time_range_merger.rs","crates/store/dl_entity_db/src/entity_db.rs","crates/store/dl_entity_db/src/ingestion_statistics.rs","crates/store/dl_entity_db/src/instance_path.rs","crates/store/dl_entity_db/src/lib.rs","crates/store/dl_entity_db/src/sorted_range_map.rs","crates/store/dl_entity_db/src/store_bundle.rs","crates/store/dl_entity_db/src/versioned_instance_path.rs","crates/store/dl_entity_db/tests/clear.rs","crates/store/dl_grpc_client/Cargo.toml","crates/store/dl_grpc_client/README.md","crates/store/dl_grpc_client/src/lib.rs","crates/store/dl_grpc_client/src/read.rs","crates/store/dl_grpc_client/src/write.rs","crates/store/dl_grpc_client/src/write_table.rs","crates/store/dl_grpc_server/Cargo.toml","crates/store/dl_grpc_server/README.md","crates/store/dl_grpc_server/src/lib.rs","crates/store/dl_grpc_server/src/main.rs","crates/store/dl_grpc_server/src/priority_stream.rs","crates/store/dl_grpc_server/src/shutdown.rs","crates/store/dl_grpc_server/src/viewer_control.rs","crates/store/dl_hdf5/Cargo.toml","crates/store/dl_hdf5/README.md","crates/store/dl_hdf5/examples/gen_test_fixture.rs","crates/store/dl_hdf5/src/config.rs","crates/store/dl_hdf5/src/convert.rs","crates/store/dl_hdf5/src/error.rs","crates/store/dl_hdf5/src/lib.rs","crates/store/dl_hdf5/src/load.rs","crates/store/dl_hdf5/src/plan.rs","crates/store/dl_hdf5/src/streaming.rs","crates/store/dl_hdf5/src/walk.rs","crates/store/dl_hdf5/tests/assets/README.md","crates/store/dl_hdf5/tests/assets/h5py_compat.h5","crates/store/dl_hdf5/tests/integration.rs","crates/store/dl_importer/Cargo.toml","crates/store/dl_importer/README.md","crates/store/dl_importer/src/import_file.rs","crates/store/dl_importer/src/importer_archetype.rs","crates/store/dl_importer/src/importer_directory.rs","crates/store/dl_importer/src/importer_dlr.rs","crates/store/dl_importer/src/importer_external.rs","crates/store/dl_importer/src/importer_lerobot.rs","crates/store/dl_importer/src/importer_mcap/importer.rs","crates/store/dl_importer/src/importer_mcap/lenses/foxglove/mod.rs","crates/store/dl_importer/src/importer_mcap/lenses/mod.rs","crates/store/dl_importer/src/importer_mcap/lenses/ros2msg/mod.rs","crates/store/dl_importer/src/importer_mcap/mod.rs","crates/store/dl_importer/src/importer_mcap/robot_description.rs","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_camera_calibration.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_compressed_image.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_compressed_video.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_frame_transforms.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_location_fixes.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_log.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_point_cloud.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_poses_in_frame.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_raw_image.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/foxglove_voxel_grid.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_camera_info.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_log.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_magnetic_field.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_nav2_voxel_grid.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_occupancy_grid.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_pose_stamped.mcap","crates/store/dl_importer/src/importer_mcap/tests/assets/ros_string.mcap","crates/store/dl_importer/src/importer_mcap/tests/foxglove.rs","crates/store/dl_importer/src/importer_mcap/tests/mod.rs","crates/store/dl_importer/src/importer_mcap/tests/ros2msg.rs","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_camera_calibration.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_compressed_image.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_compressed_video.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_frame_transforms.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_location_fixes.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_log.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_point_cloud.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_poses_in_frame.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_raw_image.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/foxglove_voxel_grid.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_camera_info.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_log.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_magnetic_field.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_nav2_voxel_grid.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_occupancy_grid.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_pose_stamped.snap","crates/store/dl_importer/src/importer_mcap/tests/snapshots/ros_string.snap","crates/store/dl_importer/src/importer_mcap/tests/util.rs","crates/store/dl_importer/src/importer_parquet.rs","crates/store/dl_importer/src/importer_urdf/joint_transform.rs","crates/store/dl_importer/src/importer_urdf/mod.rs","crates/store/dl_importer/src/importer_urdf/robot_description_parser.rs","crates/store/dl_importer/src/importer_urdf/urdf_tree.rs","crates/store/dl_importer/src/lerobot/common.rs","crates/store/dl_importer/src/lerobot/datasetv2.rs","crates/store/dl_importer/src/lerobot/datasetv3.rs","crates/store/dl_importer/src/lerobot/mod.rs","crates/store/dl_importer/src/lib.rs","crates/store/dl_importer/tests/.gitattributes","crates/store/dl_importer/tests/assets/lerobot/.gitattributes","crates/store/dl_importer/tests/assets/lerobot/README.md","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/README.md","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/data/chunk-000/episode_000000.parquet","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/data/chunk-000/episode_000001.parquet","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/data/chunk-000/episode_000002.parquet","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/meta/episodes.jsonl","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/meta/episodes_stats.jsonl","crates/store/dl_importer/tests/assets/lerobot/v21_apple_storage/meta/info.json"],"storefront":"/r/Flaminis","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Flaminis/Dalaran/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}