Users & login
On this page
Stella runs in one of two modes, controlled by auth.enabled.
Single user
auth.enabled: false (the default). There is no login, and all data belongs to one built-in
local account. The /mcp endpoint (when enabled) has no auth either, so put it behind a
trusted network (Tailscale, localhost, VPN) if you expose it.
This is meant for the lone self-hoster who is the only user of their services.
Multi user
auth.enabled: true. Login goes through any OpenID Connect provider (Keycloak, Authentik,
Pocket ID, …) configured under auth.oidc, and each user gets their own decks, cards and
review history. This mode is for self-hosters who want to share Stella with friends and
family.
auth:
enabled: true
publicURLs:
- https://stella.example.com
- http://192.168.1.50:8858
oidc:
issuer: https://id.example.com
clientID: stella
clientSecret: ...publicURLslists the external base URLs Stella is reachable at: usually one, but list more (a LAN address and a public domain, say) if you reach it several ways. Requests are matched to one of them byHostheader, falling back to the first. Register<publicURL>/auth/callbackas a redirect URI at the provider for each one.oidc.issueris the provider’s issuer URL; its discovery document must live at<issuer>/.well-known/openid-configuration.oidc.cimd: truemakes Stella register itself through a self-hosted Client ID Metadata Document (<publicURL>/auth/client-metadata.json) instead ofclientID/clientSecret: no client record to create, just allowlist that URL at the provider for each public URL. Only providers implementing CIMD (such as Pocket ID) support it, and it can’t be combined withclientID/clientSecret.
Tokens
/settings/tokens creates bearer tokens for MCP clients and
sync devices, and lists the OAuth apps connected to your account so you
can revoke them. A token is shown only once, when it is created.