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 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.

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, Tasks, and Objects APIs. The following shows how your integration fits into the Lattice ecosystem:

Shows the drop down menu where you can see the entity details.

Protocols

Lattice supports both REST and gRPC protocols, each optimized for different integration needs and network environments. While the REST SDKs provide client libraries that let you quickly integrate with Lattice, we also provide the lattice-sdk Protocol Buffers in the Buf Schema Registry, where you can generate your own gRPC artifacts in a variety of languages, and using any supported Buf plugin.

Architecture insight

Lattice uses gRPC and Protobuf internally to efficiently transmit data between Lattice nodes. Protobuf is a binary data protocol that has a low footprint and ensures only the data required for integration is passed between nodes, significantly reducing bandwidth usage while maintaining data integrity across a Lattice deployment.

Use the following information to decide which protocol works better for your use-case:

RESTgRPC
InstallationPackages via PyPi, Maven, npm, source via GitHubPackages generated in Buf Schema Registry
Language SupportPython, Typescript, Java, GolangAuto-generated bindings for 16 languages
Streaming On the roadmap
Familiarity and toolingMore frequently usedLess frequently used
API availabilityEntities, Tasks, and ObjectsEntities and Tasks
On-the-wire size JSON Encoding Binary Encoding
Browser support Better Weaker

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?