OpenClaw
Package requirements, installation flow, and management for OpenClaw agents on Web42.
Overview
OpenClaw is the first platform supported by Web42. This page covers what an OpenClaw agent package must include, how the CLI installs it into your local OpenClaw environment, and how to manage installed agents. For general publishing concepts see the Publishing guide.
Package structure
When you run web42 init and select OpenClaw, the following files are scaffolded. Every OpenClaw package published to the marketplace must include these files.
your-agent/
├── manifest.json # Required — package metadata
├── AGENTS.md # Required — operating manual
├── IDENTITY.md # Required — agent persona
├── SOUL.md # Required — personality & values
├── TOOLS.md # Required — local tool notes
├── USER.md # Auto-generated on install
├── HEARTBEAT.md # Optional — periodic task checklist
├── BOOTSTRAP.md # Optional — first-run setup
└── skills/ # Optional — capability modules
└── your-skill/
└── SKILL.mdRequired files
manifest.json
Package metadata for the marketplace. Must include "platform": "openclaw". Defines name, version, skills, config variables, and more. See the manifest.json reference for all fields.
AGENTS.md
The operating manual the agent reads every session. Defines startup behavior (read SOUL.md → USER.md → memory files), memory rules, safety boundaries, group chat etiquette, heartbeat behavior, and any custom conventions. This is the most important file — it tells the agent how to behave.
IDENTITY.md
Defines the agent's persona: name, creature type, vibe, signature emoji, and avatar path. Filled in by the agent during its first conversation with the user.
SOUL.md
Core personality and behavioral guidelines — the agent's value system. Defines how the agent communicates, handles boundaries, and persists across sessions.
TOOLS.md
Local infrastructure notes for the agent's environment. Camera names, SSH hosts, TTS voices, device nicknames — anything specific to the user's setup. Kept separate from skills so skills can be shared without leaking local details.
Optional files
HEARTBEAT.md
Periodic task checklist. When present, the agent checks this file on heartbeat polls and runs any listed tasks (email checks, calendar reviews, etc.). Leave empty or omit to skip heartbeats entirely.
BOOTSTRAP.md
First-run setup instructions. Guides the user through API key setup and messaging channel connections. The agent deletes this file after completing initial configuration.
skills/
Directory of capability modules. Each skill lives in its own folder with a SKILL.md file. Skills are auto-detected during web42 init and web42 pack.
Auto-generated on install
USER.md
Information about the human the agent helps (name, pronouns, timezone). This file is always regenerated fresh during install so each user gets a blank slate. Not included in the published package.
Excluded from packages
The following files and directories are automatically excluded when running web42 pack. They never get uploaded to the marketplace:
MEMORY.md # Private long-term memory memory/ # Private daily session logs sessions/ # Private session data USER.md # Regenerated per-user on install manifest.json # Uploaded separately openclaw.json # Local OpenClaw config auth-profiles.json # Local auth credentials .web42/ # Build artifact .git/, node_modules/ # Standard exclusions
You can add additional exclusions in a .web42ignore file at the root of your agent directory, one pattern per line.
How pack works
When you run web42 pack (or web42 push which auto-packs), the OpenClaw adapter performs these steps:
- Collects all files from the current directory, excluding the hardcoded list above plus any patterns in
.web42ignore - Sanitizes file contents — replaces absolute paths to
~/.openclawwith{{OPENCLAW_HOME}}template variables so they resolve correctly on any machine - Extracts the agent's configuration from your local
openclaw.json— agent entry, channel bindings, skill configs, and tool settings are bundled into a config template - Strips secrets from skill configs and channel configs, replacing them with
{{PLACEHOLDER}}variables that become config variables in the manifest - Outputs everything to the
.web42/directory, including a.openclaw/config.jsonwith the config template
Use web42 pack --dry-run to preview the bundled output without writing files.
Skills and config variables
Skills live in skills/<name>/SKILL.md. They're auto-detected during init and pack — the name comes from the first markdown heading, the description from the body text.
Config variables let each user provide their own API keys, tokens, and preferences. They come from two sources:
- Explicitly declared in
manifest.jsonunderconfigVariables - Auto-extracted during pack when secrets are stripped from skill and channel configs
During install, the CLI prompts the user for each required variable. Values are stored locally in .web42.config.json inside the workspace and never uploaded to the marketplace.
Example in a manifest:
"configVariables": [
{
"key": "OPENAI_API_KEY",
"label": "OpenAI API Key",
"description": "Used for embeddings and completions",
"required": true
},
{
"key": "DISCORD_TOKEN",
"label": "Discord Bot Token",
"required": true
}
]Installation flow
What happens when a user runs:
- Access check — The CLI verifies the user has access to the agent (owner, free acquisition, or paid purchase). For paid agents the user must purchase on the web first.
- Fetch files — Downloads all agent files and the config template from the marketplace API.
- Config prompts — If the agent has config variables, the CLI prompts for each one interactively. Use
--no-promptto use defaults instead. - Model API key — If the manifest specifies a
modelPreferences.primarymodel and the provider API key isn't configured, the CLI prompts for it and saves it to~/.openclaw/.env. - Create workspace — Writes all agent files to
~/.openclaw/workspace-<agent-name>/. Template variables like{{OPENCLAW_HOME}}are resolved to actual paths. A freshUSER.mdis generated. - Merge config — The config template is merged into
~/.openclaw/openclaw.json: the agent entry is added toagents.list, channel bindings are appended, skill and tool configs are merged (existing entries are not overwritten), and config variable placeholders are replaced with the user's answers. - Save install metadata — A
.web42.config.jsonfile is written to the workspace with the source reference and all config answers.
Install options
--as <name>— Install under a different local agent name--no-prompt— Skip interactive config prompts, use defaults
Managing installed agents
List installed agents
Shows all agents in your OpenClaw environment. Reads from openclaw.json first, falls back to scanning workspace-* directories.
Update agents
Updates all installed agents to their latest marketplace versions.
Uninstall an agent
Removes the agent's workspace directory and agent directory, then cleans up the agent entry and bindings from openclaw.json.
File system layout
After installing an agent, the local OpenClaw directory looks like this:
~/.openclaw/
├── openclaw.json # Global config (agents, bindings, skills, channels)
├── .env # Provider API keys
├── workspace-my-agent/ # Agent workspace
│ ├── AGENTS.md
│ ├── IDENTITY.md
│ ├── SOUL.md
│ ├── TOOLS.md
│ ├── USER.md
│ ├── HEARTBEAT.md
│ ├── BOOTSTRAP.md
│ ├── .web42.config.json # Install metadata + config answers
│ ├── skills/
│ │ └── ...
│ └── memory/ # Created at runtime
│ └── YYYY-MM-DD.md
└── agents/
└── my-agent/
└── agent/ # Agent directory referenced by openclaw.jsonNext steps
- Publishing guide — manifest.json reference, pack/push workflow, managing your agent
- CLI reference — all commands and flags
- Monetization — pricing, Stripe setup, and refunds