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
- Sign in to the console (opens in a new tab) with your own Gully ID.
- 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
httpsand match exactly;httpis allowed only forlocalhost. - Add the button. Load
https://gullyid.xyz/sdk.js, or use any OIDC library. - 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
<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)
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_IDConfidential 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>.