Docs
Configuration
Every setting in .agents/config.toml.
Per-project settings live in .agents/config.toml, created by uac init.
[project]
name = "my-service"
[memory]
scope = "project" # "project" | "global" — where this project's writes land
max_results = 5
[links]
read = ["shared-infra"] # read-only, one-way cross-project memory
[claude]
# appended to the generated CLAUDE.md under a "Claude-specific" heading
extra = """
- Use /self-review before creating PRs
"""
[hooks]
inject_context_on_start = true # SessionStart injects project_context
flush_memory_on_end = true # Stop nudges the agent to memory_write
claude_auto_memory = "ours" # "ours" | "native" — see below
[mcp]
transport = "stdio" # "stdio" | "http"
port = 8765 # http only
Notable settings
[memory] scope — global sends this project’s writes to the shared
~/.agents/global.db instead of the project store.
[hooks] claude_auto_memory — Claude Code ships its own Auto Memory. Running it
and uac’s Stop nudge can double-write. Set this to "native" to leave Claude’s
side to its own memory (Codex is unaffected).
[mcp] transport — http runs one long-lived streamable-HTTP server across
sessions. Note that UAC_SOURCE-based attribution assumes one stdio server per
agent, so it doesn’t apply under a shared HTTP server.
Machine-global files
| Path | What |
|---|---|
~/.agents/registry.toml | maps project name → its memory.db (for links) |
~/.agents/global.db | memories with scope = "global", searched everywhere |
Environment
UAC_SOURCE— set per agent by the MCP registration (claude-code/codex) so writes are attributed. You don’t set this by hand.UAC_HOME— overrides~/.agents(used by the test suite).