Live#…
Reading the chain…
Network now · GullyChain Testnet
Block
—
Txs · 30 blocks
—
Gas, gwei
—
Launches
—

Gully ID sign-in

On this page

Live

Live at gullyid.xyz (opens in a new tab) since 2026-10-27 (it moved from id.gullychain.xyz, which now forwards sign-ins). Open sign-up, no waitlist, free up to 1,000 monthly active users.

Gully ID is the one sign-in across every Gully product: the GullyChain app, the faucet, the bridge, the explorer, Gully Pay, Gully RPC and Gully Studio. It is a standard OpenID Connect provider, so any OIDC library works. Users sign in with a passkey, a wallet (SIWE) or email. Every user gets a smart-account wallet on GullyChain, and your app can ask for that wallet, the user's .gully name and their on-chain reputation as claims.

#Quickstart

  1. Sign in to the console (opens in a new tab) with your own Gully ID.
  2. Create an app. Pick a public client for code that runs in the browser or a mobile app (authorization code with PKCE, no secret), or a confidential client for a server (a client secret, shown once). Redirect URIs must be https and match exactly; http is allowed only for localhost.
  3. Add the button. Load https://gullyid.xyz/sdk.js, or use any OIDC library.
  4. Read the claims from the id_token, or from /userinfo.
Setting Value
Issuer https://gullyid.xyz/
Discovery https://gullyid.xyz/.well-known/openid-configuration (opens in a new tab)
Authorization https://gullyid.xyz/oauth2/auth
Token https://gullyid.xyz/oauth2/token
JWKS https://gullyid.xyz/.well-known/jwks.json
Userinfo https://gullyid.xyz/userinfo
Browser SDK https://gullyid.xyz/sdk.js
Full guide gullyid.xyz/developers/sign-in-with-gully (opens in a new tab)

#Browser: the SDK

html
<script src="https://gullyid.xyz/sdk.js"></script>
<button id="gully">Sign in with Gully</button>
<script>
  const gully = GullyID.init({ clientId: "YOUR_CLIENT_ID", scope: "openid profile wallet gully_name reputation" });
  document.getElementById("gully").onclick = async () => {
    const session = await gully.signIn(); // popup, PKCE, state and nonce checked
    console.log(session.profile);         // { sub, name, wallet, gullyName, ... }
  };
</script>

signIn() opens a popup by default. signIn({ mode: "redirect" }) uses a full-page redirect (call gully.handleRedirect() on your callback page), and signIn({ mode: "passkey" }) tries a passkey prompt straight away. gully.signOut() ends the session.

#Any OIDC library (PKCE)

text
GET https://gullyid.xyz/oauth2/auth?response_type=code&client_id=YOUR_CLIENT_ID
    &redirect_uri=https://app.example.com/auth/callback&scope=openid%20profile%20wallet
    &state=RANDOM&nonce=RANDOM&code_challenge=S256(VERIFIER)&code_challenge_method=S256

POST https://gullyid.xyz/oauth2/token
    grant_type=authorization_code&code=...&redirect_uri=...&code_verifier=VERIFIER&client_id=YOUR_CLIENT_ID

Confidential clients authenticate the token request with HTTP Basic (client_id:client_secret).

Heads up

Verify tokens on your server before you grant anything of value. Check the signature against the JWKS, and iss (https://gullyid.xyz/), aud (your client id), exp and nonce. Decoding a token in the browser is for display only.

#Scopes and claims

Scope Claims
openid sub (stable per user and app), amr (passkey, wallet, email, google, x)
profile name, picture
email email, email_verified
wallet wallet: { chainId: 485590, address, kind }, the user's GullyChain smart account
gully_name gully_name, for example alice.gully, or null
reputation reputation: { verified, hasGullyName, accountAgeBlocks, quests: { completed, ids }, xp, badges, available }, read from GullyChain
offline_access a refresh token (30 days, rotated)

The reputation claim is built from on-chain state: the GullyVerified check, the .gully name, Gully Quests completions, XP and soulbound badges (see Quests). Users see every item on the consent screen, with the value that would be shared. Gully ID never gives an app a passkey or a way to move funds: the wallet claim is an address, not a key.

#Google and X sign-in

Coming soon

Google and X as sign-in methods are coming soon. Passkey, wallet and email work today.

#Plans

Plan Price Monthly active users
Free $0 1,000
Build $29 / month 10,000
Scale $199 / month 100,000

Billing goes through Gully Pay (opens in a new tab). Going over a plan never locks your users out: you get a notice and time to upgrade.

#Buttons

Use the official buttons from the guide, or the CSS button: <link rel="stylesheet" href="https://gullyid.xyz/assets/sign-in-with-gully.css"> with <a class="gully-signin" href="...">Sign in with Gully</a>.