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 |
| Key |
Type |
Required |
Default |
Description |
patterns |
Array |
|
[] |
tool-name globs the deny-by-default floor permits |
No configurable keys.
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 |
| Key |
Type |
Required |
Default |
Description |
max_output |
Integer |
|
30000 |
bytes of Bash output returned to the model before truncation |
| Key |
Type |
Required |
Default |
Description |
rg |
boolean |
|
true |
use ripgrep for Grep when it and a subprocess seam are available |
| Key |
Type |
Required |
Default |
Description |
max_output |
Integer |
|
30000 |
bytes of collected job output returned to the model before truncation |
No configurable keys.
No configurable keys.
No configurable keys.
| 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 |
Edit this page on GitHub