openclaw claws
A Claw is a versioned setup for one new OpenClaw agent. It can describe the
agent’s portable identity, workspace files, skills, plugins, MCP servers, and
cron jobs. Harness-specific agent settings may be carried in a conventional
package profile. A Claw does not replace or modify an existing agent.
Claws are experimental. Their schema, command output, and lifecycle may change.
Enable the command surface explicitly:
claws add, OpenClaw prints the experimental warning before
changing state. JSON mode keeps stdout machine-readable and identifies the
contract with "stability": "experimental".
The current CLI reads a local package directory, CLAW.md, or grouped JSON manifest.
Publishing, searching, and installing whole Claws through ClawHub are a
separate registry track and are not part of this command surface yet.
Create a Claw package
A package containspackage.json, a CLAW.md manifest, and any conventional
profiles, bootstrap instructions, or portable assets used by that manifest:
CLAW.md starts with YAML frontmatter. A non-empty Markdown body is the
portable agent prompt. OpenClaw applies it as the Claw-managed SOUL.md for
the new agent:
profiles/openclaw.yml file.
No manifest pointer is required. Other harnesses may discover their own
conventional profile, such as profiles/codex.yml, without changing the
portable manifest.
The older metadata.openclaw.config pointer is deprecated but still read, so
packages published against it keep working. Reading one reports a
deprecated_openclaw_profile_pointer warning; move that file to
profiles/openclaw.yml and remove the metadata entry. A pointer that is not a
package-relative .yml/.yaml path is rejected, and a pointer that references
a different file while profiles/openclaw.yml also exists is rejected as a
conflict.
CLAW.md frontmatter.
The OpenClaw package profile may use an explicit tools.allow list or select
any built-in tool profile registered by the running OpenClaw version. The
coding and messaging profiles include the dynamic bundle-mcp selector, so
a Claw that selects either profile must also provide a bounded tools.allow
intersection. Name any MCP grants as concrete generated tool names such as
github__list_issues; the package cannot freeze bundle-mcp itself.
Profiles can otherwise be refined with alsoAllow, deny, and
tools.fs.workspaceOnly: true. tools.allow cannot be combined with
alsoAllow; use a standalone allowlist, as above, when the package needs tools
outside its selected profile. A Claw cannot set workspaceOnly to false and
weaken host filesystem confinement. A Claw may also set
memory.search.enabled, choose the portable memory and sessions sources,
and opt into cross-conversation memory with rememberAcrossConversations.
Declaring the sessions source requires that opt-in.
Host policy still constrains these settings, and Claws do not carry custom
profile definitions, providers, credentials, bindings, or local memory paths.
The conventional profile is limited to 256 KiB, must be JSON-compatible YAML, may
not use aliases, anchors, tags, or merge keys, and must be a regular,
non-symlinked, non-hardlinked file inside the package.
An OpenClaw profile may also declare harness-specific extension requirements:
format asserts the artifact format that OpenClaw must detect (openclaw,
claude, codex, or cursor). The canonical plugin preflight resolves the
exact artifact and reports which components the current OpenClaw adapter maps
and which remain unavailable. Missing identity, integrity, format detection, or
adapter identity blocks apply. Extension-backed plugins use the existing
plugin installer and ownership model; they are shared host requirements, not
Claw-owned members or a second package system.
OpenClaw ignores foreign harness profiles during apply. Package integrity still
covers every published package byte, while a development snapshot binds the
portable manifest, bootstrap and workspace sources, and the selected OpenClaw
profile. Status and doctor report adapter mapping drift or unavailable
inspection. Export writes extension-backed plugins to profiles/openclaw.yml
and does not duplicate them in the portable packages list.
Package and workspace paths must remain inside the package root. Manifests are
limited to 1 MiB, package metadata to 256 KiB, and workspace sources enforce
separate per-file and aggregate limits. Workspace sources also reject symlinked
parents.
The CLAW.md body is the preferred portable source for SOUL.md; do not also
declare a SOUL.md sidecar when the body is non-empty. Other bootstrap files
use named entries, while additional files use package-relative sources and
workspace-relative targets:
assets/, schemas/, templates/, and
examples/, then map them into the new agent workspace with
workspace.files. Apply records those destinations as managed files; update
reconciles unchanged managed assets, and remove preserves modified or
user-owned files.
An optional package-root BOOTSTRAP.md supplies conversational first-run
instructions. OpenClaw seeds it into the new agent workspace and records
progress through the native workspace bootstrap state. Once the agent consumes
or removes it, Claw update does not recreate it. Root BOOTSTRAP.md therefore
cannot also be declared through workspace.files. Claw removal deletes an
unchanged, still-pending package bootstrap after verifying its recorded digest;
it preserves edited bootstrap content and files created during onboarding.
Skills and plugins use exact ClawHub versions:
mcp.servers configuration model:
Author locally
Create a minimal project, validate its publishable inputs, preview its complete OpenClaw add plan offline, and build an immutable package artifact:create writes only package.json and CLAW.md and refuses to merge into a
nonempty directory. Project validation requires openclaw.claw to point to
the root CLAW.md, rejects package scripts and lifecycle hooks, discovers a
single unambiguous project root, and reports files excluded from the package.
dev validates and builds the same artifact that would be published, then
runs that artifact through the canonical add planner. It does not install
packages, contact ClawHub, start an agent turn, enable schedules, deliver
messages, or modify OpenClaw state. Dependencies that require online preflight
appear as blockers instead of weakening that boundary. Use --agent-id or
--workspace to preview collision-free local destinations.
build writes a deterministic npm-compatible .tgz with a package/ root.
Only package metadata, CLAW.md, optional BOOTSTRAP.md, the OpenClaw profile,
and sources selected by the manifest are included. Tests, caches, ambient or
unselected credentials, unselected files, prior artifacts, and source-control
state remain outside the package. Selected source bytes are package content, so
authors must not select secret-bearing files. Build refuses to overwrite an
existing artifact, reports its SHA-256 integrity, and re-opens it through the
canonical Claw reader before success.
Inspect and preview
Validate the source without planning local changes. For OpenClaw profile extensions, inspect also performs the canonical read-only artifact probe and reports mapped and unavailable components:planIntegrity
digest. Capability records show the exact package, MCP, scheduled-work, sandbox,
tool, or heartbeat effect. Review the plan before creating the agent:
--yes alone is insufficient. OpenClaw rebuilds the plan and rejects consent
when the source, destination, or live configuration changed after preview. Use
--agent-id or --workspace during both preview and apply when package
defaults collide with local state. For disposable profiles and parallel validation,
pass an explicit --workspace; OPENCLAW_STATE_DIR relocates runtime state but
does not change the default workspace location.
Adding a Claw first realizes consented shared plugin requirements, then creates
the new agent and workspace configuration, seeds optional first-run
instructions, writes declared workspace assets, realizes workspace skills, and
records package, MCP, and cron provenance. Existing files are not overwritten,
and retries fail closed when owned content drifted.
Inspect installed state
status compares the installed agent and its recorded workspace, package, MCP,
and cron provenance with current state. It also reports whether native
first-run bootstrap remains pending. It reports incomplete installs, missing
resources, and drift without changing local state. openclaw doctor adds
Claw-specific diagnostics for incomplete ownership records, unsafe managed
files, and cron jobs that cannot be corroborated with live Gateway inventory.
Claw provenance distinguishes two relationships:
- Managed: the Claw introduced and currently manages the resource. It is a cleanup candidate when unchanged and no conflicting owner remains.
- Referenced: the resource existed independently or is shared. Removal releases this Claw’s reference and retains the resource by default.
Update an installed Claw
By default, update uses the source recorded when the Claw was added. Use--from when that source moved or when testing another package directory:
! lines with exact redacted effects in
human output. Resolved package integrity, install identity, trust warnings, and
remaining local setup prerequisites are included. Removing a package declaration
releases this Claw’s edge without uninstalling the artifact during update. The eventual
exact planIntegrity confirmation binds that disclosed set as well as ordinary
content changes. Hosts may use the same records for a separate dialog or an
aggregate multi-agent review. Apply the exact reviewed plan with explicit
consent:
update_partial with structured
status: partial, preserves uncertain provenance,
and stops. Inspect claws status, the affected resource, and openclaw doctor;
then preview again before retrying or removing anything.
Remove an installed Claw
Preview removal before selecting cleanup:--yes never broadens
them. Globally installed plugins are retained while this Claw’s reference is
released. Removal reports which retained requirements Claw add introduced; use
the ordinary plugin lifecycle separately when you intend to uninstall a
process-wide plugin.
Directories containing another agent’s registered database are retained, even
when that database is closed. If removal reports that an agent database is
still open, stop the command or restart the Gateway holding it before retrying.
Removing scheduled jobs still requires a running Gateway. A database-lease
refusal leaves the agent config, execution approvals, and creation history unchanged.
If session cleanup or transcript archive export fails after the agent is removed
from config, removal reports partial with session_cleanup_failed and retains
its cleanup record. Correct the reported error, preview removal again, and retry
to finish cleanup before recreating the agent.
To remove unchanged Claw-introduced references that have no other current
owner, include --remove-unused in both preview and apply. To select exact
referenced resources instead, repeat --remove-referenced:
--force-referenced only after reviewing the displayed dependents,
independent owners, and pre-existing origin. It allows selected cleanup despite
those conflicts; it does not skip plan-integrity consent.
Export an installed agent
Export creates a new package directory and fails if the destination exists or managed state has drifted:--bootstrap <path> to attach an explicitly reviewed Markdown file as the
package-root BOOTSTRAP.md. Export re-emits an unchanged, still-pending package
bootstrap automatically. A package bootstrap that drifted in the workspace
(edited, unsafe, or unreadable) fails the export with bootstrap_drifted, the
same way managed workspace files fail with workspace_files_drifted; pass
--bootstrap <path> with a reviewed replacement to export anyway. A bootstrap
the agent already consumed is a completed lifecycle state, so export omits
BOOTSTRAP.md instead of failing. The exporter validates the completed package
and removes the new output directory if validation fails. Bootstrap is
package-authored prompt content: do not include credentials, tokens, private
answers, or machine-specific paths. Export does not infer questions, render
personal-data templates, persist answers, or add a separate setup lifecycle.
The result contains package.json, canonical CLAW.md, and managed workspace
sidecars. Managed SOUL.md content is emitted as the CLAW.md body when it is
non-empty UTF-8 and the combined document fits the manifest limit. Otherwise,
export retains it as an explicit sidecar so the package remains importable. It
is a portable Claw package, not a whole-instance backup: unrelated agents,
credentials, sessions, and unowned local state are excluded.
Command reference
Use
--json for experimental machine-readable output.
Successful commands exit 0. Validation errors, blocked plans, missing
targets, and both failed and partial mutation results exit 1. Inspect the
JSON status and error.code fields to distinguish a failure that made no
change from a partial result that requires claws status, openclaw doctor,
and a new preview before retrying.