Merathon in motion, presentation animation
Git Repository Manager
Merathon
"Your code is a marathon."
The desktop Git client for Linux and Windows: graph, commits, branches and pull requests in a single window.
The promise
A Git client made to stay open all day
Fast
Native Git engine in Rust: the interface stays smooth during a fetch or a rebase.
Safe
Tokens stay in the system keyring. No hook runs when a repository opens.
Light
A .deb package of about 8 MB and little memory at rest.
Complete
From line-by-line commits to pull request review, with GitHub and GitLab.
Interface tour
The whole repository in a single window
Branches
Worktrees
Pull requests
Tags
Working copy
$ git status
Toolbar: pull, push, fetch, stash and sync button.
Tabs: one repository per tab, each keeps its state.
Sidebar: branches, worktrees, pull requests, tags, stashes.
Graph: the whole history, with branch badges.
Working copy: staged and unstaged files, commit message.
Bottom panel: terminal and operation log.
History · working copy
Graph, right-click and commits precise down to the line
feat/theme
Check out the branch
Merge into main
Rebase onto main
Fast-forward
Solo · Hide
Create a pull request…
styles/theme.css
One click on a line of the diff: only that part goes into the commit.
Interactive rebase
Rewrite history without the command line
Squash
Squash or fixup into the previous commit.
Delete
Remove the commit from history.
Reorder
Drag and drop, or arrow keys.
Can be canceled at any time: back to exactly the initial state.
Sync and notifications
Always up to date, and told when things move
between two automatic syncs. The sync button, next to the branch name, runs one on demand.
3A badge on the icon counts PRs with something new, and a dot marks the tab of the repository concerned.
Pull requests and merge requests
Create, review and merge without leaving the application.
GitHub, GitLab.com and self-hosted GitLab, from the same panel.
Pull requests · from creation to merge
Three steps, one window
Right-click a branch
Target, reviewers, labels, draft. Description pre-filled with the repository's template.
Line-by-line diff
Line comments, search, CI. A commit replies to the threads it addresses.
Merge, squash or rebase
Behind the target, rebase, safe force push.
Worktrees
Several branches open, with no stash or second clone
A single repository
Commits, branches, tags and stashes shared
New commit visible everywhere, with no push
~/dev/site-vitrine
Your work in progress stays here.
~/dev/site-vitrine-correctif
The urgent fix, alongside.
One folder, one tab
Each worktree opens in its own tab, with its files and branch.
Protected branch
Checked out elsewhere, it cannot be deleted, and its menu leads to its worktree.
On deletion, the folder goes and the branch stays.
Git profiles and SSH
Work and personal kept apart, folder by folder
~/dev/pro
Email camille@atelier.example
Account GitLab.com
SSH key id_ed25519_pro
~/dev/client
Email camille@client.example
Account Self-hosted GitLab
SSH key id_ed25519_client
~/dev/perso
Email camille@perso.example
Account GitHub
SSH key id_ed25519
The native includeIf rule: command-line git follows the profiles too. An alert flags a repository that would sign with a different email.
Set up SSH with a right-click on an account
Every day
Small extras that save time
Git Cheat Sheet
git rebase -iRewrite historyHistory rewritten: careful if already pushedEach entry gives the command, what it does, a use case and the steps to follow in the application.
Add to .gitignore
debug.log*.loglogs/Right-click an untracked file. The pattern is written with no duplicates.
Themes and zoom
The theme follows the system live. Ctrl+= and Ctrl+- set the size of the whole interface.
Bottom panel · Ctrl+J
A terminal, and full visibility on what the application does
Built-in terminal
Operation log
Accounts and security
Your tokens never leave the keyring
Diagram: the interface has no access to any token. The Rust backend reads the token from the system keyring, then sends it over HTTPS to GitHub or GitLab.
Interface
React, no direct access to the system or the network
Rust backend
API calls start here
GitHub · GitLab
Receives the token over HTTPS
System keyring
Secret Service · Credential Manager
Under the hood
Each building block answers a constraint
Package size
An Electron application often exceeds 80 MB.
Install
Ready for the marathon?
Linux
.deb (Debian, Ubuntu) or .AppImage
Ubuntu 22.04, Debian 12 or glibc 2.35 and later
Windows
.msi or .exe
Windows 10 or 11, 64-bit
After that, the application updates itself: signed packages, signature verified before installation.
github.com/J-Dudek/merathon/releases