Skip to main content

Install

rt ships inside mattstack.app, the mattstack menu bar app. Installing the app installs rt, the daemon, and everything else in the suite.

Requirements​

  • An Apple silicon Mac. rt ships an arm64 build only.
  • macOS 14 or newer.
  • Xcode Command Line Tools. The setup checklist offers to install them.

Install the app​

  1. Download mattstack-<version>.dmg from GitHub Releases.
  2. Drag mattstack.app to /Applications and open it.
  3. The setup window opens and walks you through five steps.

Welcome​

A summary of what setup does. Everything it installs is reversible from Settings → Uninstall.

Your team​

Pick one:

  • Create a team: name it, then paste the URL of an empty repo for it, or let mattstack create a private GitHub repo when the gh CLI is signed in.
  • Join a team: paste the invite code a teammate sent you.
  • Just me: no team repo, no forge account. See Just me.
  • Restore: bring back your own setup on a new Mac from your home repo and its age key.

See Teams and invites for how teams, invites, and team packs work.

Before we begin​

The checklist of everything setup needs, grouped into Your Mac, Accounts, Access, and Tools. A row that needs you carries its own button: grant a permission, choose a folder, connect an account, or show the steps to take. Re-check refreshes every row. Install unlocks once every required row is ready, and Continue in limited mode goes ahead while optional rows are still outstanding.

Your Mac covers macOS, the Command Line Tools, PATH precedence, and three permissions: Full Disk Access, Login Items, and Notifications. Each permission row asks for it or opens the matching pane in System Settings.

Accounts has one row for each integration your team or its packs use: the team's GitHub or GitLab, plus Linear, Slack, StrongDM, and others when the team declares them. Connect opens a sheet with a Create a token on GitLab… (or GitHub) link to the forge's new-token page, with the scopes your role needs already checked and the token named mattstack:

ForgeJoining a teamOwning a team
GitLabapiapi
GitHub (classic token)repo, read:orgrepo, read:org

Paste the token and Connect. A pasted token missing a scope is refused, naming the scope it lacks; a token already stored that falls short shows as needing you, with the same Connect sheet. A GitLab member needs api because the board posts review comments and replies on merge requests as you. The GitHub row is ready without a token when the gh CLI is already signed in. The GitLab link targets GitLab 16 or newer.

Repo folder asks where rt clones your team's repos; Choose folder… opens a folder picker.

Installing​

Install runs each step and streams its progress:

  • links rt, fast-browser, gitq, and deck into ~/.local/bin, puts that folder first on your PATH, and adds the rtcd alias to your shell
  • registers the rt daemon and deck (which serves the bundled apps) as background services and starts them
  • installs the mattstack Claude Code plugins and seeds Claude Code's permissions (see Claude Code setup)
  • installs the rt-context editor extension into every editor it finds

Installed​

The last screen confirms the checklist again and shows where things live: the m icon in the menu bar, rt in a new terminal window, and the board at board.mattstack.

Before you finish holds the two rows that gate Finish:

  • Writing style: the voice agents use for the reviews, replies, and PR descriptions they post under your name. Choose style… offers the mattstack presets or any skill of your own.
  • Fast Browser extension: Fast Browser drives your real Chrome session through a Chrome extension that you load yourself. Show steps… walks through it: open chrome://extensions, turn on Developer mode, Load unpacked from ~/.fast-browser/extension/current/unpacked, then pair it and confirm with fast-browser doctor. Skip for now skips it on this Mac; Settings → Fast Browser shows Un-skip to bring it back. Without Chrome installed, this row is skipped.

Still to do lists any optional rows left open. Owners also get Invite teammates….

After setup​

Setup status…, just under Settings… in the menu bar menu, reopens the checklist at any time. Until setup is finished, Resume setup… right below it reopens the wizard where you left off. Use it to connect an account, rotate a token, or fix a row that slipped. It also warns when a token is close to expiring.

Settings… covers the rest: your writing style, startup and updates, team invites, permissions, Fast Browser, and Uninstall. See The menu bar app.

Home repo backup: your home repo (~/.mattstack/user) keeps your settings versioned on this Mac. Its checklist row offers Add remote…: paste the URL of an empty private repo you own, or pick Create a private repo for me.

From a terminal​

To set up without the setup window (a VM, CI, or a scripted install), run the same steps from the CLI. mattstack.app still registers the background services and the proxy, so keep it running:

bash
# run from /Applications, not the DMG
/Applications/mattstack.app/Contents/MacOS/rt --post-install
rt setup status # the checklist, as text
rt verify # read-only health report

Each checklist button has a CLI equivalent:

bash
rt setup gitlab connect # or github, linear, slack, sdm
rt setup repo-root set ~/code
rt home remote set <url> # or --create
rt skills writing-style use <id> # omit the id to pick
rt setup waive tool.fast-browser-extension

Until setup has run, other rt commands print a one-line hint pointing at mattstack.app or rt setup install.

Claude Code setup​

Install seeds a baseline permissions.allow list into every Claude Code config dir so agents don't stall on per-tool prompts for calls rt already trusts: the mattstack MCP server and the Fast Browser plugin, EnterWorktree, claude plugin update, and the few rt commands skills still run in a shell (rt gate and rt events wait). Everything else a skill runs routinely is a tool on the MCP server. Existing entries stay; only missing ones are added. A config dir with no permissions.defaultMode gets auto, and a mode you already chose stays.

It installs the mattstack, fast-browser, and chat plugins from the mattstack marketplace, and superpowers from claude-plugins-official, which the mattstack skills and every team pack call. An existing superpowers-marketplace install counts.

What gets installed​

ComponentDescription
mattstack.appMenu bar app: setup, daemon health, notifications, updates. See The menu bar app
rtShips inside the app (Contents/MacOS/rt), linked at ~/.local/bin/rt
Background daemonCaches branch and MR data, scans ports, guards git hooks, snapshots the home repo. See The daemon
Bundled appsboard, console, chat, and boxscore, served locally through deck
rt-context extensionVS Code / Cursor: worktree, branch, and linked ticket in the status bar. See Editor extension
Shell integration~/.local/bin first on PATH, plus the rtcd alias, for zsh, bash, and fish
Bundled helpersjq, gh, glab, bun, node, sops, age, zstd, git-lfs, cloudflared, fast-browser, gitq, and deck, among others, pinned and shipped inside the app

Helpers resolve by absolute path inside the app bundle. The ones meant to be typed (rt, fast-browser, gitq, deck) are linked into ~/.local/bin.

The checklist's PATH precedence row confirms ~/.local/bin comes first on your PATH through rt's own line in ~/.zshenv, so your shell finds rt's shims and team intercepts before any conflicting binary. When something else claims first place, the row says so and offers to add rt's line.

Updates​

mattstack.app updates itself through Sparkle. Check for Updates… in the menu bar menu checks on demand. After an update, the app brings your setup forward on its own with rt setup update; see Updates in the menu bar app guide.