Entity reference

Every manifest shares one envelope and is validated against a JSON Schema in schemas/.

apiVersion: asgard.dev/v1
kind: Agent                 # one of the kinds below
metadata:
  name: code-reviewer       # unique within (kind, namespace)
  namespace: default
  title: Code Reviewer
  labels: { team: platform }
  tags: [review, ci]
spec: { ... }               # kind-specific
relations:
  - { type: dependsOn, target: tool:default/github }

An EntityRef is kind:namespace/name (e.g. group:default/platform).

Kinds

KindSourcespec highlights
Agentagent.yamlowner, model, prompt, tools[], dataClass, project
Promptprompt.yamlowner, template, variables[], evals[], version
Tool / MCPServermcp.yamlowner, transport, endpoint, scopes, visibility, allowedConsumers
Modelregistryprovider, route, dataClassAllowlist[], costPer1kIn/Out
Datasetdataset.yamlowner, classification, uri, purpose
Evaleval.yamlowner, suite, thresholds, gatingTier, target
Projectregistrystable id (proj-YYYY-NNNN), owner, classification, budgetUsd, lifecycle

Data classes

public · internal · confidential · restricted. A model may only be invoked for a data class on its dataClassAllowlist; the gateway enforces this via the policy engine.

Lifecycle

Project and Agent move active → decommissioned | archived. Terminal states retain audit + cost history.

See the golden-path template under templates/code-review/ for a complete, valid example produced by asgard agent new --template code-review.