Skip to main content
The identity.yaml manifest is the core of every identity. It declares the agent’s model, plugins, dependencies, skills, and template variables. It lives at the root of an identity directory and is read during deployment. For the fastest way to scaffold a new identity, use army-create (npx army-create). For a step-by-step guide, see Creating Identities.

Schema

Required Fields

Optional Fields

Model Configuration

Supported Model Providers

Infrastructure

Dependencies

Secrets

Hooks

Identity-level hooks run for every agent that uses this identity. All four hook types are available (resolve, onboard, postProvision, preStart). Identity hooks execute after swarm hooks and before plugin hooks.
For the full reference including execution order and all hook types, see the Lifecycle Hooks guide.

Examples

Minimal Identity

The smallest valid identity.yaml — only required fields:

Research Agent

A research-focused agent with Brave Search and Slack:
A production engineer identity with all fields used:
The requiredSecrets entries above will generate per-agent env vars like ENG_SENTRY_DSN and ENG_DATADOG_API_KEY during clawup init.

Available Registries

Coding Agent Registry

The codingAgent field selects which coding CLI is installed. Each entry provides an install script, model configuration, and OpenClaw cliBackends config. Defined in packages/core/src/coding-agent-registry.ts.

Dep Registry

System-level tools declared via the deps field. Defined in packages/core/src/dep-registry.ts.

Plugin Registry

OpenClaw plugins declared via the plugins field. Defined in packages/core/src/plugin-registry.ts. You can also bundle custom plugin manifests by placing a plugins/<name>.yaml file in the identity directory — see the Plugins guide for details on creating and overriding plugin manifests.

Lifecycle Hooks

Hooks are shell scripts that run at specific points during deployment. They’re available at the swarm (clawup.yaml), identity (identity.yaml), and plugin level. Hooks can auto-resolve derived secrets, run interactive onboarding, install server-side tools, and perform pre-launch configuration. See the Lifecycle Hooks guide for details.

Plugin Defaults

The pluginDefaults field sets per-plugin configuration that ships with the identity. This is the primary way to configure how plugins behave for a specific role.

Override Hierarchy

Plugin configuration is resolved in this order (later wins):
  1. Identity defaultspluginDefaults in identity.yaml
  2. Deployment overrides — Per-agent plugins configuration in the deployment manifest (clawup.yaml)

Identity vs Deployment Manifest

The identity.yaml and clawup.yaml serve different purposes: When both files specify plugins or deps, the deployment manifest values take precedence. This lets you override identity defaults per-deployment without forking the identity.

Validation

Clawup validates identity.yaml at deploy time. The following checks are enforced:
  • All required fields must be present and non-empty
  • name, displayName, role, emoji, description must be strings
  • volumeSize must be a positive number
  • skills and templateVars must be arrays
  • Each skill listed must have a corresponding skills/<name>/SKILL.md file (private skills) or valid clawhub: prefix (public skills)