--- title: How does Rerun work? order: 0 --- Rerun has several components manage multimodal data across its lifetime. This page explains what they are and how they connect. ## The components ### Logging SDK The Logging SDK is how you get data into Rerun. Available for Python, Rust, and C++, it runs inside your application and logs data using [archetypes](logging-and-ingestion/entity-component.md) — structured types like `Points3D`, `Image`, or `Transform3D`. Data can be streamed directly to the Viewer, saved to `.rrd` files, or both. ### Viewer The Viewer visualizes your data. It comes in two forms: - **Native Viewer**: A desktop application for Linux, macOS, and Windows - **Web Viewer**: A browser based application The viewer includes a [**Chunk Store**](logging-and-ingestion/chunks.md) (in-memory database for logged data) and a **gRPC endpoint** that accepts streamed data from the SDK. The Web Viewer has performance limitations compared to the native viewer. It runs as 32-bit Wasm and is limited to ~2 GiB memory in practice, limiting the amount of data that can be visualized simultaneously. It also runs single-threaded, making it generally slower than native. Both viewers can be extended: the Native Viewer through its [Rust API](../howto/visualization/extend-ui.md), and the Web Viewer can be [embedded in web applications](../howto/integrations/embed-web.md) or [Jupyter notebooks](../howto/integrations/embed-notebooks.md). ### Catalog server The catalog server provides persistent storage and indexing for large-scale data. It organizes data into: - **Datasets**: Named collections of related recordings - **Segments**: Individual `.rrd` files registered to a dataset Data is served via the **redap** protocol (**Re**run **Da**ta **P**rotocol). The catalog server is available as: - Open-source server for local development (`rerun server`) - **Rerun Hub**, our managed offering for production deployments ### Catalog SDK The Catalog SDK (`rerun.catalog`) is a Python library for querying and manipulating the data stored on a catalog server. Combined with Rerun Hub, it allows building complex data transformation pipelines. ## How they connect
## What ships where? ### Hosted web viewer The Web Viewer is available at [rerun.io/viewer](https://rerun.io/viewer). It's a great place to start exploring the examples. ### CLI The `rerun` binary bundles multiple tools in one: - **Native Viewer** for visualization - **OSS catalog server** (via `rerun server`) - **RRD tools** for file manipulation - **Web Viewer** (via `rerun --serve-web`) The Rerun CLI can be downloaded from [GitHub](https://github.com/rerun-io/rerun/releases) or as part of the Python SDK. It can also be built from source with `cargo install rerun-cli --locked`. See: [CLI reference](../reference/cli.md) ### Python SDK The Python SDK includes: - **Logging SDK** - **Catalog SDK** - **CLI**, including the Viewer (the `rerun` CLI is made available by installing the `rerun-sdk` Python package) See: Python SDK [installation instructions](../getting-started/install-rerun/python.md) and [quick start guide](../getting-started/data-in.md) ### Rust SDK The Logging SDK as a Rust crate. See: Rust SDK [installation instructions](../getting-started/install-rerun/rust.md) and [quick start guide](../getting-started/data-in.md) ### C++ SDK The Logging SDK for C++ projects. See: C++ SDK [installation instructions](../getting-started/install-rerun/cpp.md) and [quick start guide](../getting-started/data-in.md) ### The `web-viewer` and `web-viewer-react` NPM packages These NPM packages bundle the Web Viewer for inclusion on a website. See: the `web-viewer` package [reference](../reference/npm.md) ## Common workflows ### Stream to Viewer The simplest workflow: stream data directly from your code to the Viewer for live visualization.
Minimal example: snippet: concepts/how-does-rerun-work/log-to-grpc Best for: development, debugging, real-time monitoring. ### Save to RRD, view later Log data to `.rrd` files, then open them in the Viewer whenever needed. Files can be loaded from disk or URLs.
Minimal example: snippet: concepts/how-does-rerun-work/log-to-rrd And later: ```sh $ rerun /tmp/my_recording.rrd ``` Best for: sharing recordings, offline analysis, archiving. ### Store on a catalog server Register `.rrd` files with a catalog server for persistent, indexed storage. Query and visualize on demand.
Minimal example of creating a dataset and registering files: ```python import rerun as rr client = rr.catalog.CatalogClient("rerun://example.cloud.rerun.io") dataset = client.create_dataset("my_data") dataset.register(["s3://my-rrd-files/recording1.rrd", "s3://my-rrd-files/recording2.rrd"]) ``` Best for: large datasets, team collaboration, production pipelines. ### Query and transform data Use the Catalog SDK to query data from a catalog server, process it, and write results back. Visualization is available at any time.
Minimal example of querying a dataset: ```python import datafusion as dfn import rerun as rr client = rr.catalog.CatalogClient("rerun://example.cloud.rerun.io") dataset = client.get_dataset("my_data") df = dataset.filter_contents("/obs").reader(index="log_time") # `df` is a DataFusion dataframe df.filter(dfn.col("obs:Scalars:scalars").is_not_null()).count() # count observations in recording ``` Best for: data pipelines, batch processing, ML training data preparation.