Skip to content
Docs
foxborne.comRequest a pilot

Connect a storage source

Point Foxborne at the buckets, shares and directories where your logs already land, so new files arrive without an upload. Each source is read-only, and a connection test checks that before you add it.

How-toEvery deploymentAdminMarkdown
On this page8

A source is where Foxborne reads evidence without an upload: an object store, a file share or an endpoint your test rigs push to. Foxborne hashes each file it reads, matches it to a vehicle and a time, then assembles the runs.

Before you start#

  • You need the Admin role. Only admins manage sources and collectors.
  • Create a read-only credential on the storage side first: an IAM role, an access key, a managed identity, a service account or an SFTP account. Each type's page lists what it needs.
  • The Foxborne worker must reach the location. The connection test starts from there.

Add a source#

  1. Open Sources

    Select Sources in the sidebar, under Data. The Connections tab lists each source with its Location, Access, Last sync, Today and Status. Select Add source.

  2. Choose a type

    The Add a source dialog reads Foxborne reads from storage you already run. It never writes to it. Pick a card, then select Continue.

    GroupTypeDescription
    Object storageAmazon S3A bucket or prefix in your account, including GovCloud. Read through an IAM role you create.
    Object storageS3-compatible storageMinIO, Ceph or any S3 API inside your network. Read-only access key.
    Object storageAzure Blob StorageA container in your subscription, including Azure Government. Managed identity.
    Object storageGoogle Cloud StorageA bucket read through a service account with the viewer role.
    File sharesSFTPA directory on a ground station or log server, polled on a schedule.
    File sharesSMB or NFS shareA network share mounted read-only on the Foxborne worker.
    VehiclesCompanion collectorA read-only service on each companion computer. Samples processes and journal units, spools offline.
    VehiclesMAVLink receiverListens to telemetry on the ground and records every receipt with its own clock.
    AutomationIngest APIYour test rigs and pipelines push signed bundles with a scoped service token.

    Companion collector has no details step. It takes you to the Vehicle collectors tab, where you enroll each vehicle, as Install and enroll the collector describes.

  3. Fill in the details

    Enter a Name, which is required, for example Fleet log archive, west range. Then fill in the three fields for the type:

    TypeFieldsPage
    Amazon S3Bucket and prefix, IAM role to assume, File patternAmazon S3
    S3-compatible storageEndpoint, Bucket and prefix, Access key IDS3-compatible storage
    Azure Blob StorageStorage account and container, Managed identity, File patternAzure Blob Storage
    Google Cloud StorageBucket and prefix, Service account, File patternGoogle Cloud Storage
    SFTPHost and directory, Account, File patternSFTP, SMB and NFS
    SMB or NFS shareShare, Service account, File patternSFTP, SMB and NFS
    MAVLink receiverListen on, System IDs, RecordMAVLink ground receiver
    Ingest APIToken name, Scope, ExpiresPush bundles with the Ingest API

    Under the fields, Vehicle matching explains how files find their vehicle. Foxborne matches files to vehicles by the MAVLink system ID in each flight log, or by the {vehicle} part of the file pattern.

  4. Test the connection

    Select Test connection. Four checks appear one after another, the same for every type:

    CheckResult
    Resolve and connect.Reached the location from the Foxborne worker.
    List objects.Read access confirmed.
    Attempt a write.Refused, as it should be.
    Attempt a delete.Refused, as it should be.

    The last two checks are the read-only proof: Foxborne tries to write and to delete, and confirms that both are refused. After the fourth check, Add source becomes available. If you go Back and Continue again, run the test again.

  5. Add the source

    Select Add source. The toast names the source and says The first sync is running.

Check the result#

  • The source appears in Connections with Read-only, verified under Access and Healthy under Status.
  • Today counts the files read today, and Last sync shows when Foxborne last looked.
  • The audit log records Added source with the name and a detail such as Amazon S3, read-only test passed.

The example dataset has five sources.

SourceLocationAccessStatus
Fleet log archives3://hfr-flight-logs/px4/Read-only IAM roleHealthy
Companion collectors15 of 16 vehicles enrolledOutbound only, mutual TLSNeeds attention
Range control receive logssftp://rc1.range.hfr.internal/var/log/mav-receive/Key-based, read-only accountHealthy
Bench rig uploadsPOST /api/fx/v1/ingestService token, ingest scope onlyHealthy
Legacy journal share\\fs01.hfr.internal\fieldops\journalsRead-only service accountPaused

Under the table, the console notes that manual uploads are hashed and matched the same way as files from a source.

A second note reads Endpoints that accept pushed evidence, such as the HTTPS ingest API, are listed under Integrations, Ingest. Its link opens the Ingest tab of Integrations, which lists the endpoints Foxborne listens on and the files it imports. See Integrations overview.

The source drawer#

Select a row to open its drawer. The title is the source's name and the subtitle its type.

A note at the top explains any status that needs one, for example UGV-05 is buffering behind the berm. UAS-07 reports an unsynchronised clock.

SectionRows
ConnectionLocation, Access, Credential, Matches (the file pattern) and Schedule
ActivityStatus, Last sync, Files read (for example 1,284, 61.2 GB), Today (for example 12 new) and Added, with who added it and when
GuaranteesWhat the source can and cannot do, below

For a storage source, Guarantees lists three lines:

  • Read-only. The last connection test confirmed that writes and deletes are refused.
  • Every file is hashed with SHA-256 before parsing and stored unmodified.
  • Reads stay inside your network. Nothing is copied outside AWS GovCloud (US-West). The environment is your deployment's.

For the collector source, it lists the collector's own three:

  • Outbound only, over mutual TLS. No port is opened on any vehicle.
  • No command channel. The collector cannot send MAVLink to the flight controller.
  • Offline samples are spooled, acknowledged before deletion, and any drop is written as a marker.

Sync, pause, resume and edit#

The drawer's footer holds four actions. Each one is recorded in the audit log.

ActionWhat happensAudit entry
Sync nowFoxborne checks the source at once and updates Last sync. The toast reports the result, for example Fleet log archive synced. No new files. Not available while the source is paused.Synced source, Manual sync
PauseAsks first, with Foxborne stops reading new files from this source. Files already imported stay as they are. Confirm with Pause source. The note then reads Paused by, your name and the date.Paused source
ResumeStarts reading again at once, with no confirmation, and clears the note.Resumed source
EditOpens a dialog with Name, Location, File pattern and Schedule. Changes apply from the next sync. A field left blank keeps its value.Edited source, Connection settings

Statuses#

StatusWhat it means
HealthyFoxborne reads the source normally.
Needs attentionSomething on the source needs a look, and the drawer's note says what.
PausedAn admin paused it. Nothing new is read until someone selects Resume.
ErrorShown in red. Open the drawer and read its note.

The Sources item in the sidebar counts sources that need attention or show an error.

Troubleshoot#

  • Add source stays unavailable. Run Test connection and wait for the fourth check. After Back and Continue, the test has to run again.
  • The Name field turns red. A name is required.
  • Sync now is unavailable. The source is paused. Select Resume first.
  • Files land on the wrong vehicle. Check the {vehicle} part of the file pattern, and the MAVLink system ID in the flight logs.

Next#