AuthServer
Hosted vs Headless
Choose between hosted and headless auth UI.
SqlOS runs OAuth. You choose who draws the login screens.
The default. SqlOS renders the sign-in, sign-up, invite acceptance, OTP, CLI device approval, and organization selection pages.
Choose hosted when:
What you get:
Downside: Less control over how the popup looks.

SqlOS owns the OAuth protocol. Your app owns the UI.
Choose headless when:
What you get:
customFieldsDownside: You build and host the authorize page.
builder.AddSqlOS<AppDbContext>(options =>
{
options.AuthServer.UseHeadlessAuthPage(headless =>
{
headless.BuildUiUrl = ctx =>
$"https://app.example.com/authorize?request={ctx.RequestId}&view={ctx.View}";
});
});Headless uses one switch: BuildUiUrl. If that callback exists, /sqlos/auth/authorize redirects into your app. Details.
A DIY “login page + bolt on OAuth” often grows into:
Want your own UI? Use headless. Still let SqlOS own codes, tokens, and PKCE.
You can flip hosted ↔ headless. OAuth, tokens, sessions, OTP, invitations, CLI device flow, and refresh stay the same. Only the login UI changes.
How-to: Headless Auth · Email Invitations · CLI OAuth