---
updatedAt: 2025-11-11T01:46:03.000Z
agentTools:
  projectIndex: https://docs.formant.io/llms.txt
---

# Add a non-ROS data stream

You can ingest non-ROS data using the Formant Agent SDK. The Agent SDK is a lightweight Python module that allows you to run scripts on your device to gather custom data and ingest it into Formant. You can then use the full suite of Formant functionality with that data.

Documentation and SDK reference for the Agent SDK, alongside other other APIs and SDKs, can be found in the [API/SDK reference](https://docs.formant.io/reference/agent-sdk-installation-and-overview) section of our site.

This guide will teach you how to configure a data stream using the Agent SDK.

# Step 1: Install the Formant Agent SDK

You can find instructions to install the Formant Agent SDK here: [Agent SDK installation and overview](https://docs.formant.io/reference/agent-sdk-installation-and-overview).

# Step 2: Write an Agent SDK script which ingests data

You can find instructions and a simple example for data ingestion here: [Ingesting basic datapoints](https://docs.formant.io/reference/sending-basic-datapoints).

For a full reference of the Agent SDK, see [Agent SDK Reference](https://docs.formant.io/reference/complete-reference).

When you run your application which ingests data to a stream, that stream will be created in the Formant UI automatically. If you don't see this stream, or if you want to configure the stream manually in the Formant UI, proceed to Step 3.

# Step 3: Add an API stream

Once your device is ingesting data from the Agent SDK, you'll want to add an API stream to visualize and utilize that data in Formant.

1. In Formant, in the upper-left corner, open the menu and click **Settings**.
2. Click **Devices**, and then click on the device you want to configure.
3. Click the **Telemetry** tab, and then click **Add Stream**.
4. Click **API**. This will open the New API Stream configuration window:.

<Image align="center" src="https://files.readme.io/14c2b65-Screenshot_2023-08-07_at_12.47.11_PM.png" />

<Table align={["left","left"]}>
  <thead>
    <tr>
      <th>
        Property
      </th>

      <th>
        Usage
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        Telemetry stream name
      </td>

      <td>
        Give the stream a name.
      </td>
    </tr>

    <tr>
      <td>
        On demand
      </td>

      <td>
        If **ON**, this stream will store data locally on your device, and only upload data to Formant when you click **Retrieve on-demand data**. `Rate limit` controls the rate at which datapoints are added to the on-device buffer. For more information, see [On demand streams](https://docs.formant.io/docs/on-demand-streams).  

        If **OFF**, this stream will ingest periodically. `Rate limit` controls the rate of data ingestion.
      </td>
    </tr>

    <tr>
      <td>
        Video encoding
      </td>

      <td>
        Only applicable for `sensor_msgs/Image` and `sensor_msgs/CompressedImage` streams. Choose whether you want images ingested on this stream to be encoded as a video.
      </td>
    </tr>

    <tr>
      <td>
        Validation schema
      </td>

      <td>
        Only applicable for JSON and text streams. Choose a configuration schema for this stream.
      </td>
    </tr>

    <tr>
      <td>
        Add tags (e.g. `key: value`) (optional)
      </td>

      <td>
        Add tags to each datapoint of this stream. For more information on tags, see [Configure access levels](https://docs.formant.io/docs/configure-access-levels).
      </td>
    </tr>

    <tr>
      <td>
        Rate limit (Hz) (optional)
      </td>

      <td>
        If `On demand` is **ON**: Set the rate at which data is added to the on-device buffer. Data in the on-device buffer will be ingested by the agent when you click **Retrieve on-demand data**. For more information, see [On demand streams](https://docs.formant.io/docs/on-demand-streams).  

        If `On demand` is **OFF**: Set the rate at which data is ingested.  

        The default rate is 0.5 Hz.
      </td>
    </tr>
  </tbody>
</Table>

# Step 4: Add stream to a view

Once you've added a stream to your device, your next step is to add it to a view in Formant.

Add the streams you want to visualize, and then move on to [Viewing data in Formant](docs:viewing-data-in-formant).

<Callout icon="👋" theme="default">
  ### If you notice an issue with this page or need help, please reach out to us! Use the 'Did this page help you?' buttons below, or get in contact with our Customer Success team via the Intercom messenger in the bottom-right corner of this page, or at [support@formant.io](mailto:support@formant.io).
</Callout>