Runi Help

Choose the repositories Runi watches

Runi publishes nothing outside the repositories your workspace tracks. Here is how tracking is decided and how to add one.

Runi's hooks are installed globally, for every session on the machine. The repository list is what keeps them quiet. A session in a folder your workspace does not track publishes nothing and receives nothing. Getting this list right is the difference between a product that briefs your team and one that appears to be broken.

Add a repository#

  1. Open Settings → Repositories#

    This is a workspace list, not a personal one. Adding a repository makes it tracked for everyone in the workspace, which is the point: a briefing crosses machines, so the boundary has to be the team's.

  2. Add it as owner/repository#

    Type the pair, or paste the repository's GitHub URL and Runi takes the pair out of it. Owners and admins can add; members and viewers cannot.

    Runi identifies a repository by its remote, not by the path on your disk, and the match happens locally on each machine. The repository itself is never read. Your checkout at ~/code/relay and a colleague's at D:\work\relay are the same repository, which is what you want when the point is to brief each other.

  3. Confirm from the machine#

    Open a terminal inside your checkout and run the doctor. The last line tells you what the folder resolves to and whether it counts.

    terminal
    $ cd ~/code/relay
    $ runi doctor
    
      ok   this repo relay is tracked — sessions here publish to the workspace

How a folder becomes a repository#

When a session starts, the daemon resolves the working directory up to the repository root and derives an identity from the Git remote. Three things follow.

  • A subdirectory is fine. Starting your agent in apps/web inside the checkout resolves to the same repository as starting it at the root.
  • A folder with no remote has no shared identity. A local-only repository can be tracked, but nothing links it to a teammate's copy, because there is nothing to link on.
  • A folder that is not a Git repository is not a repository. This is the usual explanation for a silent adapter. See OpenClaw, whose default workspace is exactly that.

Untracked is a real state, not a failure#

Work in a folder that is not on the list and Runi does nothing. Not "records it quietly", not "queues it until you decide". Nothing is captured and nothing is sent. The doctor says so:

output
 warn  this repo scratchpad (a1b2c3) is not tracked — sessions here
                stay private. Add it in the app under Repositories.

This is how you keep a side project, a client repository or your dotfiles out of the workspace: do not add them. There is no per-session switch to remember, because a switch you have to remember is one you will forget on the session that mattered.

Monorepos and multiple checkouts#

SituationWhat happens
One repository, many packages One entry covers all of it. Overlap warnings and file activity work at path level, so two people in different packages of the same monorepo do not trip over each other.
Two checkouts of the same repository Both publish, under the same repository identity. This is the case Runi is best at catching: two of your own sessions in two worktrees, holding the same file.
A fork A different remote is a different repository. Add it separately if you want it watched.
Folders that are not clones Not tracked by remote. For Codex, they can be mapped explicitly with codexWatchPaths in ~/.relay/config.json.

Removing a repository#

Remove it in Settings → Repositories. From then on, sessions there stop publishing and stop being briefed. Records already published stay in the workspace: removing the repository is a decision about the future, not a deletion. To remove the history too, see Deleting your data.

Note

The list is cached on each machine. A repository you add in the app reaches a machine on its next publish or briefing, not instantly. If a colleague adds one while your agent session is open, start a new session before concluding it did not work.

Keeping files out of a tracked repository#

Tracking is per repository. Excluding individual paths inside one is a separate control: built-in secret globs, your .gitignore, a .relayignore, and patterns you add in the app all narrow what may be named. See Ignore rules.

Did this solve it?