Skip to main content

Shareable links

Build and share deep links with your teammates to open Foxglove with specific layouts and data sources.

To open Foxglove using a specific layout or data source, construct a "deep link" URL using the format:

https://app.foxglove.dev/{YOUR-FOXGLOVE-SLUG}/view?param1=value2&param2=value2

Supported query parameters are documented below, or you can copy any URL while you are using the app.

Web vs. desktop​

By default, links will open in the browser. You can open the desktop app instead using the openIn parameter:

parametertyperequireddescription
openInstringweb (default)
desktop

Using openIn=desktop will attempt to open the Foxglove desktop app (assuming it is installed), while providing a landing page giving users the option to download the app (if it is not installed), or to open the link in their browser instead. This is the preferred approach to open the desktop app, as it provides a graceful browser fallback option.

Alternatively, if you are sure the user has the desktop app installed, you can use the foxglove:// URL scheme to open it. This provides no browser fallback, and will fail silently if the desktop app is not installed.

prefixexample
https://app.foxglove.dev/{YOUR-FOXGLOVE-SLUG}/viewhttps://app.foxglove.dev/{YOUR-FOXGLOVE-SLUG}/view?ds=sample-nuscenes&openIn=desktop
foxglove://openfoxglove://open?ds=sample-nuscenes

Opening via command line​

You can also use pass a foxglove://open URL as an argument to the desktop app binary when opening via CLI. For example:

$ foxglove-studio "foxglove://open?ds=foxglove-websocket&ds.url=ws://myrobot:8765/"

This will open the Foxglove desktop app and connect to ws://myrobot:8765/ over the Foxglove websocket protocol.

Layouts​

To load a saved layout (personal or team):

parametertyperequireddescription
layoutIdstring✓Foxglove's ID for a remotely saved layout

To get a URL with the correct layoutId param, open the web app and click your desired layout in the "Layouts" menu.

Timestamp​

parametertyperequireddescription
timetimestamp
(RFC3339)
Timestamp to seek to (for non-live data sources)

Data sources​

To specify your data source, use the ds parameter as documented according to your desired data source below.

For example, a Rosbridge connection may look like the following:

https://app.foxglove.dev/{YOUR-FOXGLOVE-SLUG}/view?ds=rosbridge-websocket&ds.url=ws%3A%2F%2Flocalhost%3A9090&layoutId=2644147b-f205-456c-ace9-69466aaac0b7

Foxglove WebSocket​

parametertyperequireddescription
dsstring✓foxglove-websocket
ds.urlstring✓WebSocket URL

Rosbridge​

parametertyperequireddescription
dsstring✓rosbridge-websocket
ds.urlstring✓WebSocket URL

ROS 1 Native​

(Supported on desktop only)

parametertyperequireddescription
dsstring✓ros1-socket
ds.urlstring✓ROS Master URI

Foxglove​

parametertyperequireddescription
dsstring✓foxglove-data-platform
ds.deviceIdstringOne of ds.deviceId, ds.recordingId or ds.recordingKey is requiredRobot ID
ds.starttimestamp
(RFC3339)
With ds.deviceIdStart of data playback range
ds.endtimestamp
(RFC3339)
With ds.deviceIdEnd of data playback range
ds.recordingIdstringOne of ds.deviceId, ds.recordingId or ds.recordingKey is requiredID of the recording to open
ds.recordingKeystringOne of ds.deviceId, ds.recordingId or ds.recordingKey is requiredKey of the recording to open
ds.importIdstringDeprecated. Prefer ds.recordingId insteadID of the import to open

Remote files​

parametertyperequireddescription
dsstring✓remote-file
ds.urlstring✓URL to .bag or .mcap file