~/.openclaw/, which stores config, credentials, and sessions.
Default location
- Default:
~/.openclaw/workspace - If
OPENCLAW_PROFILEis set and not"default", the default becomes~/.openclaw-<profile>/workspace. OPENCLAW_WORKSPACE_DIRoverrides both of the above when set.- A non-default
OPENCLAW_STATE_DIRkeeps the default workspace at<state-dir>/workspace, including scheduled maintenance and the initialmainagent entry. - A sole configured agent inherits the default workspace unless its entry sets
workspace. - In an explicit multi-agent roster, entries without
workspaceuse<agents.defaults.workspace>/<agentId>when that root is configured, or<state-dir>/workspace-<agentId>otherwise. Naming a shared root does not assign it to an agent.
~/.openclaw/openclaw.json:
agents.entries.*.workspace. To keep main at an existing shared root in a multi-agent roster, pin agents.entries.main.workspace to that root explicitly; changing agents.defaults.workspace alone sets the base for unpinned entries.
openclaw onboard, openclaw configure, or openclaw setup create the workspace and seed the bootstrap files if they are missing.
Sandbox seed copies only accept regular in-workspace files; symlink/hardlink aliases that resolve outside the source workspace are ignored.
Extra workspace folders
Older installs may have created~/openclaw. Each agent uses one resolved workspace; keeping extra directories does not merge their persona or memory files into the active workspace.
Keep each agent’s workspace path explicit when retaining older directories. Before switching back to an older workspace, stop the Gateway, configure the intended path, run
openclaw doctor --fix to migrate retired setup state, and restart. Doctor also discovers legacy setup files in a still-configured agents.defaults.workspace root even when no agent currently uses that root directly. Archive unused folders only after verifying which files you want to retain.Workspace file map
Standard files OpenClaw expects inside the workspace:AGENTS.md - operating instructions
AGENTS.md - operating instructions
Operating instructions for the agent and how it should use memory. Loaded at the start of every session. Good place for rules, priorities, and “how to behave” details.
SOUL.md - persona and tone
SOUL.md - persona and tone
Persona, tone, and boundaries. Loaded every session. Guide: SOUL.md personality guide.
USER.md - directive-based user model (optional)
USER.md - directive-based user model (optional)
Stable preferences, communication style, relationships, and active-project context. Write entries as dated active or superseded directives. Loaded every session with a separate 4,000-character budget. See User model.
IDENTITY.md - name, vibe, emoji
IDENTITY.md - name, vibe, emoji
The agent’s name, vibe, and emoji. Created/updated during the bootstrap ritual.
AGENTS.md Tools section - local tool conventions
AGENTS.md Tools section - local tool conventions
The
## Tools section holds local environment notes and conventions. It does not control tool availability; it is only guidance.BOOT.md - startup checklist
BOOT.md - startup checklist
Optional startup checklist run on Gateway startup when the boot-md hook is enabled. Enabling a different internal hook does not enable
boot-md. Keep it short; use the message tool for outbound sends.BOOTSTRAP.md - first-run ritual
BOOTSTRAP.md - first-run ritual
One-time first-run ritual. Only created for a brand-new workspace. Delete it after the ritual is complete.
memory/YYYY-MM-DD.md - daily memory log
memory/YYYY-MM-DD.md - daily memory log
Daily memory log (one file per day). Recommended to read today + yesterday on session start.
MEMORY.md - curated long-term memory (optional)
MEMORY.md - curated long-term memory (optional)
Curated long-term memory: durable non-profile facts, decisions, and short summaries. Keep detailed logs in
memory/YYYY-MM-DD.md so memory tools can retrieve them on demand without injecting them into every prompt. Only load MEMORY.md in the main, private session (not shared/group contexts). See Memory for the workflow and automatic memory flush.skills/ - workspace skills (optional)
skills/ - workspace skills (optional)
Workspace-specific skills. Highest-precedence skill location for that workspace, ahead of project agent skills, personal agent skills, managed skills, bundled skills, and
skills.load.extraDirs when names collide.If a required bootstrap file is missing, OpenClaw injects a “missing file” marker into the session and continues. Optional
USER.md and MEMORY.md files are omitted when absent. Large bootstrap files are truncated when injected; adjust general limits with agents.defaults.bootstrapMaxChars (default: 20000) and agents.defaults.bootstrapTotalMaxChars (default: 60000). USER.md keeps its separate 4,000-character cap. openclaw setup can recreate missing defaults without overwriting existing files.What is NOT in the workspace
These live under~/.openclaw/ and should NOT be committed to the workspace repo:
~/.openclaw/openclaw.json(config)~/.openclaw/state/openclaw.sqlite(shared workspace setup state and attestations)~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite(model auth profiles, routing state, standing intents, and other agent-scoped durability)~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite(session rows, transcripts, and per-agent runtime state)~/.openclaw/agents/<agentId>/agent/codex-home/(per-agent Codex runtime account, config, skills, plugins, and native thread state)~/.openclaw/credentials/(channel/provider state plus legacy OAuth import data)~/.openclaw/agents/<agentId>/sessions/(legacy migration sources and archive/support artifacts)~/.openclaw/skills/(managed skills)
openclaw-workspace-state.json,
.openclaw/workspace-state.json, and .attested workspace sidecars. Current
runtime uses only the shared SQLite database for that state. If Doctor reports
one of these files, run openclaw doctor --fix; Doctor imports valid legacy
state and deletes a source only after verifying the database rows. Empty reserved
hashed files under workspace-attestations/ are discarded because they contain
no importable state; other unreadable sources stay in place and Doctor names
their paths.
Git backup (recommended, private)
Treat the workspace as private memory. Put it in a private git repo so it is backed up and recoverable. Run these steps on the machine where the Gateway runs (that is where the workspace lives).1
Initialize the repo
If git is installed, brand-new workspaces are initialized automatically. If this workspace is not already a repo, run:
2
Add a private remote
- GitHub web UI
- GitHub CLI (gh)
- GitLab web UI
- Create a new private repository on GitHub.
- Do not initialize with a README (avoids merge conflicts).
- Copy the HTTPS remote URL.
- Add the remote and push:
3
Ongoing updates
Do not commit secrets
Suggested.gitignore starter:
Moving the workspace to a new machine
1
Clone the repo
Clone the repo to the desired path (default
~/.openclaw/workspace).2
Update config
Set
agents.entries.<agentId>.workspace to the cloned path in ~/.openclaw/openclaw.json for the agent that should use it. A sole agent without a per-agent override can use agents.defaults.workspace instead; in a multi-agent roster, that setting only changes the base directory for unpinned entries.3
Verify the workspace
Run
openclaw agents list and confirm that the intended agent points to the cloned path before starting the Gateway. Moving an existing workspace does not require rerunning onboarding.4
Copy sessions (optional)
If you need sessions, copy
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
from the old machine separately. Copy ~/.openclaw/agents/<agentId>/sessions/
only when you also need legacy migration inputs or archive/support artifacts.Advanced notes
- Multi-agent routing can use different workspaces per agent via
agents.entries.*.workspace. See Channel routing for routing configuration. - If
agents.defaults.sandboxis enabled, non-main sessions can use per-session sandbox workspaces underagents.defaults.sandbox.workspaceRoot.
Related
- Heartbeat - heartbeat monitors and cron scratch
- Sandboxing - workspace access in sandboxed environments
- Session - session storage paths
- Standing orders - persistent instructions in workspace files