config.json is keyed on the
variable names themselves, so /trajectory off and export SERI_TRAJECTORY_ENABLED=false
write and read the same key.
Use the command. The variable is for scripting a machine you are not sitting at.
Which wins
The environment, then~/.seri/config.json, then the built-in default. A variable set to the
empty string counts as unset and falls through to config.json rather than winning as a
valid-looking blank.
Every true/false setting is on unless the value is exactly false. A typo cannot silently
disable a feature.
Provider credentials
Model
A
/model pick persists both keys once a turn has actually succeeded on it, so setting them by
hand is the scripted equivalent of picking one.
Subagent roles
<ROLE> is the uppercased role name: SERI_ROLE_ORACLE_MODEL, SERI_ROLE_CODE_PROVIDER. These
supply a default for when a dispatch does not name a pair, which is how a script, and the
archivist, get a model of their own.
Set both or neither. They are one pin, not two settings. _MODEL on its own is inert, and a
_PROVIDER that is not one of the six provider ids drops the pin rather than half-applying it.
The role then falls back to the session model.
Checking code after a write
Both take effect on the next run rather than mid-session.
Memory
Trajectories
A retention value that is not a positive whole number falls back to 30 rather than failing.
Retention applies only to
.jsonl recordings left by an older release. Recordings now go into
seri.db, and rows there are not aged out.
Profile
The flag wins over the variable.
/profile new <name> creates a profile from inside a session
but does not switch the running one.
Settings with no variable
/mode and /max-turns last for the session and are never written to config.json.
--dangerously-skip-permissions and --max-turns are launch flags with no variable either. See
Launching seri.
What this page leaves out
seri reads a handful of otherSERI_* variables that point it at a different gateway, identity
service or model-catalog endpoint, or that skip a check during testing. They are deployment and
test escape hatches rather than settings, they have no stable contract, and setting one by
accident is a worse outcome than not knowing it exists.
