Skip to content

Using the CLI

Configuration

Every value resolves in the same order. Nothing is hidden, and oasis-agent --show-config prints where each value came from.

Resolution order

text
command-line flag  >  environment variable  >  config file  >  default

--base-url has no default and is required. Pointing at a server is an explicit choice, so the agent errors cleanly rather than dialling a stale baked-in address.

bash
# Print every resolved value and which layer supplied it
oasis-agent --show-config

Config files

Two locations, checked in this order. The project file wins.

PathScope
./.oasis/config.jsonThis project
~/.oasis/config.jsonThis user

Override the path entirely with --config <path>.

json
{
  "base_url": "http://10.0.0.1:8080",
  "model": "qwen",
  "thinking_profile": "coding",
  "modules": {
    "ethercat": true
  }
}

Config-file keys mirror the flag names in snake_case. An unknown key is a hard error, not a silent no-op. A typo fails at startup rather than producing a run that quietly ignored your setting.

The settings menu

From the REPL:

text
/config              open the settings menu (↑↓ choose, ←→ change, ↵ edit)
/config <key> <val>  set one key without opening the menu

The menu writes to the same file and shows which layer currently supplies each value, so you can see when a flag or environment variable is overriding what you are editing.

Core settings

FlagEnvironment variableDefault
--base-urlOASIS_BASE_URLrequired
--modelOASIS_MODELqwen
--cwdOASIS_CWDcurrent directory
--api-keyOASIS_API_KEYnone
--actorOASIS_ACTORnone
--modeOASIS_MODEmanual
--thinking-profileOASIS_THINKING_PROFILEoff. One of off, creative, coding
--mcp-configOASIS_MCP_CONFIGnone
--context-windowOASIS_CONTEXT_WINDOWprobed from /props, else 120 000
--config./.oasis/config.json, then ~/.oasis/config.json

Context and compaction

FlagDefaultPurpose
--context-windowProbed from the endpoint's /propsTokens the model can hold
--response-reserve8 192Tokens held back for the reply
--max-prompt-tokenscontext-window − response-reserveThe compaction trigger
--no-probeoffSkip the startup /props probe. Implied when both window values are given explicitly

--no-probe removes a round trip from the cold-start path. Use it when you already know the window and are running one-shot jobs at volume.

Behaviour

FlagDefaultEffect
--planoffStart read-only. Shorthand for --mode plan
--skip-permissionsoffApprove every waivable request. Does not waive hard-stop tools
--no-memoryoffNo Memory tool and no memory briefing
--vision-capableoffRequired for ViewImage to do anything
--cwd-hintoffName the working directory in the system prompt
--no-delegation-nudgeoffSuppress the hint to hand bulk reading to a subagent
--no-sessionoffDo not save this conversation
--ethercat-acquire-bus <if>noneRestrict EtherCAT acquisition to these interfaces. Repeatable

--cwd-hint changes the prompt

It is off by default because it alters the assembled prompt prefix. Without it the model is not told where it is working and will occasionally guess wrong. Turn it on if you see that happening; expect one cold prefill when you do.

Terminal

FlagEnvironment variableEffect
--no-colorNO_COLORDisable ANSI colour
--no-historyOASIS_AGENT_NO_HISTORY=1Disable persistent input history
--no-diffsShow file edits as plain results rather than inline diffs
--no-collapseShow every tool result in full
--replForce the interactive REPL. Implied when no other mode is selected and stdin is a terminal

Config-file-only keys

These name a directory an operator sets once rather than something worth a flag on every run. Set them with /config <key> <value> or by editing the file.

KeyPoints at
modulesWhich capability packs are on, e.g. {"ethercat": true}
ethercat_catalogueVendor ESI XML, which turns an EtherCAT product code into a device name
checks_catalogueDescriptor TOML layered over the built-in check catalogue by check id

See Capability Packs and Conformance Checks.

Update settings

These govern how the binary updates itself. See Installing & Updating.

KeyDefaultPurpose
auto_updatetrueBackground auto-update, and the update check at startup. Set false to turn both off
release_hostCompiled in at build timeThe release store versions are resolved from
grant_capabilitiestrueGrant the EtherCAT capabilities during an install. Set false to keep the binary unprivileged

auto_update and grant_capabilities are durable settings rather than environment variables only, because opting out should be written once rather than remembered on every invocation. OASIS_DISABLE_AUTOUPDATER, OASIS_RELEASE_HOST and OASIS_NO_CAPABILITIES are the environment overrides, for CI and containers where writing a config file is awkward.

grant_capabilities on a shared host

Capabilities attach to the file, so a granted binary hands a raw socket to anyone who can execute it. Set grant_capabilities: false where that matters.

Version policy

Two file-only keys pin which versions an install may move to. They are operator-owned and cannot be set with /config. Edit the file.

KeyPurpose
minimum_versionRefuse to update to anything older than this
maximum_versionRefuse to update to anything newer than this
json
{ "minimum_version": "0.4.0", "maximum_version": "0.5.0" }

An update blocked by a bound says which bound blocked it.

An invalid bound is ignored, not enforced

A value that is not a version is dropped rather than applied. The failure mode of a wrongly enforced bound (every install in a fleet frozen by one bad value) is worse than the failure mode of a missed one.

Paths

PathOverride withContents
~/.oasisOASIS_ROOTInstallation root: config, sessions, versions, audit log
~/.local/binOASIS_INSTALL_DIRThe launcher
~/.oasis/sessionsConversation history
~/.oasis/audit.jsonlOASIS_AUDIT_FILEThe audit trail
~/.local/state/oasis-agent/memory/<project>OASIS_MEMORY_DIRPersistent per-project notes
~/.config/oasis-agent/mcp-tokens.jsonOASIS_MCP_TOKEN_STORECached MCP OAuth tokens

Full flag list

bash
oasis-agent --help

--help prints every flag with its environment variable and default. A curated reference is at Command Reference.

software-defined automation