LATTICE LAB
Interactive front-end & back-end SDK intro
entities tasks --:--:--Z

Teaching simulation · not affiliated with Anduril

Build against Lattice
without a sandbox.

Lattice is Anduril’s software-defined C2 mesh. The Lattice SDK lets you publish entities, task agents, and store objects over REST or gRPC. This lab runs a local mock mesh so you can learn both the front-end COP experience and the back-end API contracts with live samples.

Official docs ↗
01 · Data model

Entities

Interoperable component bags that power the common operating picture — assets you control, tracks you observe, geo shapes you draw.

02 · Action

Tasks

Deliberate work for taskable agents: investigate, orbit, patrol. Agents listen, execute, and report status back into the mesh.

03 · Edge CDN

Objects

Binary store for thumbnails, manifests, and files shared across Lattice nodes at the tactical edge.

Architecture

How your code fits in

Your app / robot / sensor
SDK · REST or gRPC
Lattice mesh
Entity · Task · Object managers
events + COP
Operator UI / other apps
  • Push data in — publish tracks from a drone, integrate a new robot.
  • Pull data out — stream entities, task against tower tracks.
  • Enrich — data services that correlate, translate, or fuse tracks.
Lab credentials

Mock OAuth

Use these against this lab’s /api/v1/oauth/token. Real Lattice uses your sandbox client ID/secret.

client_id
client_secret
sandbox token
// token appears here
Learning path
  1. — watch seeded multi-domain entities drift live.
  2. — same shape as the official quickstart surface vessel.
  3. — operator creates, agent listens, status updates.
  4. — edge object store basics.
  5. — when to use each.
  6. — curl, Python, JavaScript against this lab.

Common Operating Picture

Front-end view of the mesh — entities plotted from GET /api/v1/entities, refreshed live.

Asset Track Geo Friendly Unknown / SUS Media linked Object update
MEDIA ON COP

Entities API

Back-end: publish component bags. Front-end: they appear on the COP.

Composer

Publish entity

Response
// publish result
Concepts
  • entityId — stable unique key (GUID or your id).
  • isLivefalse emits DELETE.
  • expiryTime — auto-delete; or noExpiry for persistent geo.
  • ontology.template — ASSET / TRACK / GEO shape.
  • milView — disposition + environment for symbology.
  • provenance — which integration wrote this, and when.

Real Lattice: updates are driven by changes to provenance.sourceUpdateTime.

Tasks API

Operator creates work → agent listens → agent updates status through the lifecycle.

SENT
EXECUTING
DONE_OK
or
DONE_NOT_OK
/
CANCELLED
Operator console

Create task

// create result
Agent runtime

Listen · execute · report

Simulates an onboard agent: poll for STATUS_SENT, claim the task, progress, complete.

    // agent log

    Object Store

    Lattice CDN edge store — PathMetadata / ContentIdentifier. GUI and CLI share the same mesh; every action updates the visual explorer.

    list GET /api/v1/objects upload POST /api/v1/objects/{path} get GET /api/v1/objects/{path} metadata GET …/metadata delete DELETE …/{path} link media → entity
    OBJECT EXPLORER
    Lattice Developer Console · lab mesh
    0 objects · 0 B

    Select an object or upload one.

    Visual representation follows Lattice PathMetadata.

    lattice-objects
    Simulated CLI · Objects CDN
    lattice-objects>
    Store activity

      REST vs gRPC

      Same data models — different transports. Pick based on client and bandwidth.

      REST · HTTP/JSON

      Best for apps & dashboards

      • Familiar curl / fetch debugging
      • OpenAPI + language SDKs (Python, JS, Java, Go)
      • Objects API is REST-only
      • Larger payloads than Protobuf
      PUT /api/v1/entities
      Authorization: Bearer $TOKEN
      Content-Type: application/json
      
      { "entityId": "…", "isLive": true, … }
      gRPC · Protobuf

      Best for hardware & high-rate telemetry

      • Binary encoding — often 30–50% smaller than JSON
      • Streaming RPCs for entity/task feeds
      • What Lattice uses internally between nodes
      • Ideal for drones, robots, sensors on constrained links
      // conceptual — real SDK uses generated stubs
      EntityManagerAPI.PublishEntity(entity)
      EntityManagerAPI.StreamEntityComponents(filter)
      This lab

      Implements the REST surface so you can call it from the browser. Patterns map 1:1 to official REST reference and language SDKs (pip install anduril-lattice-sdk, etc.).

      Runnable samples

      Copy-paste against this lab (or adapt hosts/tokens for a real Lattice sandbox).

      
            
      // run output