usta Beta

Your forges, in one fast native window.

usta is a desktop client for GitHub and Forgejo. One inbox for reviews, mentions and failed checks; pull requests read from real git diffs; and it keeps working when the network does not.

Download for macOS Download for Linux
nix run github:abdivasiyev/usta
usta
Search pull requests, issues, repositories⌘K
Synced just now
Inbox4
Review requests2
Assigned to me
Mentions1
Done
Pull requests
Issues
Repositories
FORGES
github.com
codeberg.org
AllUnreadParticipating
abdivasiyev/usta #2125m
feat: fork repositories and open pull requests from forks
Review requested
abdivasiyev/usta #20822m
fix: keep upright swipes for the page over code blocks
Checks failed
abdivasiyev/usta #2051h
Notifications do not show on macOS
Mentioned
abdivasiyev/usta #1993h
docs: a landing page for usta.azizovich.uz
Review requested
abdivasiyev/usta #212 Open
feat: fork repositories and open pull requests from forks
feat/forks into master · opened 5 min ago
Checks
4 of 4 passed
Changes
+86 −14 in 5 files
Your review
Requested
Open reviewMark as done
abdivasiyev asked for your review · 5m
lambdajon approved these changes · 3m

Everything a review needs, nothing it waits for.

Written in Haskell with GTK 4, usta opens in a blink and keeps your forges in a local cache, so the pages you know are already there.

One inbox, every forge

Review requests, mentions and failed checks from GitHub and Forgejo in one list, with desktop notifications when something needs you.

Reviews on real git diffs

Diffs come from a local mirror: split or unified, changed words marked, comments on any line or range, and files you viewed stay viewed until they change.

Offline first, live when online

Everything synced is kept on disk. Open conversations update as people write, without reloading the page you are reading.

Checks you can act on

Live job logs with colors and folded groups. Run a workflow with its inputs, re-run failed jobs or cancel a run, from the pull request itself.

Forks, clones, new repositories

Fork in a click, open pull requests from your fork, clone into any folder, or start a repository on any forge you use.

Made for the keyboard

⌘K finds any pull request, issue or repository. j and k move, Enter opens, e marks done; text fields know the Emacs keys.

Your links open here

Make usta the default browser and forge links from chat or mail open in the app; every other link goes on to the browser you choose.

Declarative with Nix

A Home Manager, NixOS and nix-darwin module sets every preference from your configuration, so each machine starts the same.

Read the change, not the page around it.

Side by side or unified, with the file's header kept at the top of a long diff and its Viewed box always in reach. Threads sit on their lines; resolved ones fold away.

src/Usta/Sync.hs +18 −4 Viewed
@@ -41,9 +41,14 @@ run settings = do
41 pages <- fetchAll settings.forge
42 forM_ pages $ \page -> do
43− save settings.pool page
44− pure ()
45 done settings
 
41 pages <- fetchAll settings.forge
42 forM_ (zip [1 ..] pages) $ \(n, page) -> do
43+ save settings.pool page
44+ -- The window shows how far it is.
45+ settings.progress (n, length pages)
lambdajon · Could progress skip pages that came back unchanged, so the bar does not stall on a 304?
abdivasiyev · Good catch, counting only fetched pages now.
Reply… Enter sends

A tour of usta

Every page below is drawn from the app as it is today: the same layout, the same controls.

Conversation

The whole pull request on one page

Comments, reviews, commits and events in one timeline that updates while you read it. Reply with Enter, react, edit a title in place, and merge with the method the repository allows.

  • Reviewers, assignees, labels and milestone at hand
  • Merge, squash or rebase; auto-merge when checks pass
  • Draft a comment, leave, come back: it is still there
Checks & Actions

CI you can read and run

Every job of a pull request with its steps and its log, in color, with folded groups, following a running job live. Start a workflow by hand with its inputs, re-run what failed, or cancel a run.

  • GitHub Actions and Forgejo Actions
  • Run workflow from the pull request, on its branch
  • Inputs drawn from the workflow file: text, switch, choice
Repositories

Browse code without a browser

Every repository you can see, filtered by forge and owner. Files with an icon for their type, code with syntax colors, blame and history, a README rendered with diagrams, on any branch or tag.

  • Commits grouped by day, with their diffs
  • Releases, insights and the repository's actions
  • Star, pin to the sidebar, fork, clone or mirror
Command palette

⌘K finds anything

Pull requests, issues and repositories across every forge, searched on the forge itself, plus every command. Paste a link and it opens the page it points to.

  • j and k move, Enter opens, e marks done
  • Emacs keys in every text field
  • Every shortcut listed in Settings
Pull requests & issues

Every list, filtered your way

What waits for your review, what you opened, what is assigned to you, across forges. Filter by forge, repository, label or author, sort by update or age, and the forge pages in the rest as you scroll.

  • Checks and review state on every row
  • Counts from the forge on every tab
  • New issue and new pull request, also from a fork
Forks, clones & new repositories

Start work from anywhere

Fork into your account or an organization. On a repository you cannot push to, a new pull request forks first and opens from your fork. Clone over HTTPS or SSH into any folder, or start a new repository.

  • A fork you have already is offered instead
  • Branches from a fork read owner:branch
  • Public or private, with a README or empty
Settings & Nix

Set it once, everywhere

Sign in to GitHub and Forgejo with a token or in the browser; the token stays in the system keyring. Choose how often to sync, the theme and notifications, or set them all from your Nix configuration.

  • Make usta the default browser for forge links
  • Local mirrors for diffs, kept where you choose
  • Choices from Nix show as “Set in Nix”

Install

usta is in beta. It runs on macOS and Linux and checks once a day whether a newer release is out.

macOS

Download usta.dmg from the latest release and drag usta into Applications.

Download usta.dmg →

Linux

Download usta-x86_64.AppImage, make it executable and run it, or install the package for your system.

AppImage →

Nix

Run it at once, or add the Home Manager module and set it up in your configuration.

inputs.usta.url = "github:abdivasiyev/usta";

imports = [ inputs.usta.homeManagerModules.default ];
programs.usta = {
  enable = true;
  settings.theme = "system";
};