Revue
DocumentationAccounts and signing in

Accounts and signing in

Connect as many GitHub, Bitbucket, Forgejo, Jira and Slack accounts as you like, with the browser or a token, and choose which ones fill your pull request list.

You add accounts on the welcome screen the first time you start Revue, and later in Settings → Accounts. This page explains how signing in works for every service, how several accounts work together, and where your tokens are kept.

Ways to sign in#

Every service offers two ways in:

  • With the browser. Click Sign in with GitHub, Sign in with Bitbucket, Sign in with browser (Forgejo), Sign in with Atlassian (Jira) or Sign in with Slack. Your browser opens, you allow Revue access, and Revue connects by itself. There's no token to create.
  • With a token. Click Advanced: use a token instead, create a token on the service's website (the Create token button opens the right page), and paste it. The form lists exactly which permissions the token needs.

GitHub also has a third way: Use the gh CLI uses the account you're signed in to with GitHub's gh command, or the token in GITHUB_TOKEN / GH_TOKEN.

ServiceWith the browserWith a token
GitHubYou type a code on github.comClassic or fine-grained personal access token, or the gh CLI
Bitbucket CloudYou click Grant access on bitbucket.orgAtlassian account email and an API token with scopes
Forgejo, Codeberg, GiteaYou click Authorize Application on the serverAccess token made on the server
JiraYou pick your site and click Accept on AtlassianAtlassian account email and a scoped API token
SlackYou pick the workspace and click AllowUser OAuth Token (xoxp-…) of a Slack app

The tokens each service needs, and what's different about each, are on its own page: GitHub, Bitbucket Cloud, Forgejo, Codeberg and Gitea, Jira, Slack.

Guide: Sign in with the browser#

  1. Open Settings → Accounts and click Add GitHub account (or the button for another service).
  2. Click the Sign in with … button.
  3. A tab opens in your browser. Sign in there if it asks.
  4. Allow access: Revue shows what to click on that service's page.
  5. Come back to Revue. It brings itself to the front and connects the account.

While Revue waits, it shows Waiting for your browser… with the steps. If no tab opened, click Open again. To finish in another browser, use the link button next to it to copy the sign-in address. Cancel stops waiting.

Advanced: how the browser sign-in works
  • GitHub uses its device flow: Revue shows a code (already on your clipboard) that you paste on github.com, then click Authorize. Copy code copies it again. Nothing has to reach your computer from the browser.
  • Bitbucket, Jira, Forgejo and Slack send your browser back to Revue on your own computer, at http://localhost:47392/callback (Atlassian and Slack) or http://127.0.0.1:47392/callback (Forgejo). The browser then shows Signed in. You can close this tab and go back to Revue.
  • You have 10 minutes to finish in the browser. After that, Revue says so: click the button to start again.
  • If you click Deny (or close the page), Revue says access wasn't allowed. Click the button to try again.
  • The browser buttons only show for a service whose OAuth app this build of Revue knows. Forgejo's always shows: for a server Revue knows no app for, it shows how to set one up (see Forgejo, Codeberg and Gitea). To build Revue with your own OAuth apps, see Building from source and contributing.
Troubleshooting: the browser can't get back to Revue
  • "Revue needs port 47392 to hear back from the browser, but something else is using it." Another program (often another Revue, in the middle of signing in) is using that port. Close it and try again, or use a token instead.
  • Slack: when your Slack app sends the browser to a forwarding web page that can't reach Revue, the waiting box offers If the browser can't get back to Revue, paste the address it ended on. Copy the address from the browser's address bar, paste it, and click Use this address.
  • "This sign-in isn't going on any more" in the browser means Revue stopped waiting (you clicked Cancel, started a new sign-in, or restarted Revue). Start it again in Revue.

Several accounts#

You can connect any number of accounts, on any mix of services: two GitHub accounts, a Bitbucket account and Codeberg plus your company's Forgejo server, say. They all work side by side:

  • The pull request list shows the pull requests of every tracked account together.
  • Search (Ctrl+K) and the Repositories page cover every account.
  • On Forgejo, every server is separate: add one account per server (or several on one).
  • Jira can be connected to several sites, or as several people on one site. Slack can be connected to several workspaces.

To add one, open Settings → Accounts and click Add GitHub account, Add Bitbucket account, Add Forgejo account, Add Jira account (Connect Jira for the first) or Add Slack workspace (Connect Slack for the first).

Tracking an account#

Every code host account has a Track switch in Settings → Accounts. Tracked accounts fill the pull request list. Turn it off for an account you only need now and then (a bot, an old work account): its pull requests leave the list, but links to them still open in Revue with it.

Which account opens a pull request#

You don't pick an account when you open a pull request. Revue uses:

  1. the account whose list the pull request came from, or
  2. an account that has already opened something from the same owner or workspace, or
  3. otherwise, every account on that service in turn (on Forgejo, on that server), until one can see it.

Jira tickets work the same way: a ticket opens with the account it was linked from, else the one whose projects have its key, trying the others if that fails.

Sign out#

  1. Open Settings → Accounts.
  2. Click Sign out on the account's row.
  3. Confirm with Sign out.

Revue forgets the account and its token at once. For Jira, links to that site open in the browser again. For Slack, reviews stop replying in that workspace's threads.

Signing out doesn't revoke the token on the service. To revoke it, delete the token (or the authorized app) in the service's own settings.

Advanced: the gh CLI and GITHUB_TOKEN account

An account that comes from the gh CLI or GITHUB_TOKEN / GH_TOKEN shows via gh CLI or via environment, and has Stop using instead of Sign out. Revue then stops using GITHUB_TOKEN, GH_TOKEN and the gh CLI. Your gh login itself is left alone.

An account set by REVUE_GITHUB_TOKEN has no sign-out button: unset the variable instead.

When a sign-in expires#

Tokens can stop working: one you created expired, someone revoked it, or a service stopped renewing a browser sign-in. Revue then shows a notice at the top of the window:

Your GitHub (alice) sign-in has expired or was revoked. Its pull requests and repositories can't load until you sign in again.

Click Sign in again to sign in to that same account (on the same Forgejo server or Jira site). Settings opens Settings → Accounts, where the account's row says Sign-in expired and has its own Sign in again button. The × hides the notice until another sign-in is lost.

Being offline, missing a permission or a deleted repository doesn't count as a lost sign-in: you only see this notice when the service turns the token away.

Advanced: how browser sign-ins are renewed
  • GitHub tokens from the browser last 8 hours, with a refresh token (GitHub OAuth apps registered since August 2026). Revue renews them like the others below. An app whose tokens don't expire gives none: its tokens are kept like pasted ones.
  • Bitbucket, Jira (Atlassian), Forgejo and Slack give short-lived access tokens (hours) with a refresh token. Revue renews the access token by itself about two minutes before it runs out, and saves the new pair. You never see it happen.
  • Refresh tokens on GitHub, Atlassian, Forgejo and Slack work only once. That's why each computer signs in on its own (see below): two computers sharing one would sign each other out.
  • If the service refuses to renew (the refresh token expired, or you removed Revue's access on the service), the account shows up as a lost sign-in.

Where tokens are kept#

Your accounts and your tokens are kept apart:

  • The accounts (who, which server or site, Bitbucket's watched workspaces) are in the tokens folder of Revue's config folder. They sync with it, if you sync that folder between computers.
  • The tokens never leave this computer. They're in a file only you can read, or, if you turn it on, in your system's credential store.

On another computer that syncs your config folder, Revue knows your accounts but not their tokens, so it asks you to sign in again there once. That's on purpose: refresh tokens work only once, and two computers sharing them would sign each other out.

To sign in only once on every computer, use a Revue account: it keeps your sign-ins end-to-end encrypted and shares renewed tokens between your computers, so they never sign each other out. Sign-ins kept in it say so in its Move my sign-ins… list; the others stay on their computer.

Guide: Keep tokens in the system's credential store#

  1. Open Settings → Storage.
  2. In Where tokens are kept, turn on the switch:
    • macOS: Keep tokens in the macOS Keychain
    • Windows: Keep tokens encrypted for your Windows user
    • Linux: Keep tokens in the Secret Service (GNOME Keyring, KWallet…)
  3. Revue moves every token there at once.

Turned off, the tokens go back to this computer's file and the store's entry is deleted. The switch is for this computer only.

Where this is stored

The account files, in the config folder (~/.config/revue/tokens/ on every system, or $XDG_CONFIG_HOME/revue/tokens/):

FileHolds
github.jsonGitHub accounts
bitbucket.jsonBitbucket accounts and their watched workspaces
forgejo.jsonForgejo accounts and their servers
jira.jsonJira accounts, their sites and project keys
slack.jsonSlack workspaces
slack-app.jsonYour own Slack app, if you set one up

The tokens (access tokens, refresh tokens, your own Slack app's secret), by default in sign-ins.json, readable only by you, in the local data folder:

SystemFile
Linux~/.local/share/revue/sign-ins.json
macOS~/Library/Application Support/revue/sign-ins.json
Windows%LOCALAPPDATA%\revue\sign-ins.json

With the credential store turned on:

SystemWhere
macOSThe login keychain, as a generic password of service revue
Windows%LOCALAPPDATA%\revue\sign-ins.bin, encrypted with DPAPI for your Windows user
Linux and BSD~/.local/share/revue/sign-ins.sealed, encrypted with a key kept in the Secret Service (GNOME Keyring, KWallet, KeePassXC…), through libsecret's secret-tool. The Secret Service keeps at most 8 KB in an entry, too little for the tokens themselves.

All tokens are one entry, so the keychain asks at most once, not once per account.

The switch itself is saved as credential_store in this computer's settings.local.json, never in the shared settings.json (see Files, sync and settings for one computer).

Where the store can't be used (Linux without a desktop session or without secret-tool, a locked or refused keychain), turning the switch on says The system's credential store can't be used here: sign-ins stay where they were. If the store becomes unavailable later, tokens are kept in the file meanwhile and move to the store on the next start.

Development builds (revue-dev) keep everything apart from the installed app, in revue-dev folders and store entries.

GitHub tokens from your environment#

If you already use GitHub's gh command, Revue can use its sign-in instead of asking for its own:

  • On the welcome screen, open GitHub, click Advanced: use a token instead, then Use the gh CLI.
  • Or in Settings → Accounts, turn on Also sign in with the gh CLI or GITHUB_TOKEN / GH_TOKEN.

Revue then uses, in this order, GITHUB_TOKEN, GH_TOKEN, or the token gh auth token prints. If none is found, it says No GITHUB_TOKEN, GH_TOKEN or signed-in gh CLI found. That account comes first, before the ones you signed in to in Revue.

Advanced: REVUE_GITHUB_TOKEN

When REVUE_GITHUB_TOKEN is set (and not empty), Revue uses that token alone for GitHub: no other GitHub account, no gh CLI. It's meant for scripts and testing. The account shows via REVUE_GITHUB_TOKEN in Settings and can't be signed out there.

More environment variables are in Command line and environment variables.

Jira and Slack accounts#

Jira and Slack aren't code hosts, so they have no Track switch, and they don't count for leaving the welcome screen. They're listed in Settings → Accounts with who you are, the site or workspace, and Sign out.

  • Jira: ticket links open in Revue, with the ticket's details, comments and workflow.
  • Slack: reviews reply in the pull request's Slack thread.