Settings¶
Defaults are safe for most users. Use settings when you need a different port, larger model limit, stricter sandbox, or optional feature behavior.
View and change settings¶
From the shell:
ifc-console settings list --sources
ifc-console settings get sandbox.mode
ifc-console settings set sandbox.mode strict
ifc-console settings unset sandbox.mode
From the running console:
/settings
/settings sandbox.mode strict
Values are validated before they are saved. --sources shows which layer set
each effective value.
Files and precedence¶
User data lives under ~/.ifc-console/, or under IFC_CONSOLE_HOME when that
environment variable is set:
~/.ifc-console/
settings.json settings changed by the user
token persistent local server token
recents.json recently opened models
backups/ timestamped copies made before overwrites
artifacts/ reports, ChangeSets, backups, and receipts
jobs/ durable job records
transactions/ transaction workspaces and journals
sessions/<id>/ per-session audit records
logs/ rotating application log
Settings are applied in this order, with the last value winning:
defaults < user file < project file < project local file < environment < CLI
A project may contain .ifc-console/settings.json and a git-ignored
.ifc-console/settings.local.json.
Project settings are intentionally limited
Project files may set only tui.theme. They cannot change permissions,
network settings, paths, feature exposure, resource limits, sandbox policy,
or plugin loading. A cloned repository must not weaken your user settings.
Common settings¶
| goal | setting | example |
|---|---|---|
| require isolation for read-only code | sandbox.mode |
strict |
| use another HTTP port | server.port |
8390 |
| allow a model folder outside the launch folder | files.allowed_dirs |
["C:/models"] |
| keep more models in memory | workspace.max_resident |
5 |
| allow larger viewer downloads | viewer.max_model_mb |
500 |
| enable IDS tooling | install the validation extra | pip install "ifc-console[validation]" |
Keep files.allow_ai_save=false unless automated persistence is a deliberate
requirement. The terminal /save command works regardless of that AI-only
setting.
Session and server¶
| key | default | meaning |
|---|---|---|
mode.default |
ask |
startup permission mode |
server.port |
8383 |
HTTP port for MCP and the viewer |
server.persistent_token |
true |
reuse one machine token so clients are configured once |
server.token_in_config_snippets |
false |
include the token in generated direct-HTTP configurations |
tui.theme |
dark |
dark, light, or auto for the console and viewer |
Generated code and sandbox¶
| key | default | meaning |
|---|---|---|
exec.timeout_seconds |
30 |
maximum time for one code run |
exec.output_char_limit |
40000 |
output limit per field before truncation |
exec.allow_system_access |
false |
allow system-class code in edit mode |
exec.system_modules_extra |
[] |
additional imports classified as system access |
sandbox.mode |
auto |
auto, strict, or off |
sandbox.memory_mb |
2048 |
sandbox worker memory cap |
sandbox.max_model_mb |
512 |
largest model copied into the sandbox; 0 disables the limit |
sandbox.startup_timeout |
120 |
worker startup timeout in seconds |
sandbox.load_timeout |
600 |
model-copy load timeout in seconds |
sandbox.warm_on_load |
false |
start the sandbox when a model opens |
Files and workspace¶
| key | default | meaning |
|---|---|---|
files.allowed_dirs |
[] |
additional readable roots |
files.allow_ai_save |
false |
let AI operations persist IFC changes |
files.backup_retention |
20 |
backups retained per model |
files.follow_symlinks |
false |
resolve symlinks while listing files |
files.max_open_mb |
4096 |
reject larger models; 0 disables the limit |
workspace.enabled |
true |
index allowed folders for workspace discovery |
workspace.max_resident |
3 |
models held in memory, including the active model |
workspace.max_total_mb |
6144 |
combined resident model limit; 0 disables it |
workspace.scan_depth |
3 |
directory levels scanned |
workspace.scan_cap |
10000 |
maximum files examined per scan |
Optional features¶
| key | default | meaning |
|---|---|---|
viewer.enabled_default |
false |
start the viewer automatically |
viewer.max_model_mb |
200 |
largest model sent to the browser |
chat.enabled_default |
false |
start browser chat automatically |
chat.provider |
openai |
openai, anthropic, openrouter, or local |
chat.model |
empty | initial provider model ID |
chat.base_url |
empty | provider URL override, commonly for a local server |
chat.tools |
true |
allow the chat model to call ifc-console tools |
chat.max_tool_rounds |
8 |
maximum tool rounds per answer |
chat.local_only |
false |
reject provider URLs outside this machine |
chat.timeout_s |
300 |
provider response timeout |
knowledge.enabled |
true |
expose offline knowledge tools |
knowledge.autobuild |
true |
build the index in the background |
knowledge.schemas |
all supported schemas | schemas included in the index |
knowledge.max_results |
10 |
default search result count |
plugins.enabled |
false |
allow trusted operation plugins to load |
plugins.allow |
[] |
exact plugin entry-point allowlist |
Retention and logging¶
| key | default | meaning |
|---|---|---|
recents.max |
20 |
recent models retained |
sessions.retention |
50 |
audit sessions retained |
automation.jobs_retention |
200 |
completed job records retained |
automation.artifact_retention_days |
30 |
minimum age for unreferenced cleanup candidates |
automation.validation_timeout_s |
1800 |
validation worker timeout |
automation.transaction_timeout_s |
600 |
preview, commit, and verification timeout |
automation.transaction_lock_timeout_s |
15 |
wait for another process editing the same IFC |
logging.level |
info |
debug, info, warning, or error |
logging.file_enabled |
true |
write the rotating application log |
Any setting can be overridden for one process with an environment variable.
For example, IFC_CONSOLE_EXEC_TIMEOUT_SECONDS=60 sets
exec.timeout_seconds. Values are parsed as JSON when possible.