Settings & config reference
Everything the console persists lives in one folder:
%APPDATA%\runspec-console\ (macOS/Linux: ~/AppData/Roaming/runspec-console/).
The Settings UI manages these files; this page is the map for when you want
to read, seed, or sync them directly. All files are plain TOML.
Config file map
| File | Holds | Synced? | Edited in |
|---|---|---|---|
config.toml |
All [section] settings below |
Yes (deep-overlay) | Settings tabs |
runspec_hosts.toml |
[[host]] fleet entries |
Yes (by name) |
Settings → Jump Hosts |
runspec_groups.toml |
Group-name registry | Yes | Host editor → Manage groups |
runspec_profiles.toml |
Profile definitions | Yes (active pick is machine-local) | Sidebar / host editor |
runspec_triggers.toml |
[triggers.<name>] tables |
Yes | Triggers tab |
runspec_rota.toml |
Working-hours rota | No — machine-local | Rota tab |
runspec_filters.toml |
Transfer filters — source-side pipelines | Yes | Settings → Filters |
runspec_credentials.toml |
Credential metadata (secrets live in the OS keychain) | Yes | Settings → Credentials |
runspec_runbooks.toml |
[[runbook]] collection |
Yes (by id) |
Agent / Settings → Runbooks |
runspec_repos.toml |
Agent-accessible repo registry | Yes (checkout paths are machine-local) | Settings → Repos |
runspec_self_service.toml |
Room self-service catalogue | Yes | Settings → Self-Service |
runspec_memory.toml |
Agent memory | No — machine-local | Agent (remember) |
conversations/, workspaces/, repos/ |
Chat history, session scratch, repo checkouts | No | — |
"Synced" means the file participates in Config Sync and package config seeds; machine-local files never leave the machine.
[llm] — model & API
Set in Settings → Model / API.
| Key | Meaning |
|---|---|
provider |
anthropic, openai, bedrock, langserve, or a plugin adapter |
api_key |
Static API key |
api_key_command / api_key_ttl_ms |
Instead of a static key: a command whose stdout is a short-lived token, re-run after the TTL |
base_url |
Corporate proxy / gateway endpoint |
model / models |
Active model id / the dropdown's list of available ids |
max_tokens |
Per-reply output ceiling (default 8192); replies that hit it auto-continue, up to max_continuations (default 3) |
system |
System prompt — replaces the built-in default wholesale (including its clarify-don't-guess guidance) |
system_append |
Extra system-prompt text added to whichever base applies. Prefer this for site policy: you keep the built-in guidance instead of trading it away |
tool_mode |
dedup (default — one tool per runnable with a host enum), per_host, or search (meta-tools + catalogue index; tool_index_limit caps the index) |
tool_output_cap |
Truncation cap for tool results returned to the model |
Bedrock adds the standard AWS credential chain (aws_region,
aws_access_key, aws_secret_key, aws_session_token) or a
base_url+api_key proxy path. LangServe gateways add mapping knobs
(input_messages_key, input_tools_key, tools_in_config, auth_header,
auth_scheme, max_tokens_key) — see adapters.
[console]
| Key | Meaning |
|---|---|
docs_url |
Overrides the in-app Documentation link |
update_check_timeout |
Seconds for the footer update check (default 20) |
confirm_timeout |
Seconds an agent tool-confirmation gate waits for the operator in chat before treating no-answer as a deny (default 300; 0 = wait indefinitely) |
trigger_confirm_timeout |
Same, for unattended trigger/schedule agent turns (default 3600, longer because the operator may be away when it fires; 0 = wait indefinitely) |
output_line_cap / output_byte_cap |
Streaming caps for direct-run output (defaults 5000 lines / 2 MB; 0 disables) |
theme.* |
White-label branding — see the walkthrough |
[ssh] and [refresh]
Connection pooling, timeouts, proxies, and the background refresh cadence — documented with the fleet setup in Hosts & fleet.
[workspace]
| Key | Default | Meaning |
|---|---|---|
spill_threshold |
32768 | Tool results above this many bytes spill to workspace files |
code_exec |
true |
Master switch for the run_python_sandboxed / run_sql_sandboxed tools |
exec_timeout |
30 | Seconds before a sandboxed run is killed (hard limit — the run is a killable subprocess) |
headless_retention_days |
7 | How long trigger/schedule-run workspaces are kept |
[sandbox]
Settings for the WASM/WASI code-execution sandbox behind run_python_sandboxed /
run_sql_sandboxed (see Sandboxed code execution). Needs
the [sandbox] extra (pip install runspec-console[sandbox]).
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Kill switch (with [workspace] code_exec); either false drops the tools |
mem_mb |
512 | Guest memory ceiling (MB) |
fuel |
(unset) | Optional wasmtime CPU-instruction cap; unset ⇒ the wall-clock timeout is the guard |
wasm_path |
(unset) | Explicit path to a WASI CPython python.wasm (air-gapped installs) |
auto_download |
true |
Fetch the pinned binary on first use when none is found locally |
url / sha256 |
(pinned) | Override the download source (private mirror) |
[web]
Settings for the agent's read-only fetch_url web-page tool (see
the agent guide).
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Master switch for the fetch_url tool (set false to remove it) |
timeout |
20 | Seconds before a single fetch is aborted |
max_bytes |
2000000 | Cap on bytes downloaded per fetch |
ca_bundle |
— | Path to a private-CA bundle for internal HTTPS hosts |
tls_verify |
true |
Set false to skip TLS verification (TLS-intercepting proxies) |
[chat_history]
| Key | Default | Meaning |
|---|---|---|
enabled |
true |
Auto-save conversations locally |
max_conversations / max_age_days |
200 / 90 | Retention pruning |
compact_on_resume |
false |
Use the model to summarise the middle of a long resumed chat (otherwise a mechanical note) |
resume_keep_first / resume_keep_recent |
1 / 20 | Turns kept verbatim when resuming a long chat |
[plugins]
modules = ["mycorp_adapters"] — modules imported at startup so they can
register custom LLM adapters; see adapters.
Launch flags
runspec-console # normal start
runspec-console --devtools # Chromium inspector in the packaged build
runspec-console --dev # attach to a running Vite dev server (UI development)
Troubleshooting
- "Error reading SSH protocol banner" / connection bursts — see SSH tuning; the pool and backoff settings are the levers.
- "the remote sent non-SSH data on connect" — a proxy/middlebox is
intercepting the SSH port; set
[ssh] proxyoruse_ssh_config = true. - Footer stuck on "update unknown" — the package-index query timed out;
raise
[console] update_check_timeout(slow internal mirrors). - A runnable doesn't appear — it must be
pip-installed into the console's venv (local) or a venv listed in the host'srunspec_paths(remote); check withrunspec localin that venv.discoverable = falserunnables are hidden by design.