Announcing the Foxglove Agent
When you're deep in robotics development, getting your data off the robot is always a chore. Your first solution usually involves a junk drawer full of flash storage, or SSH and SFTP over a local network. The next stage involves spinning up a team to build a bespoke pipeline. Flash drives and SFTP are manual and error-prone; custom pipelines are expensive and often clunky. None of it helps you investigate data or accelerate development.
The Foxglove Agent lets you see what data is available on each of your robots in real time, and allows you to import data directly to the cloud at the push of a button. It even handles syncing state between your robot and the cloud in the presence of unstable or intermittent network connections. Once your data is in the cloud, you can analyze it with Foxglove's state-of-the-art visualization tools, connect it to post-processing workflows, or tag interesting timestamps with events for later triage.
What is the Foxglove Agent?
The Foxglove Agent is a service that runs on your robot. It monitors a designated directory in your robot’s file system and securely notifies Foxglove as new data becomes available to fetch. As soon as new data is added to the directory, it becomes available for import in Foxglove. When a team member requests to import the file, your device will upload data to Foxglove in the background. This data becomes viewable and downloadable from anywhere in the world.
To get started, install and configure the Foxglove Agent. You will need a VM or robot and a Foxglove account. The Foxglove Agent will work on any machine running a Debian-based Linux distribution and with a filesystem that supports
inotify. It will also need to be able to make HTTPS calls to api.foxglove.dev, though a stable connection is not required.
Using the Foxglove Agent
To make data available for upload using the Foxglove Agent, simply move MCAP or ROS bag files into the directory specified in the environment file. The default location is
If you are using ROS 1, you can record directly to the watched directory with
rosbag record -o /srv/foxglove/agent/storage -a. The Agent will ignore recordings in progress. For ROS 2 and custom stacks, be sure to
mv files after writing so the Agent is only notified of complete files.
Once data is in the watched directory, it will appear as “Not imported” on your Recordings page or under your device’s recordings:
To import the recording to the cloud, click “Import” or use the import API. The recording's status will change to “Pending” while being uploaded from your robot to the Foxglove cloud:
Once it has finished importing, its status will change to “Complete”, and you can visualize the data or share it with teammates:
This is only the beginning of the Foxglove Agent. In the coming months, we’re excited to continue extending what the Agent can do to make managing, interacting with, and accessing the data on your robots easier.
If you’re looking to offload your data to a local server on the edge and upload it to the cloud later, check out Foxglove Edge Sites. Much like the Foxglove Agent, Edge Sites help you manage your data in the field and upload it on demand. But while Agents run on your robots and upload directly to the cloud, Edge Sites are optimized to store and forward from compute stationed in the field.
If you’re new to Foxglove, read the docs on everything Foxglove has to offer from visualization to data management and tagging of data with events. Data can be hosted in the Foxglove cloud or on premises.
Simplify robotics development by managing data from the command line
A recap of our time in New Orleans this past October
Get blog posts sent directly to your inbox.