Contents

Config Catalog

Generated by rake config:catalog. Every service that declares a Hames::Schema is listed with the config keys it reads — type, whether it is required, its default, and what it does. CI diffs this, so a config key that changes shape shows up in review rather than in a support thread.

Injectable seams (a transport, a resolver, a client factory) are wiring passed in code, never YAML, so they are absent here by design. A service with no schema is not listed; doctor reports it as unschema'd.

terret-acp — Terret::ACP::Service (acp)

No configurable keys.

terret-core — Terret::Compactor (compactor)

Key Type Required Default Description
budget Integer   token budget that triggers compaction; unset or falsy disables it

terret-core — Terret::Credentials (credentials)

Key Type Required Default Description
file String   path to an AES-256-GCM encrypted credential store, provider => base64(iv+tag+ciphertext); the master key is ENV TERRET_CREDENTIALS_KEY (base64 of 32 bytes) and the per-provider ENV _API_KEY always wins — neither is config, and with no file only ENV resolves

terret-core — Terret::LLM::Service (llm)

Key Type Required Default Description
roles Hash   {} role => “provider/model” map; an open set of roles

terret-core — Terret::Loop (loop)

Key Type Required Default Description
max_agents Integer   128 cap on concurrently live agents in this loop

terret-core — Terret::Prompt (prompt)

No configurable keys.

terret-core — Terret::Redactor (redactor)

Key Type Required Default Description
patterns Array   [] regexp/string patterns scrubbed from tool output and the log
replacement String   "[REDACTED]" text a matched secret is replaced with

terret-core — Terret::RoleSummarizer (summarizer)

Key Type Required Default Description
role String or Symbol   :compactor llm role a summary is produced under

terret-core — Terret::Sessions (sessions)

No configurable keys.

terret-core — Terret::Store::JSONL (session_store)

Key Type Required Default Description
dir String yes directory holding one JSONL file per session

terret-core — Terret::Store::Memory (session_store)

No configurable keys.

terret-core — Terret::Subagents (subagents)

No configurable keys.

terret-core — Terret::Titler (titler)

Key Type Required Default Description
role String or Symbol   :titler llm role a title is generated under

terret-core — Terret::Tools::AllowListFloor (allow_list)

Key Type Required Default Description
patterns Array   [] tool-name globs the deny-by-default floor permits

terret-core — Terret::Tools::Approvals (approvals)

No configurable keys.

terret-core — Terret::Tools::Registry (tools)

No configurable keys.

terret-exec — Terret::Exec::FS (fs)

Key Type Required Default Description
workspace String or Array   directory root(s) every fs op is contained to; empty or unset denies every operation

terret-exec — Terret::Exec::Jobs (jobs)

Key Type Required Default Description
max_jobs Integer   8 cap on concurrent background jobs
max_output Integer   1048576 bytes of a job’s output retained before truncation
cwd String   working directory for spawned jobs (default: Dir.pwd)
env Hash   {} environment overlay for spawned jobs

terret-exec — Terret::Exec::SandboxNone (sandbox)

No configurable keys.

terret-exec — Terret::Exec::Shell (shell)

Key Type Required Default Description
timeout Numeric   120 seconds a shell command may run
max_output Integer   1048576 bytes of command output retained before truncation
cwd String   working directory for the shell (default: Dir.pwd)
env Hash   {} environment overlay for the shell

terret-exec — Terret::Exec::Subprocess (subprocess)

Key Type Required Default Description
term_grace Numeric   2 seconds between SIGTERM and SIGKILL when stopping a process

terret-exec — Terret::Exec::Terminals (terminals)

Key Type Required Default Description
max_terminals Integer   8 cap on concurrently open terminals
read_timeout Numeric   0.1 seconds a non-blocking terminal read waits for output
cwd String   default working directory for opened terminals (default: Dir.pwd)

terret-mcp — Terret::MCP::Service (mcp)

Key Type Required Default Description
strict boolean   false when true, a server that fails to mount fails the boot
servers Hash   {} name => server config (url or command, args, env, bearer, approval, timeout)

terret-morph — Terret::Morph::Summarizer (summarizer)

Key Type Required Default Description
compression_ratio Numeric   0.4 target fraction of the original token count
api_key String   Morph key; falls back to ENV MORPH_API_KEY when unset
api_base String   "https://api.morphllm.com/v1" Morph Compact API base URL
timeout Numeric   30.0 seconds a compaction request may run

terret-openrouter — Terret::OpenRouter::Plugin

Key Type Required Default Description
api_key String   OpenRouter key; falls back to ENV OPENROUTER_API_KEY when unset
base_url String   "https://openrouter.ai/api/v1" OpenAI-compatible API base URL
referer String   HTTP-Referer header sent with each request
title String   X-Title header sent with each request
max_attempts Integer   4 retry attempts on a retryable error
base_delay Numeric   0.5 seconds of the first retry backoff

terret-sandbox-docker — Terret::Sandbox::Docker (sandbox)

Key Type Required Default Description
image String   "ruby:slim" container image argv runs in
network String   "none" docker –network mode (none, bridge, host, or a network name)
workspace String or Array   host directory root(s) mounted into the container
user String   container user (default: the host uid:gid); nil runs as root
docker_bin String   path to the docker binary (default: resolved from PATH)
memory String   docker –memory limit (e.g. 256m, 1g); unset means no limit
cpus String or Numeric   docker –cpus limit (e.g. 1.5); unset means no limit
pids Integer   docker –pids-limit, the container’s max process count; unset means no limit

terret-store-sqlite — Terret::Store::SQLite (session_store)

Key Type Required Default Description
path String yes SQLite database file for the append-only session log

terret-tools-std — Terret::ToolsStd::Bash (tools_std_bash)

Key Type Required Default Description
max_output Integer   30000 bytes of Bash output returned to the model before truncation

terret-tools-std — Terret::ToolsStd::Files (tools_std_files)

Key Type Required Default Description
rg boolean   true use ripgrep for Grep when it and a subprocess seam are available

terret-tools-std — Terret::ToolsStd::Jobs (tools_std_jobs)

Key Type Required Default Description
max_output Integer   30000 bytes of collected job output returned to the model before truncation

terret-tools-std — Terret::ToolsStd::Task (tools_std_task)

No configurable keys.

terret-tools-std — Terret::ToolsStd::Terminals (tools_std_terminals)

No configurable keys.

terret-tools-std — Terret::ToolsStd::Todo (tools_std_todo)

No configurable keys.

terret-tools-std — Terret::ToolsStd::WebFetch (tools_std_web_fetch)

Key Type Required Default Description
allow Array   [] host globs WebFetch may reach; empty denies every host
deny Array   [] host globs WebFetch may never reach
timeout Numeric   30.0 seconds a fetch may run
max_bytes Integer   100000 bytes of a response body read before truncation

terret-ws — Terret::WS::Service (ws)

Key Type Required Default Description
tokens Hash   {} token => agent-id map authorizing socket connections
queue_limit Integer   256 max frames buffered per connection before backpressure
heartbeat Numeric   20 seconds between server heartbeats
replay_limit Integer   10000 max events replayed on one subscribe; a from_seq reaching further back gets the newest replay_limit and a replay_truncated frame
max_concurrent_replays Integer   4 max subscribe replays reading the log at once; surplus connections park until a slot frees