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:
| Scope | Who it applies to |
|---|---|
| user | you, on every Mac |
| team | your team's own settings |
| org | shared by every team in your org |
| machine | this 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
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:
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.