Bring your own storage FAQ
Bring your own storage (BYOS) keeps recordings in your cloud bucket while Foxglove operates indexing, query, and streaming in the same region. This page answers common questions. For setup steps, see Foxglove Cloud, bring your own storage.
Pricing and cost model
How is bring your own storage billed?
Foxglove bills two usage meters:
Storage at rest, object GET/LIST requests, and any cross-region transfer are billed by your cloud provider, not Foxglove.
See Pricing for included usage and overage rates. The pricing page also includes a usage estimator.
Is storage decoupled from usage?
Yes. After the one-time indexing charge, Foxglove doesn't charge for data that sits unqueried in your bucket. Bring your own storage doesn't add a Foxglove storage fee for data you already keep in your own cloud.
If data stays in the bucket, what is bandwidth?
Bandwidth is bytes sent from Foxglove's query service to the client during visualization, search, or download. Data streams from your bucket, through Foxglove infrastructure in the site region.
Your cloud provider may also charge for reads from the bucket to the Foxglove query service, and for any cross-region transfer.
Does seeking or multiple users multiply bandwidth?
Seeking within a visualization session makes use of a cache, but may fetch new data in some cases. Each additional user session viewing the same recording does fetch new data and count toward bandwidth.
Are downloads billed differently from streaming?
No. Downloading and streaming use the same network access path, so both count toward bandwidth.
Who invoices for bring your own storage?
Foxglove invoices indexing and bandwidth. Your cloud provider invoices storage at rest, bucket requests, and any cross-region transfer.
Setup and permissions
What are the setup steps?
- Create or choose a storage bucket.
- In Foxglove, go to Settings → Sites → Create site, then select your cloud provider and region.
- Grant the site's Foxglove read identity access to the bucket.
- Configure bucket notifications.
- Verify the connection.
See setup for provider-specific commands.
What access does Foxglove need?
Read-only access, scoped to that site's identity:
- AWS:
s3:GetObjectands3:ListBucket - GCP:
roles/storage.objectViewer - Azure: Storage Blob Data Reader
Each site gets a unique identity. See Grant bucket access.
How do notifications work?
Foxglove indexes files when it receives a notification that an object was created, updated, or removed:
- AWS: S3 Event Notifications to a Foxglove SNS topic
- GCP: Pub/Sub notifications, including
OBJECT_FINALIZE - Azure: Event Grid to a Foxglove webhook (configure a dead-letter container; Event Grid drops events after 24 hours of retries)
See Configure bucket notifications.
Can indexing be triggered from a custom pipeline?
Yes. POST to the /site-bucket-notifications API endpoint instead of relying on cloud-native bucket events.
Ingestion, metadata, and devices
How do files get tied to projects and devices?
Use object metadata or MCAP metadata records. Supported keys include project ID, device name or device ID, and session key. See Adding metadata to imports for the full key list.
A project ID is required if you don't provide an existing device and your organization has multiple projects.
Set this metadata when you write the object so Foxglove can associate the recording at index time.
Can an existing bucket of recordings be connected?
Yes. Nested directories are supported. Foxglove indexes MCAP files with chunk indexes and ROS 1 .bag files with an index section.
Foxglove indexes objects when it receives a notification. Objects already in the bucket before notifications were configured may need a one-time import. Contact Foxglove for help indexing existing objects. For a proof of concept, start with a small bucket.
Updating metadata on existing objects is a billable event at your cloud provider. On Amazon S3 Intelligent-Tiering, a metadata update can also reset the object's storage tier, which can be expensive on large or infrequently accessed files.
Does unchanged data get re-indexed?
No. Indexing runs when Foxglove receives a bucket notification for that object. Unchanged files are not re-indexed and are not billed for indexing again.
Playback and streaming performance
Why is playback slow on bring-your-own-storage files?
Bring your own storage uses index-in-place storage. Foxglove reads message data directly from your original files, so file layout may affect query latency.
Prepare MCAP files so that:
- Chunks use
lz4orzstdcompression - Chunks are 4 MB or less
- High-bitrate topics (for example, images and point clouds) live in separate files from low-bitrate telemetry
- Chunk indexes are present
See Optimize MCAP files for index-in-place and logging strategies.
Do existing files need to be reprocessed?
No.
Security, compliance, and data residency
What can Foxglove see?
At index time, Foxglove stores metadata such as file path, hash, size, device name, time ranges, channel information (topic, schema, encodings). Message data may be read as part of indexing.
At query time, Foxglove's query service reads requested message data from your bucket and streams it to the authorized client.
Does Foxglove modify the data?
No. Access is read-only. Foxglove doesn't mutate or move files. Recording lifecycle stays in your bucket. See How it works.
Does data stay in the bucket region?
Indexing, query, and streaming run in the same cloud region as the site. Create the site in the same region as the bucket. A mismatch adds cross-region transfer cost and latency.
Visualization clients can be anywhere. Streaming to a client outside the site region counts toward Foxglove bandwidth and may also incur cloud-provider egress.
What about GovCloud, air-gapped, or classified environments?
Those requirements typically need an on-premises Primary Site, where you run the data plane on your own Kubernetes cluster. Bring your own storage is a Foxglove-managed data plane reading from your bucket.
Deployment models
Which deployment model should you choose?
| Model | Data location | Who runs indexing, query, and streaming |
|---|---|---|
| Foxglove Cloud | Foxglove cloud | Foxglove |
| Bring your own storage | Your cloud bucket | Foxglove (no Kubernetes or Helm) |
| On-premises Primary Site | Your infrastructure | You, in your Kubernetes cluster |
See choosing a deployment model.
How does bring your own storage differ from an on-premises site?
Both can use index-in-place storage. The difference is who operates the data plane: Foxglove for bring your own storage, your cluster for on-premises.
Bring your own storage bills Foxglove indexing and bandwidth for data you actually index and stream. Your cloud provider bills storage at rest.
What plan includes bring your own storage?
Enterprise. Contact your Foxglove account executive to enable it for your organization.
Can recordings be deleted from inside Foxglove?
No. Foxglove does not manage file lifecycle with BYOS. Delete files directly from the bucket; Foxglove removes them from the index when the files are gone. See Deleting recordings.
Supported providers and regions
Which clouds are supported?
AWS, Google Cloud, and Azure. Other object stores are not supported.
Which regions are available?
Available regions appear when you create a site. If you need a region that is not listed, contact Foxglove.
What region should the bucket use?
The same region as the Foxglove site.