Configuration
Updated
RightNow Agent, the terminal coding agent, is paused. Its guides stay online as reference.
Inspect configuration in an existing installation before changing its files.
Inspect current settings
Expected: a terminal report with any configured model and endpoint facts.
Check the file locations and precedence below before editing a setting.
Configuration files
The effective product home comes from a non-empty RIGHTNOW_HOME, an eligible legacy home, or the platform default. The default is %USERPROFILE%\.rightnow on Windows and ~/.rightnow on macOS and Linux.
An eligible legacy home is the legacy home variable, or a legacy home directory that has a config.toml while .rightnow does not exist.
| File | Role |
|---|---|
| <RIGHTNOW_HOME>/config.toml | active configuration |
| <RIGHTNOW_HOME>/requirements.toml | user requirements; pinned values win over config.toml |
| <RIGHTNOW_HOME>/managed_config.toml | user copy of managed configuration |
| .rightnow/config.toml | project MCP servers, plugins, permission rules, and the MCP output cap |
| <RIGHTNOW_HOME>/pager.toml | TUI appearance |
| <RIGHTNOW_HOME>/installer.toml | installer and update state |
| config/rightnow.toml | source template, embedded in the binary |
Precedence and project scope
File layers merge in this order; later layers win:
- System managed_config.toml (macOS and Linux)
- <RIGHTNOW_HOME>/
managed_config.toml - <RIGHTNOW_HOME>/
config.toml - <RIGHTNOW_HOME>/
requirements.toml - System requirements.toml (macOS and Linux)
- macOS managed preferences
CLI flags and environment variables then follow field-specific resolvers; the configuration reference gives each key's order.
Project configuration is limited to MCP servers, plugins, permission rules, and [mcp] max_output_bytes. It is read from .rightnow/config.toml in each directory from the repository root to the working directory.
Project MCP servers use the nearest definition by server name. Trusted project plugin paths and project disabled entries extend the user configuration. Permission rules merge by severity, with deny above ask above allow.
Synchronization rules
Every start seeds a missing config.toml from the shipped template, then synchronizes it. The template requires [rightnow].config_version = 6.
- A config without
config_versioncounts as version 0 and is upgraded. A non-integer or negative version is rejected. - An older valid config is backed up, keeps owner values and unknown keys, gains missing template keys, and advances to version 6. On all platforms the upgrade also re-pins four keys to the template value when the user value differs:
turn_time_budget_secs,turn_model_call_limit,turn_, andrepeated_ failure_ limit act_first. A tuned value is reset once, at the upgrade. - Version 6 with missing required keys, or a version newer than 6, is reported and left untouched.
- The active file is re-read before replacement. A concurrent change aborts the upgrade and keeps the backup.
- Startup prints only the upgrade summary;
config syncalso prints each re-pinned key.
Build from source
The following examples require a binary built from the RightNow Agent source.
Explicit sync of a version-5 file outside the active home (startup has already synchronized the active one):
Synchronize the source template
From the RightNow Agent repository root in Windows PowerShell, synchronize the default home file against the source template by passing config sync, --config with $HOME\., and --template with .\config\rightnow.toml to your binary built from source.
If your effective product home is different, replace the --config path with that home's config.toml. config sync runs before the main parser, so it may not appear in help output.
Shipped template
[rightnow] values in config/rightnow.toml, and what the parser uses when a key is omitted:
| Key | Shipped | When omitted |
|---|---|---|
| config_version | Shipped: 6 | When omitted: 0 |
| warm_daemon | Shipped: true | When omitted: false |
| warm_daemon_persistent | Shipped: false | When omitted: false |
| one_call_transactions | Shipped: true | When omitted: false |
| preload_named_files | Shipped: true | When omitted: false |
| workspace_map | Shipped: true | When omitted: false |
| act_first | Shipped: false | When omitted: false |
| retry_recoverable_tool_failures | Shipped: true | When omitted: false |
| bounded_prompt_slimming | Shipped: true | When omitted: false |
| dynamic_tools | Shipped: true | When omitted: false |
| context_packing | Shipped: not set | When omitted: false |
| eager_tools | Shipped: true | When omitted: false |
| turn_model_call_limit | Shipped: 24 | When omitted: 12 |
| turn_time_budget_secs | Shipped: 600 | When omitted: 30 |
| turn_repeated_failure_limit | Shipped: 3 | When omitted: 2 |
| turn_spend_limit_microcents | Shipped: 5000000 | When omitted: no cap; 0 also disables it |
| web_fetch | Shipped: true | When omitted: true when config_version > 0 |
| web_search_engine | Shipped: duckduckgo | When omitted: duckduckgo when config_version > 0 |
| disallowed_tools | Shipped: image and video generation tools | When omitted: the same four tools when config_version > 0 |
Turn limits clamp to 1 to 1024 model calls, 1 to 86400 seconds, and 2 to 16 repeated failures. Spend is in microcents: one millionth of a cent.
The template's other sections:
model = ""keeps memory embeddings off, so memory search is full-text only.voice_keybind_enabled = falsekeeps push-to-talk dictation off.auto_update = falsekeeps background updates off; manual updates remain available.remote_fetch = falseturns off optional remote model-catalog fetches. It does not disable the model API, web tools, MCP servers, hooks, or custom providers.telemetry = falseturns off the outbound telemetry path. It keeps thelogs/unified.jsonldiagnostic log under the effective product home.turn_summary = falseskips the extra model call that writes a summary after each turn.
Provider and model entries are on Providers. Check the RunInfra key resolution when credentials overlap.
What the [compat] keys turn off is on Project Rules.
Startup defaults
Before any command runs, the installed binary exports the resolved home as RIGHTNOW_HOME and its legacy twin. For agent launches (no subcommand, agent, or dashboard) it also sets:
- Web fetch on: an unset
RIGHTNOW_WEB_FETCHfalls back to its legacy alias, then to1. RIGHTNOW_WEB_SEARCH_ENGINEtoduckduckgowhen unset or empty.--disallowed-toolswithimage_gen,image_edit,image_to_video, andreference_to_video, unless you pass that flag.
These defaults outrank web_fetch, web_search_engine, and disallowed_tools in config.toml. To change them, set RIGHTNOW_WEB_FETCH=0, set RIGHTNOW_WEB_SEARCH_ENGINE to brave, pass your own --disallowed-tools, or pass --disable-web-search to remove both web tools.
The Windows source launcher sets the same defaults. It takes the home from a non-empty RIGHTNOW_HOME, then the legacy home variable, then %USERPROFILE%\.rightnow, with no legacy-directory fallback.
It prefers RIGHTNOW_WEB_FETCH for web fetch, otherwise its legacy alias, otherwise 1, then synchronizes both names.
Neither it nor the installed binary adds --system-prompt-override; Session-only rules explains what an override changes when a session resumes.
Notifications
Notifications are focus-gated by default and fire for a completed turn or required approval after three seconds unfocused.
Configuration selects the terminal protocol, event list, custom hooks, title items, progress display, and macOS or Linux sleep prevention; the keys are under [ui.notifications] in the configuration reference.
Run /doctor in the affected session when notifications do not arrive; it reports the detected protocol, focus issues, relevant file, and available fixes. If it cannot start, see Troubleshooting; for external telemetry, see Monitoring.
Removed local-runtime keys
These [rightnow] keys belonged to the local runtime that 1.0.4 removed. The parser ignores each one with a warning; back up the config and delete them.
- model_backend
- cascade
- persistent_prefix_cache
- workspace_grounded_grammars
- verification_parallel_candidates
- warm_daemon_model_keep_alive_seconds
- warm_daemon_model_prewarm
- warm_daemon_model_prewarm_on_battery
- llama_server_auto_start
- llama_server_fallback_model
- llama_server_root
- llama_server_target_model
- llama_server_draft_model
- llama_server_speculative
- llama_server_spec_draft_n_max
- llama_server_spec_draft_n_min
- llama_server_spec_draft_p_min
- llama_server_parallel_slots
- llama_server_context_size
- ollama_parallel_requests
- rpc_pool_workers
- rpc_pool_enabled
- rpc_pool_deep_tier_only
- device_profile
Next step
Look up the exact key and its precedence in the configuration reference.