> This is the Markdown version of the page. For the complete Lattice Developers documentation index, fetch https://developer.anduril.com/llms.txt. Append .md to any page URL for its clean Markdown.

# Building with Lattice

> The Lattice platform and the Lattice SDK™

The **Lattice SDK™** allows developers to build applications, data services,
and hardware integrations which create, exploit, and enhance Lattice data.
The [**Lattice Developer Program**](https://www.anduril.com/lattice-sdk/) complements this documentation by providing
qualified developers with access to development environments running Lattice
services with representative notional data, as well as access to Anduril solutions
architecture guidance and developer support.

#### [Get started](/guides/getting-started/quickstart)

Publishing a surface vessel to Lattice.

#### [API Reference](/reference/overview/overview)

Learn about the Lattice APIs.

#### [Sample apps](/samples/overview)

Run sample apps on your local machine.

## Data flow

An *integration* with Lattice can be unidirectional or bidirectional, supporting one or both of the following functions:

* Pushing data into Lattice, such as publishing data feeds or integrating a new robot.
* Pulling data from Lattice, such as tracks generated by towers to task against them.

The main entry-points for these integrations are the [`Entities`](/reference/rest/entities/publish-entity),
[`Tasks`](/reference/rest/tasks/create-task), and [`Objects`](/reference/rest/objects/list-objects) APIs.
The following shows how your integration fits into the Lattice ecosystem:

![Diagram showing how your integration fits into the Lattice ecosystem.](/_fern-img/85ab8c1ece85f524bb43cdbeba547cd7acc858ddfa5fa0d03f2acc548c96d99c.webp)

## Protocols

Lattice supports both **REST** and **gRPC** protocols, each optimized for different integration patterns.
REST provides familiar HTTP/JSON workflows ideal for web applications and rapid development. gRPC offers
binary Protocol Buffers encoding for bandwidth-efficient hardware integrations.

Your protocol choice impacts authentication patterns, payload sizes, and available APIs. The
[Objects API](/guides/objects/overview) for file operations is only available via REST, while both
protocols provide full access to Entities and Tasks APIs.

> **Architecture insight**
>
> Lattice uses gRPC and Protobuf internally to efficiently transmit data between Lattice nodes.
> Protobuf's binary encoding reduces bandwidth by 30-50% compared to JSON while maintaining data
> integrity across distributed Lattice deployments.

#### [gRPC](/reference/grpc)

Best for hardware integrations publishing high-frequency telemetry from drones, robots,
and sensors. Binary encoding reduces bandwidth in constrained networks.

#### [REST](/reference/rest)

Best for web applications, dashboards, and administrative tools. Familiar HTTP patterns
accelerate development with standard debugging tools.

For more information, see [Choose a protocol](/guides/best-practices/choose-a-protocol).

## Use cases

The Lattice API and the services that power it are designed to be flexible and support
a variety of workflows. The following are some of the common use-cases:

**Apps**:

Lattice apps are user-facing software solutions which consume and generate Lattice
data. A Lattice app provides specialized end-user capabilities such as command and control,
situational awareness, tasking, or planning.

**Integrations**:

Lattice integrations facilitate data transfer between Lattice and independent,
external systems such as sensors, data feed producers, robotics, and other hardware
and software capabilities. By integrating with Lattice, you increase the impact of
your integration by leveraging Anduril's widely adopted framework.

**Data services**:

Lattice data services are software modules which enrich or modify data within Lattice,
usually without directly presenting a front-end workflow to end-users.
For instance, Lattice data services might provide language translation services,
track correlation, generative AI synthesis of track pictures, to name a few. Lattice lets you process
data continuously or on-demand.

## What's next?

* Get started developing with the Lattice using [Lattice Sandboxes](/guides/developer-tools/sandboxes).
* Learn how to [set up your development environment](/guides/getting-started/set-up).