RigSpark Upstream

Your code stays on your Mac until you’re ready to show the world.

Upstream is source control that runs on your Mac: your repos, reviews and CI runs. It sends a branch to GitHub only when you say so.

The problem

A private project lives on someone else’s servers long before it’s ready, and you pay by the minute for every check it runs there.

$0.062 → Free

A minute on GitHub, free on Upstream

GitHub bills Actions on private repos by the minute once your free minutes run out, rounding each job up. A macOS minute costs $0.062 and uses up your free allowance ten times faster than a Linux one.

Apr 24

Training on by default

Since April 24, 2026, GitHub uses Copilot interaction data from Free, Pro and Pro+ accounts to train its models unless you opt out. That includes code from private repos that Copilot sees while you work.

Day 1

Unreleased work, in the cloud

Every push, pull request and build log of something you haven’t announced sits on a hosted service from the first commit, months before you’re ready to show it.

What Upstream does instead

Repos on your Mac

Plain git repos you clone and push as usual, served only on your Mac:

git clone http://127.0.0.1:7900/git/<repo>.git

Changes, reviewed and merged

An inbox of open changes, the ones waiting for you on top. Merges are squash merges, and a secret scan runs as the safety check before anything goes in.

Runs on every push

Each push runs your .upstream/run.yml in a throwaway checkout. A failed run opens on its cause and last lines. Steps marked approve: true wait for you.

Move in, and send when ready

Move in brings repos over from GitHub: open pull requests become changes, workflows are converted, and nothing is deleted on GitHub. Send to GitHub publishes a branch when you say, never forced.

Your AI apps, on a short leash

Claude, Codex and other apps on your Mac connect over MCP, each with its own key. They can read code, open changes and read runs. Merging, sending and approving aren’t tools they have.

Only what’s abnormal

Diagnostics shows flaky tests, slowdowns, long waits and a full disk, and stays quiet otherwise.

What it costs

Runs happen on your Mac, so there are no per-minute charges. Here is what the same minutes cost on GitHub once your free minutes are used up.

RunnerGitHub, per minute10,000 minutes a monthOn Upstream
Linux$0.006$60Free
macOS$0.062$620Free

GitHub’s standard hosted-runner rates since January 1, 2026, for private repos. Checked November 14, 2026.

Why it’s private

Answers only your Mac

Upstream listens on 127.0.0.1 and nowhere else. It refuses other host names and cross-site requests, so websites you visit can’t act on it through your browser.

Tokens never saved

A GitHub token is pasted for one task (a move in or a send), kept in memory for that task and passed to git through the environment. It’s never written to disk or to a log.

Nothing leaves until you send

Code goes to GitHub only when you send a branch. Show the world refuses to publish while the safety check finds secrets in the history or commits carry personal email addresses.

Builds with a scrubbed environment

Every run gets a throwaway checkout and a scrubbed environment, so your shell’s keys and tokens aren’t handed to build scripts. Runs still execute on the Mac itself, not in a sandbox.

Copilot warning up front

Before you move in or send, Upstream reminds you that Copilot may be training on your code, with a link to turn it off.

Your data, in one folder

Repos and history live in ~/Library/Application Support/org.rigspark.upstream on your Mac. Back it up, move it or delete it like any other folder.

Not there yet

Questions

Do I have to leave GitHub?

No. Moving in copies a repo to your Mac and deletes nothing on GitHub. Keep working privately in Upstream and send a branch to GitHub when you’re ready to show it.

What happens to my repository secrets?

Everything comes along except secrets, which you enter once in Upstream after moving in.

Can my team use it?

Upstream is built for one person on one Mac today: it answers only on that Mac’s own address.

How do I get it?

The code is on GitHub at github.com/rigspark/upstream. Clone it and start it with cargo run --release, then open http://127.0.0.1:7900.