reference

reference

Where things live, and what the knobs are.

settings.json

~/.micro-cc/settings.json. Edit it by hand or ask /setup. A key missing from an older install is filled in with its default on first read.

dangerous
tool names gated behind an approval prompt
model
the endpoint currently in use, written by every /login path
tokens_budget
the context budget the loop trims against
max_subagents
how many headless subagents one session may run at once

source: src/micro_cc/utils/settings_store_.py

environment variables

MICROCC_BASH_ENV_DENYLIST
extra variable names stripped from the environment handed to bash_ source
MICROCC_CALLER_PROJECT_DIR
internal: set by bash_ so a headless run can register with the session that spawned it source
MICROCC_FIRST_EVENT_TIMEOUT
how long a headless run waits for the model's first event before giving up source
MICROCC_HEADLESS_VERDICT_FD
internal: the pipe a spawned headless run uses to report whether it came up source
MICRO_CC_MIRROR_POSTGRES_URL
source
MICRO_CC_POSTGRES_URL
set it and every message, memory and settings read or write routes to Postgres instead of local JSON source
MICRO_CC_TRIM_BUDGET
overrides the context budget the loop trims against, on every backend source

~/.micro-cc/

Everything durable lives here, outside the package, so it survives /update and any self-edit. pip never installs into it. Built-in defaults stay in the package and the files you add here are merged over them, by name, at runtime.

settings.json
model, dangerous tools, budgets
models.json
your own model entries; merged over the remote catalog and the built-in table
memory.json
the keyed memory, global tier
theme.json
colours for the terminal surface; yours, not the package's
statusline.sh
the status line, run as a script; whatever it prints is used verbatim
.env
shared secrets for bash_
commands/
your slash commands: name.md is a prompt, name.py is code
renderers/
override how a message type or a tool call is drawn
panels/
lines in the header, or above the input
glyphs.json
the glyph and label for each message type
keys.json
a key mapped to a slash command or an action
banner.txt
the wordmark
skills/
global skills, one directory each
mcps/
globally registered MCP servers
projects/{name}_{hash}/
per-project conversation, memory, tracked subagents, inbox
sessions/
the live-session registry used by message-session
self_heal_state.json
the supervisor's consecutive boot-failure count
cache/
the harness's own scratch: the remote model catalog, and the built-in status line it falls back to

source: src/micro_cc/utils/msg_store_.py

the package

Resolve it with python3 -c "import micro_cc, os; print(os.path.dirname(micro_cc.__file__))", then read any of it.

browser/
the browser driver behind the browser tool
cache/
local caches
models/
provider adapters and the model registry
postgres_store/
optional Postgres backend for messages, memory and settings
skills/
bundled skills
tools/
every tool, one file each
tui_native/
the terminal UI
utils/
storage, prompt assembly, settings, command registry, the reload poll
webui/
the browser surface and its server
claude_loop_.py
the agent loop: builds the system prompt, assembles tools, consumes the event stream
execute_tool.py
tool dispatch
self_heal_.py
the boot supervisor: reinstalls the published wheel if an edit breaks startup
start_headless_.py
the one-shot headless entry point
start_live_tui_.py
the interactive entry point and the self-reload poll

built 2026-10-04 from microcc@6501e4a · v0.2.103 · llms.txt