Skip to main content

Cloud

Load cloud files or resources for visualization. There are two kinds of cloud resources supported: Foxglove Data Platform, HTTP files.

Foxglove Data Platform

The Foxglove Data Platform is a cloud-based data storage and management solution that allows you to store and manage your data in the cloud. It is a fully-managed control plane paired with a fully-managed data plane or self-hosted data plane.

The supported formats for Foxglove Data Platform are: MCAP (.mcap) and ROS 1 (.bag)

After importing data to Foxglove, select individual resources to visualize on the Timeline, Events, or Recordings pages:

Visualize on Recordings page

HTTP Remote Files

HTTP Remote Files are files hosted on a remote HTTP server that supports range requests and CORS. This allows Foxglove to load the file in chunks, rather than loading the entire file into memory.

The supported formats for HTTP Remote Files are: MCAP (.mcap) and ROS 1 (.bag)

Cross-Origin Resource Sharing (CORS) setup
To load remote data files, you must host your files in a server or cloud provider that supports Cross-Origin Resource Sharing (CORS) and accepts range requests.

When loading remote data into Foxglove for playback and analysis, we recommend hosting your files in a cloud provider like Amazon Simple Storage Service (S3), Google Cloud Storage (GCS), or Azure Storage. You can also host files on your own server, but it may be difficult and time-consuming to set up support for Cross-Origin Resource Sharing (CORS) and range requests.

If your data is sensitive, generate and use a signed URL – make sure that you point to the resource directly, as redirects will not work with CORS:

This signed URL will work for a limited period of time. You can set up your server to only sign URLs for authenticated users.

Finally, set up your CORS configuration. Check out the following example of a Terraform config for an S3 bucket (docs):

cors_rule {
allowed_methods = ["GET", "HEAD", "OPTIONS"]
allowed_origins = ["https://app.foxglove.dev", "https://embed.foxglove.dev"]
allowed_headers = ["*"]
expose_headers = ["ETag", "Content-Type", "Accept-Ranges", "Content-Length"]
}

And a Terraform config for a GCS bucket (docs):

cors {
origin = ["https://app.foxglove.dev", "https://embed.foxglove.dev"]
method = ["GET", "HEAD", "OPTIONS"]
response_header = ["ETag", "Content-Type", "Accept-Ranges", "Content-Length"]
}