Skip to content
Settings

Settings

Configure model providers, judges, agent keys, run hosts and Docker. Existing results open without credentials. Changes save automatically.

Page Sets
Model providers A run's key or endpoint
System One provider The System One judgement
LLM judge provider The second judge
Agent keys A Harbor agent's vendor credentials
Run hosts SSH machines
Sandbox Docker: its Docker Hub login and the images runs keep
General Tour and checklist; start-up options remain in the environment

Variables

Variable Used by
MODEL_API_KEY, MODEL_API_URL A local or self-hosted endpoint; the URL required, the key optional
OPENAI_API_KEY Runs on OpenAI
OPENROUTER_API_KEY Runs on OpenRouter
ANTHROPIC_API_KEY Standard runs on Anthropic; the relay alone holds it
SYSTEM_ONE_PROVIDER, SYSTEM_ONE_MODEL, TYPESAFE_API_KEY System One
LLM_JUDGE_PROVIDER, LLM_JUDGE_MODEL LLM judge
AGENT_KEYS Agent key names, one line each; Harbor runs only
HOSTS The run hosts
Rule
Offered Only the providers set here (the rule)
Sent A run gets its provider's key and endpoint, no other secret
Licences Set on the benchmark's page (Licences), kept under the configuration directory's secrets/<benchmark>/ (per-task environments); a declared name migrated into settings: Move it here
GitHub No token; Git uses this machine's credentials

Start-up options

Set in the environment or settings.json before Nullius starts; address, port and job roots also have command-line options. The app does not load app/.env.

Variable Default
APP_HOST, APP_PORT 127.0.0.1, 5057
JOB_ROOTS, WORKSPACES_DIR, WORKSPACE Result roots, workspaces folder, workspace to open
DATASET_ROOTS Local dataset checkouts
RUNS_DIR, HARBOR_PINS runs/ in the user data directory; harbor-pins/ beside the runs
STANDARD_DIR, STANDARD_DATA_DIR, SECRETS_DIR standard/ in the data directory; datasets/ inside it; secrets/ in the configuration directory
NULLIUS_CATALOGUE catalogue/ in the user data directory; whole-entry overrides of the bundled catalogue
DEBUG Development debugger and reloader; off by default, enabled by 1

Save

Rule
Writes The user configuration directory's settings.json, mode 0600, including saved provider credentials
Edited by hand Read on the next page, no restart
Precedence The process environment wins; its row is read-only
Keys No provider-specific length check; values must be single-line and contain no spaces. Agent key names use environment-variable syntax, without a length limit
Secrets Shown as ********; Replace or Remove
Guards Its own address in the Host header, loopback browser, same origin, form token
Validation One bad value, nothing written
Code app/nullius/settings.py; app/.env.example documents variable names for scripts and migration

Storage

nullius paths (or nullius paths --json) shows the active locations without credential values. These Linux defaults are independent of the working directory and installation:

Stores Default
Saved settings ~/.config/nullius/settings.json
Benchmark licences ~/.config/nullius/secrets/<benchmark>/
User catalogue ~/.local/share/nullius/catalogue/
Workspaces ~/.local/share/nullius/workspaces/
Runs started from Review ~/.local/share/nullius/runs/
Standard installs and data ~/.local/share/nullius/standard/
Caches ~/.cache/nullius/

XDG_CONFIG_HOME, XDG_DATA_HOME and XDG_CACHE_HOME move their respective roots. Set NULLIUS_HOME=/path/to/profile in the process environment to use config/, data/ and cache/ below one separate profile instead. More specific storage variables in the table above still override these defaults. Other platforms use their native user directories; nullius paths is authoritative.

Personal settings and catalogue additions survive package upgrades. A user catalogue folder replaces the entire bundled folder of the same kind and key; files are never mixed between them. Standard commands that edit a bundled definition first copy that entry to the user catalogue. On a customized benchmark, agent or capability page, Use bundled entry removes that copy and its local proof records. Saved runs, results and credentials stay unchanged. This selects the entry shipped with Nullius; it does not create another benchmark version.

Migrate an existing checkout

nullius migrate --from /path/to/old-checkout
nullius migrate --from /path/to/old-checkout --apply
Rule Behavior
Preview File counts and conflicts; no credential values
Settings Copies app/.env; it is never loaded automatically
Workspaces Preserves an explicit WORKSPACES_DIR; otherwise copies the checkout's workspaces
Runs Stay at their original paths; keep those directories available
Licences Include with --secrets /path/to/old/secrets
Linked folders Selected storage roots can point to another disk; links inside copied contents are refused
Conflicts Differing destination files or folder contents stop the copy
Catalogue User copies override bundled updates; Use bundled entry on the entry's page restores the bundle
Source Unchanged; migrating the running checkout copies all its entries because no independent baseline exists

Set NULLIUS_HOME before both commands to migrate into a separate profile.