Git history you can
actually read.

A desktop client built around one idea: lanes that never move. Branches stay in their column so the shape of your history holds still while you read it.

1,052 commits read in 683 ms
every branch laid out in 1 ms
Switchyard C:\code\switchyard
main 4 lanes · smooth at any size
1,052commits, 683 ms to read
1 msto lay out every branch
150,000commits, and the graph still scrolls smoothly
0bytes of your code sent anywhere

The tour

Four things you do all day.

Switchyard C:\code\switchyard
Fetch 2 Pull ↓2 Push ↑1 Stash Transfer feature/checkout-v2
Historyall branches1,052
Commit3 changed objects
a4f19c2

Stop the total at the last filled row

Pennywise App Studio <[email protected]>
parent 7b02e1d · 18 Sep 2026

Changed objects
src/lib/totals.ts,
src/lib/table.ts,
src/lib/totals.spec.ts

Right click any commit to copy its file list. Select several and you get the distinct union, one file per line, comma separated.

  • Msrc/lib/totals.ts+42 -9
  • Msrc/lib/table.ts+18 -4
  • Asrc/lib/totals.spec.ts+120
  • Msrc/app/table/table.ts+7 -7
  • Dsrc/app/legacy-row.ts-64
Pennywise App Studio · signing on
FromC:\code\switchyard
ToC:\code\switchyard-release
  • invoice.model.tsresolving
  • invoice-api.service.tsresolving
  • invoice-list.component.tsresolving
  • invoice.spec.tsresolving
  • legacy-total.util.tsresolving
Nothing written yet

Chapter one

Read the history.

One commit per row, and a branch that keeps its column from its first commit to its last. Right click to copy the files a commit touched, or select a range and copy the distinct union.

Chapter two

Stage and commit.

Tick the files, write the message, commit. Your hooks run and your signing key is used, because it uses the same Git you already have.

Chapter three

Read the diff.

A merge is shown against the branch it landed on, so it reads like any other commit. New files get a preview too.

Chapter four

Move files between repositories.

Paste the names, pick a source and a destination, and every file is checked before anything is written. Nothing is guessed.

Free for 30 days. Then one plan.

Every feature from the first day. The trial starts the first time you open the app.

  • No card, no account for the trial.
  • Cancel any time. It runs to the end of the period you paid for.
  • Never locked out. If a plan ends, the app goes read-only.
  • One licence, one computer. Moving it takes a click.

Payments by Dodo Payments, who send the receipt and your licence key. Refunds

See plans and buy →

Monthly

₹149 / month

or $2.99 a month outside India

  • Every feature, and updates as they ship
  • Billed monthly, after your free trial
Two months free

Yearly

₹1,490 / year

or $29.99 a year outside India

  • Everything in monthly
  • Billed once a year, after your free trial

Straight lanes

A branch keeps its column.

Most clients let lanes drift sideways as you scroll, so the picture changes while you are reading it. In Switchyard a branch holds its position from the first commit to the last.

Most clients make you choose between one commit per row and straight branches. Switchyard gives you both.

  • One commit per row, merges drawn as hollow nodes
  • Scrolls as smoothly through 100,000 commits as through fifty
  • A branch's main line stays in its column from start to finish
  • Sharp text at any display scaling
Drawn live in your browser, the way the app draws it. Scroll back up and it redraws.

Everything you do in a day, without the terminal.

Every action uses the Git already on your computer, so it behaves exactly as it does in your terminal.

Stage, commit, amend, undo

Stage and unstage a file, a folder, a hunk or single lines, or everything at once. Amend the last commit, or undo it and keep the changes. Discarding always asks first and keeps a copy, so Undo puts the file back exactly as it was.

CtrlEntercommit

Fetch, pull, push

Ahead and behind counts sit on the button, with how long ago you last fetched, and it fetches by itself every 15 minutes. Progress shows as git works, and a download can be stopped. Force push checks the remote first, so you cannot overwrite a colleague's work by accident.

Search the whole history

Filter by subject, author or sha as you type, or search all of history: path: for the commits that touched a file or folder, text: for the ones that added or removed some text.

Branches and stashes

Create, switch, rename, track and delete branches, here or on the remote, from a right click. Switching with changes asks whether to bring them or leave them on the branch for later. Stash, pop and drop without remembering which verb git wants. Star the branches you use most.

Copy changed objects

Right click a commit for its file list. Select several commits and get the distinct union, one file per line and comma separated, ready to paste into a release note or a ticket.

Merge conflicts, one at a time

Conflicted files get a list of their own, each saying what kind of conflict it is. Click one to see the file with each conflict laid out as your side and theirs, and take one side, the other, or both, conflict by conflict, or open the three pane merge editor. Every choice can be undone, and a conflict you settled once is settled the same way when it comes back.

Pull requests

On GitHub, GitLab, Azure DevOps, Bitbucket and Gitea, self-hosted servers included: list, create, review, approve, check out and merge them, read and re-run CI, and work through issues, with a token of your own that is sent only to your service.

Undo

Commits, amends, merges, pulls, cherry-picks, resets and discards can be taken back from the message that follows, or with Ctrl+Z. Nothing already pushed is ever undone.

A file's history and blame

Right click any file for its history, followed through renames, or its blame, where each line leads to the commit that last changed it. Pick any two versions to see what changed between them.

See what really changed

The words that changed are marked inside a changed line, code is coloured by its language, and a changed picture is shown before and after, side by side, as a swipe, as an onion skin, or as just the pixels that changed.

Compare any two commits

Pick two rows and see every file with what happened to it, without writing a range expression, then swap them round or open any file side by side. Export the files a set of commits changed, with their folders, in one go.

Eighteen colour themes

Switchyard's light and dark, VS Code's, GitHub's, Dracula, Nord, Solarized, high contrast and more. Every text stays readable in each, and the history can be read with a screen reader.

A map of any codebase

New to a repository? See where to start, what changes most, what breaks most, which files change together and who knows each folder. Read from history, no AI, nothing uploaded.

Safe by default

An operation log that undoes older actions too, even after a restart, redo, discards copied to the Recycle Bin, a force push that cannot overwrite unseen work, lost commits found again, a warning before a secret is committed, and a log of every git command.

Many files at once

Pick several files in any list and stage, unstage, discard or commit them together. Copy the files themselves, export them with their folders, or drag them into Explorer or an email.

A terminal in the window

A console under the panels for each open repository, already in its folder: PowerShell, Command Prompt or Git Bash. Right click any folder to open it there.

CtrlShift`terminal

Tickets become links

Ticket numbers in commit messages open your tracker, and one click shows every commit of a ticket.

Split and absorb

Split a commit by file, hunk or line, move lines into another commit, or absorb staged changes into the commits they belong to.

Tidy branches

Merged and stale branches are marked, and archived out of the way without changing git. Work and personal accounts on one service, side by side.

More than one window

Open a repository in a window of its own. Windows on the same repository stay in step, and every window you had open comes back next time.

Pull requests the whole way

Your repository's template, reviewers and labels, drafts made ready, auto-merge and merge queues, reviews sent as one, and forks synced without ever forcing.

Check this computer

Finds what slows git down on Windows, from long paths to OneDrive and Defender scanning, says how to fix each, and speeds up a large repository with git's own file watcher.

Find anything with Ctrl+K

One box for repositories, branches, commits, files, stashes, pull requests, settings and commands, across every open repository.

Review before pushing

Go through what you are about to push, file by file, tick each one and leave yourself notes. Push is ready once everything is ticked.

Find a lost change

Search every branch, stash, the reflog and lost commits for text that once existed, and take that version back.

History replay

Watch a repository or a folder grow, commit by commit, in a window of its own.

Repository snapshots

Save every branch, tag, stash and change in one click, and restore it later after seeing exactly what will change.

Tests before a push

Name a test command and it runs before each push. A failure holds the push back until you choose otherwise.

Conflicts with the team

After each fetch, see whether your branch would conflict with a teammate's, and in which files.

Split into commits

Turn one large change into tidy commits by module, tests beside their code, and undo it all in one step.

Workspaces

Keep named sets of repositories, such as Work and Side projects, and switch between them in one step, tabs and layout included.

Move from another client

Bring over the repositories you had open in GitHub Desktop, Sourcetree, GitKraken or Fork, or let Switchyard find every repository in your folders.

Edit in the diff

Change a file right where you read its diff, or in a quick editor with find, replace and go to line.

Your tracker and your team's rules

Jira, YouTrack and Linear issues beside your commits, Bitbucket Data Center, and a check of the branch rules before you push.

Built for huge repositories

Index history for searches in seconds, monorepo mode, background maintenance and health across every repository.

Hands stay on the keyboard.

The ones you reach for most. Everything else is a few letters away in the command palette, and any key can be changed in Settings.

CommitCtrlEnter
Every commandCtrlShiftP
Undo the last actionCtrlZ
RedoCtrlY
Every fileCtrlShiftE
Search historyCtrlF
Open a repositoryCtrlO
Clone a repositoryCtrlShiftO
RefreshCtrlR
Open in your editorCtrlShiftA
Next conflictF7
Terminal panelCtrlShift`

Move files between repositories.

Paste a list of file names, pick a source and a destination, and Switchyard works out what is new, what already exists, and what is identical before it writes anything.

src/lib/invoice.model.ts,
src/lib/invoice-api.service.ts,
src/lib/invoice-list.component.ts

Full paths, trailing commas, quotes and Windows backslashes all get tidied up. A bare file name matching two files in the source is reported as ambiguous, never guessed. Nothing is ever written outside the destination folder.

  • NewNot in the destination yet.
  • Already existsDifferent contents. Review the diff or overwrite.
  • IdenticalSkipped, nothing to do.
  • Not foundReported so the list can be fixed.

Why Switchyard

Why it feels different.

01

Works with your setup

It uses the Git you already have installed. Your hooks, your saved sign-in and your signed commits just work, exactly as they do in your terminal.

02

Branches stay straight

Each branch keeps its own lane from its first commit to its last, so the shape of your history doesn't jump around while you read it.

03

Fast on huge projects

Scroll smoothly through 100,000 commits and more. A big repository feels as quick as a small one, and text stays sharp at any display scaling. Shallow and partial clones, company proxies, Git LFS, and fetch or push across many repositories at once.

04

Private and safe

Your code never leaves your computer. The app only does what it is built to do, and anything that can't be undone asks you first.

What it is, and what it is not.

Worth reading before you download it, so nothing here surprises you later.

✓What it is

  • A fast reader of history, built for repositories where the branch shape matters
  • A daily driver for staging down to single lines, committing, branching, merging, resolving conflicts, stashing and syncing
  • A tool for lifting a named set of files from one repository into another, safely
  • Free for 30 days with every feature, then one simple plan — no account and no seat count
  • Tested automatically on every build, against real repositories

×What it is not

  • Not a Git of its own. It uses the Git you have installed, and brings Git for Windows' MinGit only for a computer that has none
  • Not signed with a code signing certificate, so Windows will warn on first run
  • Not a replacement for your hosting service's website. Pull requests, issues and CI runs work with a token of your own; settings, wikis and boards stay in the browser
  • Not built for macOS or Linux yet, though nothing in it is Windows specific

Roadmap

What is built, and what is wanted.

Shipped

The graph, the diff, and every everyday action

The commit graph, staging, committing, amending, undo, revert, discard, branches, stashes, fetch, pull, safe force push, history search, light and dark themes.

Since the first release
Shipped

Cross repository transfer

Paste a file list, see what is new, changed or missing, review the diff where it matters, then copy. Nothing is ever written outside the destination folder.

Since the first release
Shipped

Merge conflict resolution

A banner names the operation that stopped and how many files are left, and conflicted files get a list of their own. Take your side or theirs for a whole file, settle each conflict in the file or in a three pane merge editor, then continue or abort. Every choice can be undone.

Since the first release
Shipped

Hunk and line level staging

Stage or unstage one hunk, or pick single lines in a diff. If the file changed in the meantime, the app says so rather than guessing.

Since the first release
Shipped

Interactive rebase and cherry pick

Reorder, reword, squash, fix up or drop commits in one dialog, and cherry pick commits onto your branch.

Since the first release
Shipped

Pull requests and undo

See, create, comment on, approve, check out and merge pull requests on GitHub, GitLab and Azure DevOps. Take back a commit, a merge, a pull, a rewrite or a discard from the message that follows it. A file's history and blame, identities per folder or remote, and team settings for a repository.

Since the first release
Shipped

Sync that shows its work

Fetch, pull and push show their progress and can be stopped while that is safe. A remote that wants a password or a passphrase asks in the window, and the repository on screen is fetched every 15 minutes so the counts stay true.

Since the first release
Wanted

Signed installers, macOS and Linux

Windows warns on first run because the installer is not code signed, and signing needs a certificate that costs money every year. Updates are already checked to be genuine before they install; a signature would let Windows vouch for them too.

Not yet funded

Questions

The things people ask first.

What does it cost?

Every copy starts with a 30-day free trial of everything, with no account and no card. After that it is ₹149 a month in India or $2.99 elsewhere, or yearly for two months less. There is one plan, and nothing in the app is held back from it. See pricing.

If a plan ends, the app does not lock you out: it goes read-only, so every repository can still be read, and writes come back the moment it is renewed.

Does it bundle its own git?

It uses the Git already installed on your computer. That is deliberate: your version, your settings, your hooks, your saved sign-in and your signing key all keep working, and the app always behaves like the Git you use in the terminal.

Only on a computer with no Git at all does it use the copy it brings, Git for Windows' own MinGit, unchanged and under its own licence. Settings says which Git is in use. If your Git is too old, the app says so plainly instead of failing halfway through an operation.

Will it ever rewrite my history without asking?

No. Every destructive operation sits behind a confirmation that names what will be lost. Force push checks the remote first, so a push that would discard someone else's commits stops instead of going through.

How fast is it on a large repository?

Reading 1,052 commits from a real monorepo takes 683 ms, almost all of it waiting on git itself. Laying out the branches for those commits takes about 1 ms.

Scrolling stays just as smooth on a history of 150,000 commits as on one of fifty.

Windows says the publisher is unknown. Is that expected?

Yes. Code signing needs a certificate that costs money every year, and there is no certificate yet. The warning is Windows telling you the truth: the binary is unsigned.

Does it auto update itself?

Yes. It checks shortly after it starts and every few hours, downloads a new version in the background and checks that it is genuine. It installs when you press Restart to update, or the next time you quit. The banner offering an update the developer has marked as required cannot be dismissed. The release notes say what changed in each version.

Separately from updates, the developer has a safety switch that can make a faulty version read-only or stop it, so a release that goes wrong cannot keep doing damage while a fix is on its way. The next question says how it works.

What does the app send, and what does it check?

Nothing about your code: no repository paths, file names, branch names, email address or machine name. To count installs, it sends a random id it made up the first time it ran, with its version and platform. To know your trial and your plan, it sends a one-way hash of your computer's id, and your licence key when you paste one. The privacy policy lists all of it.

It regularly checks for notices and updates. It also checks a safety switch: if a version turns out to be faulty, the developer can make it read-only or stop it until a fix is installed. Only the developer can use the switch, it lasts a limited time, and it never touches your repositories or files.

What happens to the graph while a fetch is running?

Nothing jumps. The app notices the new commits and redraws the graph in one go, so the shape you are looking at always matches your history.

Is any of this derived from another Git client's source?

No. Switchyard was written from scratch. Published documentation and algorithm write-ups were read; no other client's source code was. Where a project inspired an idea, the idea was reimplemented rather than copied.

Start your 30-day free trial

One installer for Windows. Every feature for 30 days, with no account and no card.

Checking for the latest release…

Try it free

Windows 10 and 11. Uses your Git for Windows, or brings one if you have none. The installer is not code signed, so Windows will ask you to confirm on first run.

30 days free, then ₹149 or $2.99 a month No telemetry on your code Updates install on your next restart