Skip to main content

Foxlet v1.8.0

Foxlet​

This release lets Foxlet upload to a self-managed inbox over slow network links, and adds metrics that show recording size and connection status.

New & Improved
  • Added the MULTIPART_UPLOAD_CONCURRENCY option, which sets how many parts of a recording Foxlet uploads to a self-managed inbox at the same time. See Upload settings.
  • Added the PRESERVE_UPLOAD_PATH option. When set to true, Foxlet uploads each recording at its path relative to STORAGE_ROOT, without the recordingId=<id>/ directory. This option is supported only for self-managed inboxes that use the index-in-place storage mode. Recording paths must be unique across all devices that share the bucket, and Foxlet needs permission to read objects in the bucket (on S3, s3:GetObject and s3:ListBucket). See Upload settings.
  • Added the recordings_size_bytes, control_plane_initialized, and control_plane_initialization_failures Prometheus metrics. Foxlet now serves metrics before it connects to Foxglove.
  • recordings_gigabytes no longer counts recordings whose files were removed. It is deprecated; use recordings_size_bytes instead.
Fixed
  • Uploads to a self-managed inbox no longer time out on slow network links. Each upload request now has 600 seconds to complete, instead of 30 seconds. See Upload settings.
  • The Debian package now installs ca-certificates. Previously, Foxlet did not start on a host with no CA certificate bundle.
Security
  • Updated the hickory-resolver DNS library to address published security advisories.

Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64

Primary Site v0.0.110

This release compresses uploaded import manifests, returns clearer errors when recorded data doesn't match its schema, keeps recording status accurate on index-in-place sites, and patches vulnerabilities in the DNS resolver.

Changed
  • The inbox listener and indexer upload import manifests with gzip compression, which makes them about four times smaller.
Fixed
  • Stream requests with a FoxQL expression return HTTP 422 with a descriptive error when the recorded data doesn't match its schema. Previously they returned HTTP 500. Foxglove shows the error in the Problems panel.
  • On index-in-place sites, the indexer reads the recording ID from a file's object metadata, so the recording shows the correct status when the import fails before indexing.
Security

Docs: About | Install | Upgrade

Foxglove 3.5.0

🔑 Call the API with personal access tokens​

Members on Pro, Enterprise, and Academic plans can create personal access tokens to call the Foxglove API as themselves, limited to the capabilities they choose. Open Settings → Personal access tokens to create one, then send it as a bearer token. Read more about Personal access tokens.

curl https://api.foxglove.dev/v1/devices \
-H "Authorization: Bearer $FOXGLOVE_PERSONAL_ACCESS_TOKEN"

🔍 Search by pasted IDs and names, and export results​

Paste a recording, event, or device ID, or a recording name, into the Search bar, and the suggestions include a matching query, such as @event.id == evt_…, along with Search with AI to run the text as an AI search. When a structured search returns no results, Fix my query opens the agent to diagnose it. Select results in the List or Gallery view and click Export CSV to download them. Read more about Building a query and Exporting results as CSV.

📜 Browse logs without moving playback​

For recordings and files, the Log panel loads messages around the part of the log you're viewing, so topics with bursts and long gaps stay browsable. Scroll to browse the log, including past the current time, without seeking the other panels. Click Follow playback, seek, or start playback to follow the current time again. Read more about Timestamp navigation.

New & Improved
  • Dashboard: Open local file(s) and Open connection sit in the page header, and Upload local file, Compare local files, and Explore example data are in the ⋮ menu. Admins invite members from Settings → Members
  • Playback bar: the Show on timeline menu hides events on the playback timeline, or shows only the event types you pick
  • Agent sidebar: the agent creates, updates, and deletes events on a device. If you previously chose Always allow for event editing, approve Update events again
  • Agent sidebar: the agent lists events and reads event type properties and allowed values without an open visualization
  • Agent sidebar, Slack, and MCP: replies link devices, recordings, sessions, and other Foxglove objects to their pages
  • Slack: requests that don't name a Project use the oldest Project you can access instead of asking which one to use
  • Data source menu: Open in desktop app opens the current recording, session, or remote file in the desktop app at the current playback time — see Web vs. desktop
  • Data source menu: Copy link copies a working link for remote files, is disabled with an explanation for files opened from signed URLs, and is hidden for local files
  • Timeline: Coverage details has a Search in this range button that opens Search for the device and time range. On the Search page, it narrows the current search to the range selected on the results timeline
  • Recordings and Events: URLs and recording, event, and device IDs in metadata values are links, including inside longer values
  • Events: event types are marked with a solid diamond in the type's color, matching instant events on the timeline
  • State Transitions: a Label position setting shows series labels in a column to the left or right of their rows — see Label position
  • Stack panel: the mouse wheel scrolls an overflowing Stack. Click a nested panel to zoom it with the wheel, and move the pointer out of it to scroll the Stack again
  • Table panel: expanded rows and nested cells stay open after switching tabs or reloading the layout
  • Audio panel: audio keeps its original pitch at any playback speed. Turn off Preserve pitch to resample instead — see Playback speed
  • Topic Graph: nodes, topics, and services are compact labeled pills in theme colors
  • Panel settings: clicking Add in a settings group expands the group and scrolls to the new item
  • Navigation: Recordings, Sessions, Events, Devices, and Layouts show the page name as a heading at the top of the page instead of in the web app bar
  • Filters: filter controls share one filter icon, and search fields and their empty states say Search instead of Filter
  • Desktop: on Linux, the Debian package recommends video acceleration (VA-API) drivers
Performance
  • MCAP: indexed files opened locally or from a URL load and seek faster
  • Playback: resumes sooner after seeking in recordings stored in Foxglove
  • Playback: reading and seeking compressed recordings repeats less decompression work
  • Playback: removing topics keeps the buffered messages of the topics that remain
  • Web app: recordings start loading sooner, especially on slower networks
  • WebSocket and Remote Access: connections that advertise many topics sharing a schema connect faster
  • Recordings: filtering by a recent data date range is faster
  • User Scripts: switching layouts no longer recompiles unchanged scripts, and their outputs stay visible during the switch
API
  • Recordings: concurrent imports that share a session key no longer fail with a false device-mismatch error
  • Recordings: index-in-place recordings stay available after their object moves to another bucket path
  • Webhooks: notifications wait until the resources they reference can be read through the API, so follow-up calls made right after a notification find them
  • Pending imports and import errors: completed and failed imports are kept for 30 days, in Import errors and in the API
  • Site bucket notifications: Pro organizations can create notification tokens for their bring-your-own-storage sites instead of getting a Forbidden error
  • Primary Sites: ap-northeast-2 is available as an AWS bring-your-own-storage region
Fixes
  • Playback: pausing a cloud recording keeps its data stream, so resuming doesn't buffer again
  • Playback: device-stream links stay at the linked time instead of jumping back to the start of the range
  • Playback: timestamps in the America/Vancouver time zone show UTC-7 after British Columbia moves to permanent UTC-7 on November 1, 2026
  • Plot: messages whose timestamp has a fractional sec or nsec value no longer blank or freeze the panel
  • Plot: empty or whitespace-only strings are treated as missing instead of 0, including in functions such as .@abs
  • Plot: live series keep their most recent points when samples arrive out of order after reaching the point limit
  • Plot: lines keep their shape when you hide or show a dynamic series
  • Plot: in comparison mode, XY series that use the panel's x-axis expression draw their data, and points no longer shift when a value can't be plotted
  • Plot: series after the seventh continue the color cycle instead of all being blue
  • Plot: CSV exports keep topics that contain a comma, quote, or newline in one column, and topics starting with =, +, @, or - no longer run as spreadsheet formulas
  • Plot: CSV export finishes in XY plots when a latest-message series has no data
  • Plot: CSV export writes negative timestamps correctly
  • Plot and State Transitions: hovering or clicking in the chart margins no longer shows a tooltip or seeks outside the visible time range
  • FoxQL: expressions that end in a function, such as .@abs, flag fields that don't exist
  • User Scripts: switching data sources or leaving the page while scripts compile no longer freezes the browser tab
  • User Scripts: scripts that import from "ros" compile when the data source has protobuf, FlatBuffers, JSON Schema, or OMG IDL topics
  • Agent sidebar: events the agent creates from message timestamps land at the right time, and the agent avoids duplicating existing events
  • Comparison mode: the events bar no longer shows a source's events from outside its recording when comparing or merging recordings of different lengths
  • Comparison mode: long recording names in the header keep their leading characters
  • 3D panel: transparent voxel cubes are drawn back to front, and clicking selects the nearer point cloud
  • 3D panel: opaque scene entity lines are hidden behind closer geometry instead of darkened by translucent objects
  • 3D panel: automatic color ranges work for point clouds whose color field contains NaN or infinite values
  • 3D and Image panels: the selected-voxel highlight lines up with the voxel grid's own timestamp, including in comparison mode
  • Raw Messages: the first Next click no longer takes several seconds
  • Raw Messages: Previous steps back from the displayed message instead of seeking back onto it
  • Topic Graph: node labels are no longer cut off on first load, and the view re-fits when the graph changes
  • Markdown panel: the data source selector appears in comparison mode
  • Navigation: sidebars keep their scroll position when you move between pages
  • Remote Access: sessions close when the device or its token is removed from an organization that no longer has remote access
  • Remote Access: Reconnect is disabled after the connected device is deleted
  • Timeline: the Foxglove CLI export command in Coverage details works with Foxglove CLI v2
  • Devices: the overflow button on the device details page matches the height of the other header buttons
  • Desktop: double-clicking a .foxe file installs the extension instead of showing an error
  • Desktop: Chromium --disable-features values passed at startup are kept
  • Desktop: on Linux, the Debian package no longer makes Foxglove the default app for unknown binary files and ZIP archives

Downloads: Linux: deb amd64 arm64, snap amd64 | Windows: x64 arm64 | Mac: Apple Silicon Intel

Edge Site v0.1.1

Edge Site​

This release stops trusting compromised eMudhra certificate authorities.

Security
  • The edge controller no longer trusts certificates issued by compromised eMudhra certificate authorities.

Docs: About, Install, Upgrade | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64

Foxlet v1.7.1

Foxlet​

This release stops trusting compromised eMudhra certificate authorities, and fixes retention for recordings indexed by Foxlet before v1.3.0 and recordings with no device name.

Security
  • Foxlet no longer trusts certificates issued by compromised eMudhra certificate authorities.
Fixed
  • Retention now deletes files left behind for recordings indexed by Foxlet before v1.3.0. See Delete recording files.
  • Deletion no longer fails when a recording has a device ID but no device name.

Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64

Primary Site v0.0.109

This release improves import reliability on index-in-place sites, fixes playback and export failures, speeds up file deletion, and stops trusting certificates from compromised eMudhra certificate authorities.

Changed
  • queryService.deployment.enableBetaStreamExecutor no longer has any effect. All playback uses the faster streaming mode enabled by default in v0.0.108, and you can no longer switch back to the previous mode. You can remove the setting from your values.yaml.
  • The time_to_first_byte_ms and stream_duration_ms query service metrics now measure the whole request, including authorization and request setup. Expect higher values after upgrading, and adjust any dashboards or alerts built on these metrics. See Query service metrics.
Fixed
  • On index-in-place sites, files that cannot be indexed because of a permanent problem, such as a corrupt or unsupported file, are now quarantined. Previously they were retried indefinitely. See Quarantined files.
  • On index-in-place sites, quarantined files can now be downloaded. Previously the download failed.
  • Deleting a file from an index-in-place bucket now removes its recording from Foxglove even when the site cannot list the bucket. Previously, AWS buckets without s3:ListBucket permission kept deleted recordings visible indefinitely.
  • Playback no longer fails for JSON messages that contain null values in an array.
  • Exporting a recording as a ROS 1 bag no longer produces a file the Foxglove CLI rejects.
  • When an inbox listener pod is stopped, such as during an upgrade or scale-down, it now finishes the imports it is processing before it exits.
Performance
  • Deleting recordings and cleaning up temporary files is faster on sites with many files.
Security
  • Primary site services no longer trust certificates issued by compromised eMudhra certificate authorities.

Docs: About | Install | Upgrade

Remote Data Loader v0.0.12

Stream timing metrics now include the whole request, and the remote data loader no longer trusts certificates from compromised eMudhra certificate authorities.

Changed
  • The time_to_first_byte_ms and stream duration_ms metrics now measure the whole request, including authorization and the manifest request. Expect higher values after upgrading, and adjust any dashboards or alerts built on these metrics.
Security
  • The remote data loader no longer trusts certificates issued by compromised eMudhra certificate authorities. This applies to connections to your manifest endpoint and data sources.

Docs: About | Development | Deploy

Edge Site v0.1.0

Edge Site​

This release replaces the edge controller with a reimplementation that runs from a Debian package, a statically linked Linux executable, a Docker image, or the edge-site Helm chart.

Sites upgrading from Helm chart 0.0.32 or earlier must follow Upgrade from chart 0.0.x to keep using their existing catalog.

New & Improved
  • The edge controller is available as a Debian package with a systemd service, a statically linked Linux executable, and a Docker image, for AMD64 and ARM64. See Installation.
  • Added the recordings_indexed_bytes, recordings_imported_bytes, recordings_deletion_retained, recordings_retained_pending_upload, and recordings_retained_pending_upload_bytes Prometheus metrics. See Available metrics.
Changed
  • The edge-site Helm chart stores the catalog at /data/index/controller.db. To keep an existing catalog, set DATABASE_CONNECTION_STRING as described in Upgrade from chart 0.0.x.
  • POST /v1/recordings requires projectId, validates deviceName, and rejects absolute paths and paths containing ... See Recordings API.
  • Retention deletes expired local recordings, while keeping recordings queued for import or waiting to upload. See Retention.
  • The recordings API accepts connections once the edge controller has connected to Foxglove.
  • In WATCH_AUTO_IMPORT_PATTERN, * matches across directory separators.
  • Azure uploads need STORAGE_AZURE_STORAGE_ACCOUNT_NAME, or a bucket name of the form <account>/<container>. See Configure cloud credentials.
Deprecated
  • Using S3-compatible object storage as the Edge Site's local recording storage (recordingStorage.provider: s3_compatible) isn't supported. Uploads to self-hosted Primary Sites and BYOS buckets remain supported.
  • GET /v1/recordings isn't available.
  • GARBAGE_COLLECTION_MAX_WORKERS, SLOW_QUERY_LOG_MIN_DURATION, SLOW_QUERY_LOG_PARAMETERS, DISABLE_DATABASE_STATISTICS_REPORTING, DISABLE_SERVER, and RECORDING_STORAGE_BUCKET_NAME are no longer read.
  • The imports_gigabytes and recording_upload_ms Prometheus metrics are no longer exposed.

Docs: About, Install, Upgrade | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64

Foxlet v1.7.0

Foxlet​

This release keeps auto-import recordings, and recordings requested for import, on the device until they upload.

New & Improved
  • Added the recordings_retained_pending_upload and recordings_retained_pending_upload_bytes Prometheus metrics, which count recordings that Foxlet keeps past the retention period because their upload has not succeeded.
Fixed
  • Auto-delete local files after age no longer deletes an auto-import recording, or a recording requested for import, before its upload succeeds. Previously, a device that was offline for longer than the retention period could delete these recordings before uploading them. See Delete recording files.
  • Foxlet now exits, instead of retrying an upload every second, when Foxglove rejects the upload because the device's recording state is out of date. See Error: "terminating due to invalid agent epoch".

Docs: About, Install | Debian Packages: amd64, arm64 | Binary Files: amd64, arm64