> ## Documentation Index
> Fetch the complete documentation index at: https://docs.enfinitos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Robotics & Drone

> Robotics SDK for autonomous fleets; Drone SDK extends it with airspace, Remote ID, NOTAM, and BVLOS waivers.

The Robotics SDK is the reference client for fleets that move
through physical or aerial space. The Drone SDK extends it with the
airspace-specific machinery FAA Part 89 and equivalents require.

<Note>
  **Publish at launch.** Both the Robotics SDK and the Drone SDK
  publish at the April 2027 production launch. Sandbox access is
  available now at [enfinitos.com/apply](https://enfinitos.com/apply).
  The sandbox base URL is `https://sandbox.api.enfinitos.com`; the
  production URL `https://api.enfinitos.com` is shown in code examples
  below for reference.
</Note>

## Robotics

```sh theme={null}
npm install @enfinitos/sdk-robotics       # TypeScript
pip install enfinitos-sdk-robotics         # Python
```

Both implementations expose the same shape — an
`EnfinitOSRobotClient` that:

* Subscribes to operator policy updates (push, not poll).
* Reports a typed telemetry heartbeat (pose, battery, kinematic
  state).
* Enforces a kinematic envelope against the
  `BehaviouralConstraint.ROBOTICS` rule set.
* Surfaces an emergency-stop primitive on a separate code path.

Python is the most-used language in real robotic fleets (Starship,
Nuro, ROS 2). The Python SDK is the one most customers will start
with.

## Drone — composition, not inheritance

The Drone SDK **composes** the Robotics SDK; it does not extend it.
A `EnfinitOSDroneClient` wraps a `RobotClientLike` and adds airspace
concerns:

* **Pre-flight airspace check** against NOTAMs, behavioural rules,
  and BVLOS waivers.
* **Remote ID broadcast** per ASTM F3411-22a (FAA Part 89 / EASA
  Implementing Regulation 2019/947).
* **NOTAM polling** with provider skeletons for FAA / CAA / EASA.
* **BVLOS waiver verification** before takeoff.
* **In-flight corridor check** — is the drone inside the planned
  corridor, given the time window?

```sh theme={null}
npm install @enfinitos/sdk-drone
```

```ts theme={null}
const drone = new EnfinitOSDroneClient({
  apiBaseUrl: "https://api.enfinitos.com",
  fleetId: "fleet_...",
  droneId: "drone_...",
  airframe: { /* mass, max speed, Remote ID serial */ },
  operatingAreaCentre: { lat, lng },
  operatingAreaRadiusM: 5000,
  operatingAreaAuthorities: ["FAA"],
  waivers: [/* BVLOS waivers */],
  robotClient: existingRoboticsClient, // composed, not inherited
});

await drone.connect();
await drone.checkAirspace(planClaim);
drone.startRemoteIdBroadcast();
```

See the [Drone SDK README](https://enfinitos.com/developers/drone)
for the full surface.
