Skip to content

File Locations

All CompozyOS global, workspace, agent, skill, database, log, socket, memory, and extension paths.

For people running agent work10 pages in this section

CompozyOS uses one user home directory plus optional personal-profile and workspace-local .compozy/ directories. The user home defaults to ~/.compozy and can be changed with COMPOZY_HOME.

Quick Reference

PathScopePurpose
$COMPOZY_HOMEGlobalCompozyOS home root. Defaults to ~/.compozy.
$COMPOZY_HOME/config.tomlGlobalGlobal runtime config.
$COMPOZY_HOME/mcp.jsonGlobalGlobal top-level MCP sidecar.
$COMPOZY_HOME/profiles/<name>/config.tomlPersonal profileProfile config overlay, loaded after the user config.
$COMPOZY_HOME/profiles/<name>/mcp.jsonPersonal profile MCPProfile MCP sidecar, loaded in the personal-profile slot.
$COMPOZY_HOME/profiles/<name>/agents/<agent>/AGENT.mdPersonal profile agentProfile-owned agent definition.
$COMPOZY_HOME/profiles/<name>/skills/<group>/.../<skill>/SKILL.mdPersonal profile skillProfile-owned skill definition; group directories are optional.
$COMPOZY_HOME/profiles/<name>/.agents/skills/<group>/.../<skill>/SKILL.mdProfile (agents)Profile-owned Agents convention root; group directories are optional.
$COMPOZY_HOME/profiles/<name>/.claude/skills/<group>/.../<skill>/SKILL.mdProfile (claude)Profile-owned Claude convention root; group directories are optional.
$COMPOZY_HOME/compozy.dbGlobalGlobal SQLite catalog.
$COMPOZY_HOME/daemon.sockGlobalDefault Unix domain socket.
$COMPOZY_HOME/daemon.lockGlobalDaemon lock file.
$COMPOZY_HOME/daemon.jsonGlobalDaemon discovery metadata.
$COMPOZY_HOME/logs/compozy.logGlobalStructured daemon log file.
$COMPOZY_HOME/logs/network.auditGlobalAppend-only network audit file.
$COMPOZY_HOME/gateway/credentials/Client-local gatewayPrivate credential files for named remote connection profiles.
$COMPOZY_HOME/support-bundles/GlobalDaemon-created support bundle archives and operation downloads.
$COMPOZY_HOME/providers/<provider>/ProviderIsolated provider home when home_policy is set.
$COMPOZY_HOME/sessions/<session-id>/events.dbSession (live)Per-session event database during the live session.
$COMPOZY_HOME/sessions/<session-id>/meta.jsonSession (live)Per-session metadata.
$COMPOZY_HOME/sessions/<workspace_id>/<session_id>/ledger.jsonlSession (forensic)Read-only forensic JSONL ledger materialized after session stop.
$COMPOZY_HOME/sessions/_unbound/<session_id>/ledger.jsonlSession (forensic)Forensic ledger for sessions without a resolved workspace_id.
$COMPOZY_HOME/agents/<name>/AGENT.mdGlobal agentUser-wide agent definition.
$COMPOZY_HOME/agents/<name>/skills/<group>/.../<skill>/SKILL.mdGlobal agent skillAgent-local skill overlay for the global agent; group directories are optional.
$COMPOZY_HOME/skills/<group>/.../<name>/SKILL.mdGlobal skillUser or marketplace skill definition; group directories are optional.
~/.agents/skills/<group>/.../<name>/SKILL.mdUser skill (agents)Universal convention, scanned by default. Read natively by OpenClaw.
~/.claude/skills/<group>/.../<name>/SKILL.mdUser skill (claude)Claude Code convention, scanned when skills.sources includes claude.
<custom-source>/<group>/.../<name>/SKILL.mdConfigured skill rootAny directory listed in skills.custom_sources; group directories are optional.
<workspace>/.envWorkspaceOptional dotenv file loaded before workspace config.
<workspace>/.compozy/config.tomlWorkspaceWorkspace config overlay.
<workspace>/.compozy/mcp.jsonWorkspaceWorkspace top-level MCP sidecar.
<workspace>/.compozy/profiles/<name>/config.tomlWorkspace profileRead-only named config layer that binds to the active profile name.
<workspace>/.compozy/profiles/<name>/mcp.jsonWorkspace profile MCPRead-only named MCP layer that binds to the active profile name.
<workspace>/.compozy/profiles/<name>/agents/<agent>/AGENT.mdWorkspace profile agentNamed-profile agent definition.
<workspace>/.compozy/profiles/<name>/skills/<group>/.../<skill>/SKILL.mdWorkspace profile skillNamed-profile skill definition; group directories are optional.
<workspace>/.compozy/profiles/<name>/.agents/skills/<group>/.../<skill>/SKILL.mdProfile (agents)Named workspace-profile Agents convention root; group directories are optional.
<workspace>/.compozy/profiles/<name>/.claude/skills/<group>/.../<skill>/SKILL.mdProfile (claude)Named workspace-profile Claude convention root; group directories are optional.
<workspace>/.compozy/workspace.tomlWorkspace identityStable workspace ULID. Created on first daemon touch when [memory.workspace] auto_create = true.
<workspace>/.compozy/agents/<name>/AGENT.mdWorkspace agentWorkspace-local agent definition.
<workspace>/.compozy/agents/<name>/memory/Agent (workspace)Agent-workspace memory tier (deepest read precedence).
<workspace>/.compozy/agents/<name>/skills/<group>/.../<skill>/SKILL.mdWorkspace agent skillAgent-local skill overlay for that workspace agent; group directories are optional.
<workspace>/.compozy/skills/<group>/.../<name>/SKILL.mdWorkspace skillWorkspace-local skill definition; group directories are optional.
<workspace>/.agents/skills/<group>/.../<name>/SKILL.mdWorkspace (agents)Universal convention inside the project. Read natively by OpenClaw and Hermes.
<workspace>/.claude/skills/<group>/.../<name>/SKILL.mdWorkspace (claude)Claude Code convention inside the project, scanned when claude is enabled.
<workspace>/.compozy/memory/Workspace memoryWorkspace-scoped memory files.
$COMPOZY_HOME/agents/<name>/memory/Agent (global)Agent-global memory tier (cross-workspace baseline).
$COMPOZY_HOME/profiles/<name>/memory/Profile memoryProfile-scoped memory files, replacing the pre-Profiles $COMPOZY_HOME/memory/.
$COMPOZY_HOME/profiles/<name>/memory/_inbox/Memory extractorExtractor staging directory consumed by the controller.
$COMPOZY_HOME/profiles/<name>/memory/_system/Memory machine-managedReserved namespace; never injected into prompts.

Profile resource discovery is most-specific first: workspace named profile, workspace base, personal profile, then user. A workspace named profile activates only when its directory name matches the active profile; unmatched directories stay dormant.

Global Home

PathCreated by home layoutDescription
$COMPOZY_HOMEyesHome root. Defaults to ~/.compozy; COMPOZY_HOME overrides it.
$COMPOZY_HOME/config.tomlnoGlobal TOML config file.
$COMPOZY_HOME/mcp.jsonnoGlobal MCP sidecar loaded after global TOML by the general config loader.
$COMPOZY_HOME/agents/yesGlobal agent definitions.
$COMPOZY_HOME/skills/yesGlobal user and marketplace skills.
$COMPOZY_HOME/profiles/yesParent for per-profile config, MCP, agent, skill, and memory files.
$COMPOZY_HOME/profiles/default/yesThe permanent default profile's directory.
$COMPOZY_HOME/profiles/<name>/memory/yes for defaultProfile memory directory. Can be overridden by [memory].global_dir.
$COMPOZY_HOME/providers/noParent for opt-in isolated provider homes. Created by provider launch/auth.
$COMPOZY_HOME/sessions/yesParent directory for per-session state.
$COMPOZY_HOME/logs/yesParent directory for daemon logs and network audit output.
$COMPOZY_HOME/gateway/yesClient-local gateway state.
$COMPOZY_HOME/gateway/credentials/yesPrivate remote connection credential files.
$COMPOZY_HOME/extensions/noManaged installed extension root. Created when installing managed extensions.
$COMPOZY_HOME/support-bundles/noCreated when the daemon builds or the CLI downloads a support bundle.

EnsureHomeLayout creates the root, agents, skills, loops, profiles, the default profile directory and its memory directory, sessions, logs, and gateway directories. Individual files are created by the features that own them.

Profile Files

PathScopeDescription
$COMPOZY_HOME/profiles/<name>/config.tomlPersonal profileWritable personal config overlay.
$COMPOZY_HOME/profiles/<name>/mcp.jsonPersonal profile MCPWritable personal MCP sidecar.
$COMPOZY_HOME/profiles/<name>/agents/<agent>/AGENT.mdPersonal profile agentProfile-owned agent definition.
$COMPOZY_HOME/profiles/<name>/skills/<group>/.../<skill>/SKILL.mdPersonal profile skillProfile-owned skill definition.
$COMPOZY_HOME/profiles/<name>/memory/Personal profile memoryProfile-scoped memory files.
<workspace>/.compozy/profiles/<name>/config.tomlWorkspace named profileRepository-authored, read-only config layer.
<workspace>/.compozy/profiles/<name>/mcp.jsonWorkspace profile MCPRepository-authored, read-only MCP layer.
<workspace>/.compozy/profiles/<name>/agents/<agent>/AGENT.mdWorkspace profile agentRepository-authored profile agent.
<workspace>/.compozy/profiles/<name>/skills/.../<skill>/SKILL.mdWorkspace profile skillRepository-authored profile skill.

Profile config.toml and mcp.json files whose directory name is absent from the profile catalog are ignored and reported as config_profile_layer_orphaned. Creating the named profile adopts them.

What a profile does and does not own is explained in Profiles; the repository-side folders are how a division of contexts travels with a checkout.

Global Runtime Files

PathFormatDescription
$COMPOZY_HOME/compozy.dbSQLiteGlobal catalog database for sessions, workspace registrations, observability summaries, extension records, automation state, and network records. SQLite may create compozy.db-wal and compozy.db-shm sidecars.
$COMPOZY_HOME/daemon.sockUnix domain socketDefault CLI and UDS API socket. [daemon].socket can point elsewhere.
$COMPOZY_HOME/daemon.lockLock fileDaemon process lock.
$COMPOZY_HOME/daemon.jsonJSONDiscovery file containing daemon PID, HTTP port, start time, and optional network diagnostics.
$COMPOZY_HOME/logs/compozy.loglog fileStructured daemon log file path from the home layout.
$COMPOZY_HOME/logs/network.auditlog fileAppend-only network audit file.
$COMPOZY_HOME/support-bundles/directoryRedacted support bundle archives created through compozy support bundle or POST /api/support/bundles.

Provider Home Files

When a provider sets home_policy = "isolated", CompozyOS creates a private provider home under $COMPOZY_HOME/providers/<provider> with 0700 permissions. The launch environment points HOME, PROVIDER_HOME, XDG directories, and known provider-specific variables such as CLAUDE_CONFIG_DIR, CODEX_HOME, and OPENCODE_CONFIG_DIR at that directory. CompozyOS never copies credentials from the operator home into an isolated provider home.

The default home_policy = "operator" does not create this directory and lets native ACP CLIs use their existing login/session state.

Session Files

Live sessions own a directory under $COMPOZY_HOME/sessions/<session-id>/. After session stop, CompozyOS materializes a read-only forensic JSONL ledger under $COMPOZY_HOME/sessions/<workspace_id>/<session_id>/ledger.jsonl. Unbound sessions (no resolved workspace) materialize under $COMPOZY_HOME/sessions/_unbound/<session_id>/.

~/.compozy/sessions/<session-id>/
  events.db
  meta.json

~/.compozy/sessions/<workspace_id>/<session_id>/
  ledger.jsonl

~/.compozy/sessions/_unbound/<session_id>/
  ledger.jsonl
PathFormatDescription
$COMPOZY_HOME/sessions/<session-id>/events.dbSQLitePer-session event store for ACP events, turns, token usage, permission decisions, and hook run history.
$COMPOZY_HOME/sessions/<session-id>/meta.jsonJSONQuick metadata used by session listing and reconciliation paths.
$COMPOZY_HOME/sessions/<workspace_id>/<session_id>/ledger.jsonlJSONLRead-only forensic projection materialized after session stop and replaced after a resumed session stops again.
$COMPOZY_HOME/sessions/_unbound/<session_id>/ledger.jsonlJSONLForensic ledger for sessions without a resolved workspace_id.

The forensic ledger is never a memory scope, never queried by recall, and never accepted as a controller write target — it is operator-readable history only. After materialization, live events.db rows for the same session are purged once [memory.session] events_purge_grace elapses.

When a stopped session resumes, CompozyOS removes its materialized ledger before accepting new events. The append-only events.db remains the source of truth, and the next stop writes a new ledger with the complete history. A failed provider resume restores the stopped projection.

Agent Files

PathScopeDescription
$COMPOZY_HOME/agents/<name>/AGENT.mdGlobalAgent available across workspaces.
$COMPOZY_HOME/agents/<name>/mcp.jsonGlobal agentOptional agent-local MCP sidecar.
$COMPOZY_HOME/agents/<name>/skills/<group>/.../<skill>/SKILL.mdGlobal agent skillAgent-local skill overlay used when this global agent wins resolution.
<workspace>/.compozy/agents/<name>/AGENT.mdWorkspaceAgent available to sessions in that workspace.
<workspace>/.compozy/agents/<name>/mcp.jsonWorkspace agentOptional agent-local MCP sidecar.
<workspace>/.compozy/agents/<name>/skills/<group>/.../<skill>/SKILL.mdWorkspace agent skillAgent-local skill overlay used when this workspace agent wins resolution.
<additional-root>/.compozy/agents/<name>/AGENT.mdAdditional rootAgent available when the workspace has that additional root registered.
<additional-root>/.compozy/agents/<name>/skills/<group>/.../<skill>/SKILL.mdAdditional-root agent skillAgent-local skill overlay used when this additional-root agent wins resolution.

Agent discovery order is workspace root, additional roots in registered order, then global home. First name wins.

Skill Files

PathScopeDescription
$COMPOZY_HOME/skills/<group>/.../<name>/SKILL.mdGlobal user or marketplaceUser-wide or marketplace-installed skill.
$COMPOZY_HOME/skills/<group>/.../<name>/mcp.jsonSkill sidecarOptional skill MCP sidecar at the skill leaf.
$COMPOZY_HOME/skills/<group>/.../<name>/.compozy-meta.jsonMarketplace sidecarManaged provenance metadata at the installed skill leaf.
<workspace>/.compozy/skills/<group>/.../<name>/SKILL.mdWorkspaceWorkspace-local skill.
<workspace>/.compozy/skills/<group>/.../<name>/mcp.jsonWorkspace skill sidecarOptional skill MCP sidecar at the skill leaf.
<additional-root>/.compozy/skills/<group>/.../<name>/SKILL.mdAdditional rootSkill available when the workspace has that additional root registered.

Two more families of skill directories are scanned when configuration turns them on. Folder conventions from other agent tools come from skills.sources, and free-form directories come from skills.custom_sources:

PathSourceScanned when
~/.agents/skills/<group>/.../<name>/SKILL.mdagents preset, userskills.sources contains agents — the default.
<workspace>/.agents/skills/<group>/.../<name>/SKILL.mdagents preset, projectSame key, resolved for the workspace.
~/.claude/skills/<group>/.../<name>/SKILL.mdclaude preset, userskills.sources contains claude.
<workspace>/.claude/skills/<group>/.../<name>/SKILL.mdclaude preset, projectSame key, resolved for the workspace.
$COMPOZY_HOME/profiles/<profile>/.agents/skills/<group>/.../<name>/SKILL.mdagents preset, profileSame key, resolved for one personal profile.
$COMPOZY_HOME/profiles/<profile>/.claude/skills/<group>/.../<name>/SKILL.mdclaude preset, profileSame key, resolved for one personal profile.
<workspace>/.compozy/profiles/<profile>/.agents/skills/<group>/.../<name>/SKILL.mdagents, named profileRead-only workspace-profile layer selected by the active profile.
<workspace>/.compozy/profiles/<profile>/.claude/skills/<group>/.../<name>/SKILL.mdclaude, named profileRead-only workspace-profile layer selected by the active profile.
<custom-source>/<name>/SKILL.mdcustom sourceThe directory is listed in skills.custom_sources for the active layer.
~/.agents/skills/<name>$COMPOZY_HOME/skills/<name>user exposure linkYou exposed a user-owned skill to agents.
<workspace>/.agents/skills/<name><workspace>/.compozy/skills/<name>exposure linkYou ran compozy skill expose <name> --to agents.

Preset roots are fixed paths CompozyOS knows; custom roots are the exact directories you list, with no .compozy/skills suffix appended. A custom source takes its display name from the directory's own name. Exposure links are the only files CompozyOS writes outside its own folders, and it writes them only when you ask.

Skill filesystem precedence is bundled, marketplace, user, personal profile, additional root, workspace, workspace named profile, then the winning agent's skills/ directory as a final overlay. Enabled extensions can also register runtime-owned skills into the live registry. Those overlays do not come from a filesystem path, so they are documented in Skills Overview rather than in this file-path table.

Every <group>/.../ segment above is optional and organizational. CompozyOS discovers skill leaves at any depth, and the name in each leaf's frontmatter remains its resolver identity.

Workspace Files

my-project/
  .env
  .agents/
    skills/                 # scanned when skills.sources includes "agents"
  .claude/
    skills/                 # scanned when skills.sources includes "claude"
  .compozy/
    workspace.toml
    config.toml
    mcp.json
    agents/
    skills/
    memory/
      MEMORY.md
      _system/
PathDescription
<workspace>/.envOptional dotenv file loaded before home path resolution when config is loaded with a workspace root.
<workspace>/.compozy/workspace.tomlStable workspace identity (ULID). Memory and session ledgers key on this ULID, not on the path.
<workspace>/.compozy/config.tomlWorkspace TOML overlay. Loaded after global config.
<workspace>/.compozy/mcp.jsonWorkspace MCP sidecar. Loaded after workspace TOML.
<workspace>/.compozy/agents/Workspace agent definitions and per-agent workspace-tier memory.
<workspace>/.compozy/skills/Workspace skill definitions.
<workspace>/.agents/Universal agent-tool convention, scanned when skills.sources enables agents.
<workspace>/.claude/Claude Code convention, scanned when skills.sources enables claude.
<workspace>/.compozy/memory/Workspace-scoped memory files plus _system/ for machine-managed artifacts.

CompozyOS only loads the .compozy/config.toml for the resolved primary workspace root. Additional roots are resource discovery roots for agents and skills; they do not contribute config overlays.

Memory Files

Memory v2 lives in three scopes: profile, workspace, and agent (with agent_tier = {workspace, global} — the agent tier is a separate axis and keeps the word global). Curated entries are Markdown-authoritative on disk; SQLite catalogs, FTS5 indexes, decision WAL rows, and memory_events are derived from controller activity. The _system/ directory in every scope hosts machine-managed artifacts (dreaming, extractor failures, ad-hoc notes) and is never injected into prompts.

~/.compozy/profiles/<name>/memory/
  MEMORY.md
  user_review-style.md
  feedback_test-integrity.md
  _inbox/
  _system/
    dreaming/
    extractor/
    extractor/failures/
    ad_hoc/

~/.compozy/agents/<agent>/memory/
  MEMORY.md
  user_pedro-style.md
  _system/

<workspace>/.compozy/memory/
  MEMORY.md
  project_runtime-docs.md
  reference_session-events.md
  _system/

<workspace>/.compozy/agents/<agent>/memory/
  MEMORY.md
  project_repo-rules.md
  _system/
PathMemory tierDescription
$COMPOZY_HOME/profiles/<name>/memory/ProfileMemory for one profile, accessible from any workspace while that profile is active.
$COMPOZY_HOME/profiles/<name>/memory/_inbox/Extractor stagingDaemon-owned inbox where the extractor stages candidates before controller acceptance.
$COMPOZY_HOME/profiles/<name>/memory/_system/Reserved (per-scope)Hosts dreaming output, extractor failures, ad-hoc notes; never injected into prompts.
$COMPOZY_HOME/agents/<agent>/memory/Agent-globalCross-workspace agent baseline; deepest scope after agent-workspace.
<workspace>/.compozy/memory/WorkspaceWorkspace-private memory keyed by workspace_id.
<workspace>/.compozy/agents/<agent>/memory/Agent-workspace (default)Workspace-private agent memory; the default tier for --scope agent writes.
<workspace>/.compozy/compozy.dbPer-workspace DBWorkspace catalog DB plus the per-workspace memory_events, memory_decisions, and memory_recall_signals rows.
$COMPOZY_HOME/compozy.dbGlobal DBGlobal catalog DB plus profile-scope memory tables and the workspace registration table.

Extension Files

PathFormatDescription
$COMPOZY_HOME/extensions/<name>/directoryManaged installed extension root.
$COMPOZY_HOME/extensions/.compozy-extension-stage-*temporary directoryStaging directory used while installing managed extensions.

Extension registry records are stored in the global database, not in a separate user-authored config file.

Path Overrides

SettingAffectsNotes
COMPOZY_HOMEAll global home paths.Resolved before global config is loaded. Workspace .env can set it for workspace config loads.
[daemon].socketDaemon socket path.~ is expanded. Daemon boot resolves the final socket path to an absolute path.
[memory].global_dirThe default profile's memory directory, $COMPOZY_HOME/profiles/default/memory.~ is expanded. Empty overlay values are ignored and keep the previous directory.
[http].host and [http].portHTTP/SSE bind address.These are not file paths but affect browser/API endpoint locations.

Special Cases

CaseBehavior
Missing config.tomlTreated as absent. Built-in defaults remain active.
Missing mcp.jsonTreated as absent.
Unknown TOML keyConfig load fails.
Unknown JSON field in mcp.jsonSidecar parse fails.
Daemon boot configDaemon startup uses the home config for boot settings. The general config loader applies MCP sidecars for session/runtime resolution.
~ expansionImplemented for daemon.socket and memory.global_dir; home paths are resolved from COMPOZY_HOME or OS user home.

On this page