When you turn on managed auth, onvibe serves the login, signup, password and reset pages for you — at the edge, before a request ever reaches your app. That's great for security and cost, but until now those pages were anonymous: a plain form that gave no hint of which app you were signing into. A generic gate in front of a polished app breaks the spell.
Now the sign-in screens carry your app's logo and title, centered above the form.
Your logo, served without waking your app
Set your logo once with set_logo and onvibe generates a full icon set. The login pages use it as the header image. Haven't set one yet? The pages show a neutral default — your app's initial on a colored tile — so there's always something recognizable there.
The important part: that logo is served by the platform, not by your app. An unauthenticated visitor sitting on the login screen never wakes your machine — the whole point of gating at the edge stays intact. Same for the favicon in the browser tab.
Your name, declared in onvibe.json
The title above the form is your app's display name. Set it declaratively in onvibe.json:
{
"title": "My Book Club",
"access": { "policy": "signup" }
}
Download → edit → redeploy, like the rest of your config. Don't set one and it falls back to your subdomain (the project id) — so a fresh app already reads mybookclub instead of nothing at all.
Nothing to wire up
There's no new route to build, no template to host, no asset to serve. The pages are still inline HTML rendered by the platform — they just pick up your logo and name automatically. Enable auth, set a logo, give it a title, and the sign-in screen looks like it belongs to your app instead of to the platform.