Authentication

Guide 6 min read Updated May 2026

GrooveOS signs you in with GitHub. The same "Sign in with GitHub" button works on the web app at grooveos.app, in the Chrome extension popup, and in any other GrooveOS surface — they all share the same identity. There is no password to manage.

Behind the scenes GrooveOS uses a GitHub App (the modern successor to OAuth Apps). The difference matters: the GitHub App can be installed on your GitHub organization once, which then lets any org member join your GrooveOS team automatically — no manual invites needed.

Sign in with GitHub

The basic flow is the same everywhere:

  1. Click Sign in with GitHub.
  2. GitHub shows a consent screen the first time. Approve xbrain.
  3. You land back on GrooveOS, signed in. Your GitHub avatar and username appear in the top bar.
Where you sign in Button location
Web app grooveos.app/account/teams/ — primary button
Chrome extension Extension popup — first launch
LibreChat chat.grooveos.app — "Sign in with GitHub" on the login screen

Same GitHub account everywhere

The web app, the Chrome extension, and LibreChat all sign in against the same GitHub App, so your GrooveOS identity is consistent across surfaces. Tokens you create in one surface (e.g. an xbt_ API token from the web app) work in all of them.

Installing xbrain on your org

If you sign in for the first time and your primary GitHub organization hasn't installed the xbrain App yet, GrooveOS shows a yellow banner like:

Install xbrain on `your-org-name`
[ Install xbrain on org → ]

What happens next depends on your role inside the GitHub org:

The install is per-org, not per-user

Once xbrain is installed on your GitHub org, no other member of that org needs to do it again. They just click "Sign in with GitHub" and they're in. The install is what unlocks the auto-join behaviour below.

Auto-join via GitHub org

Every xbrain team can declare a github_org field in its settings. When you sign in with GitHub, GrooveOS reads the list of organizations you belong to, and adds you to every team whose github_org matches one of your orgs — no manual invite needed.

This is the default way to add people to a team:

  1. Team admin sets github_org = your-org in team settings.
  2. Anyone in your-org signs in with GitHub for the first time.
  3. GrooveOS detects the org match and auto-adds them to the team as a Member.
  4. Team admins receive an email titled "New member auto-joined <team>".

If an auto-join is unexpected, an admin can block the user from the team — see Blocking members below.

Tokens & refresh

Once you're signed in, GrooveOS gives you an xbt_ personal API token. This is what every GrooveOS surface uses under the hood to call the API on your behalf:

xbt_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2

You can list, name, and revoke your xbt_ tokens from your profile page. See the API Reference for the full programmatic surface — xbt_ tokens are how you build your own scripts and integrations.

Behind the scenes: GitHub tokens

In addition to the xbt_ token, GrooveOS stores two GitHub-side tokens for your account:

Token Lifetime Why
User access token (ghu_) 8 hours Used to look up your GitHub profile, verified emails, and org memberships when you sign in.
Refresh token (ghr_) 6 months Single-use; quietly rotates the 8h access token in the background so you don't have to re-sign-in every workday.

You don't see these — they're managed for you, encrypted at rest, and rotated automatically. After 6 months of no GrooveOS activity the refresh token expires; on your next visit you click "Sign in with GitHub" again and the cycle restarts.

Blocking members

Team admins can block any member at any time from the Settings card on the teams page or from the Options tab of the Chrome extension. Blocked users immediately stop having access:

Pre-blocking a GitHub login

Admins can also pre-block a GitHub username that hasn't signed up yet. The next time that user signs in via your org, the auto-grant pipeline checks the pre-block list before adding them to the team. They will sign in successfully but won't be auto-joined.

Permissions xbrain requests

When you authorize xbrain via GitHub, the App asks for:

That's it. xbrain does not request repo content access, write access to your account, or any permissions on your code. You can review the install at any time on GitHub: github.com/settings/installations (personal) or github.com/organizations/<your-org>/settings/installations (org).

Revoking access

To cut all GrooveOS access from your GitHub account, uninstall the xbrain App from GitHub's installation settings. GrooveOS detects the uninstall via webhook and your team memberships become read-only until the App is reinstalled.

Troubleshooting

SymptomWhat's happeningFix
"Install xbrain on org" banner doesn't go away after install GitHub's install webhook hasn't reached GrooveOS yet (usually < 5 s). Wait a few seconds and refresh the page. GrooveOS also self-heals on the next sign-in by querying GitHub directly.
Approval required after clicking Install You're a regular member of the org, not an owner. An org owner has to approve the install request. Ask them, then come back and sign in again.
Signed in, but no teams listed Your org isn't tied to any GrooveOS team yet, or you're in a private org GrooveOS can't see without the install. Ask a team admin to either invite you by email or set github_org on the team to your org.
HTTP 401 unauthorized from the API Your refresh token expired (no GrooveOS activity in 6 months) or your xbt_ was revoked. Sign in with GitHub again. If your xbt_ was revoked, mint a new one from your profile.
HTTP 403 with "Member blocked from team …" A team admin blocked you. Contact the admin. Re-signing-in won't help — the block is server-side.

What's next