Your agents write it. You still commit it.

A git control center that runs on your machine. Review diffs, stage hunks, commit, and push from your phone.

Branch Office on a phone, showing staged, modified and untracked files for a feature branch.

Writing code from a phone is the easy part. Reviewing it is not.

An agent can work while you are on a train. The moment you want to read what it wrote, you are back to SSH on a 6 inch screen, squinting at git diff in a terminal that was never meant for thumbs.

Then it gets worse. If your signing key lives in the Secure Enclave or a 1Password vault, every commit and push waits on a fingerprint you are not there to give. The usual fix is to weaken the key you use for everything. Branch Office takes the other path and runs with a dedicated key of its own.

Read every line before you sign off on it.

Color coded diffs, hunk level control, and a commit drawer built for one hand. The file list updates itself the moment anything on disk changes.

Unified diff of a Go file with a single hunk and a stage button.

Stage a hunk, not a file

Tap to stage one hunk. Tap again to put it back. Discard a single hunk without touching the rest of the file.

File list grouped into staged, modified and untracked sections.

Status that keeps up

Staged, modified, untracked. A file watcher streams changes to the browser, so the list moves while your agent works.

Commit drawer with a written commit message, amend toggle and commit button.

Commit within thumb reach

A fixed bottom drawer with an auto sizing message field, an amend toggle, and a one tap Copilot draft from your staged diff.

The rest of git came along too.

Pushes with a seatbelt

Ahead and behind counts before you send anything. Force push is there when you need it, behind --force-with-lease and a second confirmation.

Push dialog showing ahead and behind counts, a set upstream checkbox, and a guarded force push option.

Worktrees, first class

Switch between linked worktrees, create one on a fresh branch, and remove it when the work lands. Each gets its own live change detection.

Stashes you can see into

Stash, apply, pop, or drop. Inspect what is inside an entry before you decide what happens to it.

Branches without the terminal

Switch branches or cut a new one from the same screen as your changes. No checkout dance, no typos.

Every repo on the machine

Register any local path and move between projects from the top bar. Your last repo is still open when you come back.

It runs on your machine. That is the whole architecture.

One binary, under 10 MB

The Vue app is embedded in the Go binary. No node runtime, no database, no install script, nothing to keep running in the background.

No account, no telemetry

Nothing phones home. The only network traffic is the git and gh commands you trigger yourself.

Private by transport

Serve it over Tailscale and it is reachable from your phone and nowhere else. It is a local HTTP server, so keep it off the open internet.

A key of its own

Git runs with a dedicated key and a cleared SSH_AUTH_SOCK, so remote pushes never wait on a fingerprint. Your daily key stays where you put it.

Install in one command.

Homebrew on macOS or Linux. It needs git on your PATH, plus gh if you want pull requests and Copilot commit messages.

install with homebrew
$ brew install jejacks0n/tap/broffice
# or in two steps: brew tap jejacks0n/tap && brew install broffice
$ broffice
reach it from anywhere, via tailscale
$ tailscale serve --bg 8080
skip the biometric prompts
# a dedicated key, used only by Branch Office
$ ssh-keygen -t ed25519 -f ~/.ssh/broffice_ed25519 -N ""
$ gh ssh-key add ~/.ssh/broffice_ed25519.pub
$ gh ssh-key add ~/.ssh/broffice_ed25519.pub --type signing
$ broffice -ssh-key ~/.ssh/broffice_ed25519
# and use -no-sign if you don't want to sign commits from broffice