clawup.yaml manifest defines your entire deployment — which agents to deploy, where to run them, and how to connect integrations. It’s generated by clawup init and stored in ~/.clawup/configs/<stack>/.
Schema
Example
Fields
Stack Configuration
| Field | Type | Required | Description |
|---|---|---|---|
stackName | string | Yes | Unique name for the Pulumi stack |
provider | "aws" | "hetzner" | Yes | Cloud provider |
region | string | Yes | Provider-specific region/location |
instanceType | string | Yes | Default server type |
Owner Configuration
| Field | Type | Required | Description |
|---|---|---|---|
ownerName | string | Yes | Your name (used in agent USER.md) |
timezone | string | Timezone for scheduling | |
workingHours | string | Your availability window | |
userNotes | string | Extra context for agents |
Integration Configuration
| Field | Type | Required | Description |
|---|---|---|---|
linearTeam | string | Linear team key — agents pull tickets from this team | |
githubRepo | string | GitHub repo — agents open PRs and review code here |
Agent Configuration
Each entry in theagents array defines a single agent:
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Resource name (e.g., agent-pm, agent-researcher) |
displayName | string | Yes | Human-readable name (e.g., Juno, Atlas) |
role | string | Yes | Role identifier (e.g., pm, eng, researcher) |
identity | string | Git URL or local path to an identity directory. Supports repo#subfolder syntax for mono-repos. Mutually exclusive with preset. | |
identityVersion | string | Pin the identity to a specific Git tag or commit hash. Requires identity to be set. | |
preset | string | null | Legacy built-in preset name (pm, eng, tester). Use identity instead for new deployments. Mutually exclusive with identity. | |
volumeSize | number | Yes | Persistent storage in GB |
instanceType | string | Override the default server size for this agent | |
plugins | string[] | Plugin names to install (e.g., ["openclaw-linear", "slack"]). Overrides identity defaults when specified. | |
deps | string[] | Dependency names to install (e.g., ["gh", "brave-search"]). Overrides identity defaults when specified. | |
envVars | object | Additional environment variables | |
soulContent | string | Deprecated. Custom SOUL.md content. Use an identity repo instead. | |
identityContent | string | Deprecated. Custom IDENTITY.md content. Use an identity repo instead. |
An agent must specify exactly one of
identity, preset, or soulContent. The identity field is the recommended approach — it points to a self-contained identity directory with all workspace files, skills, and configuration. See Identities for details.Identity vs Manifest
The manifest defines deployment concerns — where agents run, how much storage they get, which stack they belong to. The identity defines agent concerns — personality, skills, model preferences, default plugins and deps. When both the manifest and the identity specifyplugins or deps, the manifest values take precedence. This lets you override identity defaults per-deployment.
| Concern | Defined In |
|---|---|
| Cloud provider, region, instance type | Manifest |
| Volume size | Manifest |
| Personality, skills, heartbeat | Identity (identity.yaml + workspace files) |
| Model, backup model, coding agent | Identity (identity.yaml) |
| Plugins, deps (defaults) | Identity (identity.yaml) |
| Plugins, deps (overrides) | Manifest (per-agent) |
| Template variable values | Manifest (owner fields) |