Data model as code.
The declarative primitive for your data model. Agents write it as source; humans edit it as a spreadsheet. Plan, apply, drift-detect.
What it is
Cast is the declarative primitive of the estate. Describe what should exist — object types, fields, relations, views, workflows, roles, permissions, applications — in versioned source. Cast diffs against current state and reconciles safely, in dependency order. Two surfaces, one substrate: coding agents author Cast as source; humans edit the same state in a spreadsheet view — object types are sheets, fields are columns, records are rows, relations are typed cells. Both write to one truth.
The problem
Data models are defined imperatively, in pieces — object types in one console, fields in a UI, relations in a third tool, workflows in a fourth. Humans get a UI, agents get nothing, neither sees the same truth. State drifts the moment it runs. No review, no diff, no rollback, no single source for what should exist.
Capabilities
Two surfaces, one model
# What a coding agent sees — Cast source
# (mirrors sheets' ObjectMetadata, FieldMetadata, ViewEntity 1:1)
object "task" {
label_singular = "Task"
label_plural = "Tasks"
icon = "IconCheckbox"
is_searchable = true
label_identifier = field.task.title
}
field "title" {
object = object.task
type = "TEXT"
label = "Title"
icon = "IconNotes"
}
field "status" {
object = object.task
type = "SELECT"
label = "Status"
default_value = "TODO"
options = [
{ value = "TODO", label = "To do", color = "sky" },
{ value = "IN_PROGRESS", label = "In progress", color = "purple" },
{ value = "DONE", label = "Done", color = "green" },
]
}
field "assignee" {
object = object.task
type = "RELATION"
label = "Assignee"
icon = "IconUserCircle"
relation = {
type = "MANY_TO_ONE"
target_object = object.organizationMember
target_field = "assignedTasks"
on_delete = "SET_NULL"
}
}
view "byStatus" {
object = object.task
type = "KANBAN"
name = "By Status"
main_group_by_field = field.task.status
}
# What a human sees — the same model, in a sheet
│ title │ status │ assignee │
───────────────────────────────────────────────────────
│ Wire up Cast parser │ IN_PROGRESS │ @sasha │
│ Drift detector design │ TODO │ @rajan │
│ Bundle signer review │ DONE │ @priya │Open and commercial
Cast is delivered through two surfaces: an open-source reference in Lattice Runtime (MPL 2.0), and a managed, enterprise-grade delivery in Visca Cloud. Features in the open never move behind the paywall.
Open
MPL 2.0 · self-hostable · foundation-track governance
Commercial
Hosted SaaS · self-managed · hybrid · air-gapped
ALM · same pillar
Reproducible bundles for autonomous actors.
Immutable, content-addressed, Sigil-signed bundles. Everything an autonomous actor needs to execute, packaged as a single attestable artifact.
Autonomy-aware runtime.
Runs autonomous workloads across cloud, edge, on-device, and on-robot — with first-class awareness of tokens, models, memory, and embodiment.
The developer surface.
Where developers build autonomous systems. CLI, SDKs, local runtime, eval harness, replay, documentation, templates — one surface.
Across the platform
Cryptographic identity for autonomous actors.
Issues, verifies, and revokes the cryptographic identity every autonomous actor holds — bound to principal, runtime, and lineage from the moment of instantiation.
Zero-trust access for autonomous actors.
Brokers every access from an autonomous actor to a consequential resource — identity-bound, scoped, time-limited, audited. Long-lived credentials disappear.
The autonomic fabric.
Discovery, mTLS, and routing across every autonomous actor and every resource an actor reaches — rooted in Sigil identities, not hardcoded URLs.
The system of record.
A queryable knowledge graph of every autonomous actor in the estate — and the append-only, cryptographically chained audit of every action taken.
The autonomy economy is shipping
Build, run, and trust autonomous systems on an integrated platform — software, embodied, and hybrid. Open foundation. Enterprise cloud. No license rug-pulls, ever.