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.
Examples
Minimal Identity
The smallest valididentity.yaml — only required fields:
Research Agent
A research-focused agent with Brave Search and Slack:Full-Featured Engineering Agent
A production engineer identity with all fields used: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
ThecodingAgent 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 thedeps field.
Defined in
packages/core/src/dep-registry.ts.
Plugin Registry
OpenClaw plugins declared via theplugins 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
ThepluginDefaults 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):- Identity defaults —
pluginDefaultsinidentity.yaml - Deployment overrides — Per-agent
pluginsconfiguration in the deployment manifest (clawup.yaml)
Identity vs Deployment Manifest
Theidentity.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 validatesidentity.yaml at deploy time. The following checks are enforced:
- All required fields must be present and non-empty
name,displayName,role,emoji,descriptionmust be stringsvolumeSizemust be a positive numberskillsandtemplateVarsmust be arrays- Each skill listed must have a corresponding
skills/<name>/SKILL.mdfile (private skills) or validclawhub:prefix (public skills)