Run the desktop app capture only
The RepoOps desktop app has two modes. By default it runs its local dashboard, in a window and the tray. Capture only runs the tray and the capture daemon and nothing else: no local server, no port, no local pages. It captures the AI coding sessions in the repositories you track and, once you sign in to a team, sends everything it collects to repoops.ai, where you read it. This page covers choosing capture only, signing in, the tray menu, Pause and Resume, adding a repository and switching back.
Watch it
Transcript
The walkthrough is silent. These are its captions, in order. Every value it shows is illustrative.
- 0:00Capture only: the tray shows capture state, last capture, last upload, team
- 0:06Sign in with a connect code from repoops.ai/team/connect
- 0:11The window names the team before anything is bound
- 0:17Pause capture stops the daemon; Resume starts it again
- 0:23Open dashboard opens repoops.ai/team. Switch to the local dashboard any time.
The team name, times and counts in this video are illustrative.
How to
The two modes ship in the next desktop release. The current release runs the local dashboard only, which Install RepoOps covers.
A RepoOps team you belong to with member access or higher, since a connected machine holds a write credential, and Git on your PATH.
- Choose capture only.
Install from the download page. On first launch RepoOps asks how to run: Local dashboard, the default, or Capture only. The first launch after an upgrade from an earlier version asks the same question once. Not now keeps the local dashboard; later, choose Switch to capture only… from its tray icon and confirm. In capture only there is no main window: a RepoOps icon in the system tray (the menu bar on a Mac) starts the capture daemon and turns Start at login on once, because capture that stops at the first reboot captures nothing.
- Sign in to your team.
On first launch the sign-in window opens; later, choose Sign in… from the tray, or Switch team… to bind to another team. Open repoops.ai/team/connect, press Generate connect code, and paste the code into the window. The window names the team and your role before anything is bound. Read what connecting shares, tick the agreement, and press I agree & connect. The daemon restarts with the new device token and uploads on its next cycle. Not now closes the window and leaves capture on this machine with nothing uploaded.
- Add the repositories you work in.
Choose Add a repository… and pick a folder that holds a .git folder. The app tracks it in the store the daemon reads and the daemon picks it up within a few minutes. A folder outside your home folder is refused. An upgrade from the desktop dashboard keeps the repositories it already tracked.
- Read the status lines.
The grey lines at the top of the menu say Capture: running (or paused, not running, signed out, or stopped after repeated crashes), Last capture, Last upload to your team, the team, and how many repositories it tracks. They refresh every 30 seconds.
- Open the dashboard.
Open dashboard opens https://repoops.ai/team in your default browser. That is where the sessions, costs and findings from this machine show up.
Use cases
Stop capture for an afternoon
- Situation
- You are working on something you do not want captured.
- You do
- Choose Pause capture. Choose Resume capture when you are done.
- You see
- Pause stops the daemon and turns off the capture switch the daemon reads, so nothing starts it again behind your back. It stays paused across a restart and a reboot until you resume.
Go back to the local dashboard
- Situation
- You want the dashboard on this computer again.
- You do
- Choose Switch to the local dashboard… from the tray and confirm.
- You see
- RepoOps restarts with its local dashboard. It keeps sending your LLM prompts and transcripts, redacted, unless you turn off Send LLM prompts and transcripts to repoops.ai under Privacy and egress; the rest of the team sync carries on.
Expected outcome
Next step: Choose Sign in… and bind with a connect code.
Next step: The device token was revoked or expired. Choose Sign in… and bind with a fresh code.
Next step: The app restarted the daemon 5 times in 30 minutes and stopped trying. Quit and reopen RepoOps to try again, and send the daemon log from the data folder if it repeats.
Next step: Codes last 15 minutes and work once. Generate a fresh one.
Next step: Pick the repository root, the folder that holds .git, inside your home folder.
What else to consider
What runs, and what does not
In capture only, two processes run: the tray and the capture daemon. Nothing listens on a port and nothing serves a page. Quit RepoOps closes the tray and leaves the daemon capturing, the way closing the old app's window did. To stop capture, choose Pause capture first. If the daemon exits, the tray starts it again after 10 seconds, doubling to at most 5 minutes, and stops after 5 restarts inside 30 minutes.
What leaves the machine
Nothing is uploaded until you bind the machine to a team, in either mode. In capture only, everything the app collects is sent: session records with their LLM prompts and assistant text (secrets and personal data removed), costs and tokens, agent traces, brain notes and lessons, cases, and the MCP, tool and secrets inventories (names only, never a value). From the next release after the two modes, it also sends the records the local dashboard showed and repoops.ai had no place for: commitments, checkpoints, eval runs, session logs, the local audit log, the repository list (names, never folders), each policy decision and each change record version (without its signed envelope). They show on the Memory page under From your team's machines. Capture only also sends the team's cost per merged pull request and its eval distribution (counts of sessions by quality, never a session) every six hours, which the local dashboard sends only when benchmarking is on. Team owners and admins see every machine's audit log, eval runs and repository list; a member sees the ones their own machines sent, and the card says Owners and admins see this when there are none. Your team's limits still win: a team that pins metadata only keeps prompt text here. Full raw transcripts, encrypted at rest, go for every repository while the machine is bound and cloud sync is on, in either mode, unless the team admin turns that repository down to metadata only. In the local dashboard mode, the prompt text inside session records goes too, with secrets and personal data removed: Send LLM prompts and transcripts to repoops.ai under Privacy and egress is on by default, and turning it off keeps the text here. The device token stays in the local store and is never shown.
Memory and CPU
Measured from source on a developer laptop over ten idle minutes: the whole app at 0.44% of one core and about 175 MiB of private memory at the 95th percentile, the tray about 86 of it and the daemon about 91. The figures are in the plan for this app, docs/plans/desktop-capture-only-tray.md.