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.

Merathon logo: an M drawn as a Git graph in the center of an athletics track

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

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

main feat/theme PR #12 merge

feat/theme

Check out the branch

Merge into main

Rebase onto main

Fast-forward

Solo · Hide

Create a pull request…

styles/theme.css

:root {
Line checked: + --bg: #14151f;
Line checked: + --fg: #e8ecf4;
Line not checked: + --debug: red;

One click on a line of the diff: only that part goes into the commit.

Interactive rebase

Rewrite history without the command line

a1c4e90feat: dark themepick
7be02d1fix: typopickfixup
c93f7a2wippickdrop
42d8b6fdocs: READMEpick

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

5 min

between two automatic syncs. The sync button, next to the branch name, runs one on demand.

site-vitrineapi-courses: PRs with something newdocs

Merathon · notification

PR #12 approved

CI passed on PR #14

3 new comments on PR #12

3

A 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

1 · Create

Right-click a branch

Target, reviewers, labels, draft. Description pre-filled with the repository's template.

2 · Review

Line-by-line diff

Line comments, search, CI. A commit replies to the threads it addresses.

3 · Merge

Merge, squash or rebase

Behind the target, rebase, safe force push.

PR #12 · Dark themefeat/theme → main

CI · 3 jobs passed 2 / 2 approvals
MergeMerged

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

site-vitrine ~/dev/site-vitrine
feature/newsletter

Your work in progress stays here.

site-vitrine-correctif ~/dev/site-vitrine-correctif
hotfix/login

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

Key reused or created
Registered on the account
Server fingerprint checked
Connection tested

Every day

Small extras that save time

Git Cheat Sheet

rebase
git rebase -iRewrite historyHistory rewritten: careful if already pushed

Each entry gives the command, what it does, a use case and the steps to follow in the application.

Add to .gitignore

debug.log
The filedebug.log
All .log files*.log
Its folderlogs/

Right-click an untracked file. The pattern is written with no duplicates.

Themes and zoom

Light
Dark (selected theme)
System
AaAaAafrom 80 to 200%

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

$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean

Operation log

git fetch origin0.8 ssucceeded
git rebase main1.2 ssucceeded
git push origin feat/theme0.9 ssucceeded

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

Tauri 2The system's web engine instead of Chromium
Rust + libgit2Direct access to Git objects
React 19 + TypeScriptHighly interactive interface, typed data
CanvasSmooth graph: only the visible part is drawn
xterm.jsA real terminal, on Linux and Windows alike

Package size

Merathon · about 8 MB
Electron application
An Electron application often exceeds 80 MB.
Merathon logo

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

Git Repository Manager

Merathon in motion

An animation of about 2 min that follows the presentation, with electro music setting the pace, generated in your browser.

With the keyboard: Space pauses or resumes, the left and right arrows go to the previous or next scene. The Enlarge and Shrink buttons, below the animation, set its size up to 200%.

Text version: the home page repeats all the content of the animation

Size 100%
Full screen Text version Français Accessibility statement