Skip to content

File Locations

All CompozyOS global, workspace, agent, skill, database, log, socket, 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/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.dbSessionPer-session event database during the live session.
$COMPOZY_HOME/sessions/<session-id>/meta.jsonSessionPer-session metadata.
$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. CompozyOS injects it for every provider.
~/.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.
<workspace>/.compozy/agents/<name>/AGENT.mdWorkspace agentWorkspace-local agent definition.
<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. CompozyOS injects it for every provider.
<workspace>/.claude/skills/<group>/.../<name>/SKILL.mdWorkspace (claude)Claude Code convention inside the project, scanned when claude is enabled.

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, and skill files.
$COMPOZY_HOME/profiles/default/yesThe permanent default profile's directory.
$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.
$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, 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.
<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, and automation state. 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, and start time.
$COMPOZY_HOME/logs/compozy.loglog fileStructured daemon log file path from the home layout.
$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

Each session owns a directory under $COMPOZY_HOME/sessions/<session-id>/.

~/.compozy/sessions/<session-id>/
  events.db
  meta.json
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.

The append-only events.db is the source of truth for the session record. Read it through compozy session events and compozy session history rather than opening the file directly.

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/
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).
<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.
<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.

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.

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.
[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.
Retired memory or compaction settingArchived on load as a commented block at the end of the same file; the load continues. If the file changes during the rewrite, or cannot be replaced, nothing is written, the load logs a config.retired_keys_archive_failed warning, the retired values stay inactive, and the next load retries. See Archived retired settings.
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; home paths are resolved from COMPOZY_HOME or OS user home.

On this page