Skip to main content

Settings

Every mattstack app reads the same settings, so one change reaches rt, board, deck, console and the rest. They are stored under ~/.mattstack.

Where a setting can live​

A setting can be set at four levels, called scopes:

ScopeWho it applies to
useryou, on every Mac
teamyour team's own settings
orgshared by every team in your org
machinethis Mac only

When the same setting is set in more than one place, the most specific one wins. From weakest to strongest the order is: the built-in default, org, team, user, org for one repo, team for one repo, user for one repo, machine, then machine for one repo. So a value set for one repo at the org, team or user level beats every plain org, team or user value, and a machine value beats all of those. A setting that only makes sense for one repo can be set only for that repo.

The org and team scopes are shared through your org's repo, so a change there reaches every member's Mac. Only an org admin can write the org scope, and only that team's owner can write a team's scope. See Teams and invites for roles. Without a team, you have the user and machine scopes.

A few settings take a list, such as the Claude plugins to install. For those, the lists from every level are added together instead of one replacing another.

Read a setting​

bash
rt settings get <key> # the value, and where it came from
rt settings explain <key> # every level, weakest first
rt settings list # every setting and its value

rt settings explain is the first thing to run when a setting is not what you expect, because it shows which level set it. Add --json to any of these for machine-readable output, and --repo to read a repo's own values.

Change a setting​

In the console, open the settings page: it lists every setting with its current value and level. A single value saves as soon as you commit it: flip a toggle, pick an option, or press Enter or leave the field. A structured value opens as a draft, as a form or as JSON, and saves when you press Save. From a terminal:

bash
rt settings set rt.ui.background dark --scope user
rt settings unset rt.ui.background --scope user

--scope picks the store to write to: user, org, team or machine. The value is JSON. For a team write, --team names the team, and it defaults to your own. Each setting allows only some scopes, and a write to one it does not allow is refused.

See the rt settings reference for every flag.