rerun server (or rr.server.Server in Python) runs an open-source catalog server on your machine.
It serves datasets of .rrd files and Lance tables to the Viewer and to the catalog SDK.
It is meant for local development and small setups.
For persistent, shared storage, use Rerun Hub.
Starting the server
rerun server -d my_dataset=/path/to/recordings -t my_table=/path/to/table.lanceYou can run rerun server without any options.
Without -d and -t, the server starts with an empty catalog, and you can create datasets from the SDK.
-d, --dataset [NAME=]DIRcreates a dataset from every.rrdfile in a directory. WithoutNAME=, the dataset is named after the directory. Can be repeated.-t, --table [NAME=]PATHloads a Lance table. Can be repeated.-p, --portsets the port (default51234), and--hostthe address to listen on (default0.0.0.0).--cors-allow-originallows web Viewers on other origins thanlocalhost,127.0.0.1, andrerun.io(and its subdomains).
See the CLI reference for all options.
In Python:
import rerun as rr
server = rr.server.Server(
port=51234,
datasets={
"my_dataset": "/path/to/recordings", # a directory
"other_dataset": ["a.rrd", "b.rrd"], # a list of files
},
)
client = server.client()Connect a Viewer with rerun rerun+http://localhost:51234.
See Query data out of Rerun for querying.
Everything is in memory
The server keeps the catalog (datasets, entries, and their IDs) in memory. When it stops, everything you created or registered while it ran is gone.
- On restart, the server creates new IDs for its datasets and tables.
Dataset names stay the same, but URLs that contain a dataset ID (such as the ones from
segment_url) stop working. - Segment IDs are the recording IDs of the
.rrdfiles, so they stay the same as long as you load the same files. - Datasets that you create with
client.create_dataset(), and files that you register withdataset.register(), must be created and registered again after a restart.
The .rrd files themselves stay on disk.
Files that have a footer index are read from disk on demand; files without one are loaded into memory in full.
Directories are scanned once
-d (and a directory in datasets=) reads the directory once, at startup.
It only loads files that end in .rrd, and does not look in subdirectories.
The server does not watch the directory for new files (see missing features).
To add new files, register them with dataset.register(), or restart the server.
Only local files can be registered
dataset.register() on the open-source server accepts file:// URIs of files on the server's own file system:
from pathlib import Path
dataset.register([Path("recording.rrd").resolve().as_uri()]).wait()URIs for object stores, such as s3:// or gs://, are not supported.
To register recordings from object storage, use Rerun Hub, or download the files first.
Compared to Rerun Hub
| Open-source server | Rerun Hub | |
|---|---|---|
| Catalog storage | In memory, lost on restart | Persistent |
| Registration | Local file:// paths only | Object storage, such as s3:// |
| Authentication | None | Login or token (see rerun auth) |
| Deployment | One process that you run yourself | Managed service |
See Rerun Hub for more.