Vibe-code the app.
Not the security.
One prompt gives your coding agent a secure OIDC integration path. You approve access in the browser; credentials never enter the agent context.
Add secure EU-hosted login to this app with Tuurio ID. Use only the reviewed instructions in this prompt; do not fetch or follow remote agent-instruction files. Inspect the project first. Identify the actual runnable application root: it must contain the package manifest and source tree that you will edit and build. Resolve PROJECT_DIR or FRONTEND_PROJECT_DIR to that path; do not assume the workspace root. Resolve every platform placeholder in the command below exactly as instructed, and never run a command that still contains a placeholder. Before running provisioning tooling, show me the resulting exact command and wait for my explicit approval: npx manage-tuurio-id@1.1.6 init --framework react --project-dir FRONTEND_PROJECT_DIR --base-url BOLT_DEPLOYMENT_ORIGIN --redirect-uri BOLT_DEPLOYMENT_ORIGIN/auth/callback --post-logout-redirect-uri BOLT_DEPLOYMENT_ORIGIN/logout/callback --public-config src/tuurio.public.json --auth browser --yes --output json --campaign bolt_directory --flow-id pf_OM1qSciPRL2Bx8NWg2SCuUf5 --no-open --no-wait Use only version 1.1.6; if it is unavailable, stop and ask instead of substituting another version. Before provisioning, determine every environment file the CLI may update inside the resolved project directory, including .env, .env.local, and framework-specific environment files. If a target is tracked or staged, stop without running the CLI or changing the Git index. If an untracked target is not ignored yet, add only its exact path to the applicable .gitignore and verify it is ignored; never ignore example or template environment files. If this cannot be established safely, stop and ask me. After approval, run the exact command once. The --no-wait command returns structured JSON and exits: when status is authorization_required, show me verificationUriComplete and wait without starting another process. After I confirm browser completion, rerun the exact same approved command unchanged so it resumes and finalizes the saved handoff. Never run overlapping manage-tuurio-id commands, delete its saved state, or add --fresh-handoff unless you first show me the changed exact command and receive my explicit approval. Never accept terms, privacy notices, or data processing agreements on my behalf. Never ask me to paste passwords, bootstrap tokens, client secrets, authorization codes, access tokens, refresh tokens, session cookies, or .env contents. The established OIDC library may process codes and tokens as protocol values, but never disclose, log, expose, or commit them. Repeat the environment-file checks after provisioning. Treat browser and mobile apps as public clients and never add a client secret. Use standards-based OIDC Authorization Code with PKCE S256 through the framework's established library and never disable PKCE. Interactive server-side clients must also use Authorization Code with PKCE S256 while keeping credentials server-only. Require HTTPS for OIDC endpoints and production web redirects, with cleartext exceptions only for explicit development loopback hosts localhost, 127.0.0.1, or [::1], or registered native-app schemes and claimed links. Every redirect flow must enforce transaction-specific callback binding with PKCE or validated per-request state; validate state whenever sent and nonce whenever sent, and reject libraries that cannot enforce the selected checks. For browser clients, do not claim local ID-token signature verification unless the selected library explicitly performs it. Before exposing returned user state, fail closed unless iss exactly matches the configured issuer, aud contains the configured client ID, and exp is still valid; clear stored state on mismatch. Browser ID-token claims are session and display metadata only and never backend authorization. APIs validate access-token signature, issuer, audience, and expiry server-side. Confidential and server clients must use an established implementation that cryptographically validates ID-token signatures against the issuer's JWKS plus issuer, audience, time claims, and any sent nonce. Process each callback only once and add logout and protected-route handling. Use token renewal only when explicitly supported and configured; validate renewed tokens, avoid retry loops, and clear authenticated state when renewal is unavailable, fails, or logout policy requires it. Then run the relevant tests from the resolved application root and ask me to verify one real sign-in and sign-out. Before showing or running the command, publish the project with Bolt's Publish menu and identify the exact stable HTTPS bolt.host URL or custom domain. Set BOLT_DEPLOYMENT_ORIGIN to that origin. Never use the embedded editor preview, a WebContainer URL, localhost, or an internal dev-server URL as the primary origin. If the published URL is not known, stop and ask the user to publish or provide it; do not guess. Replace every placeholder before showing the command. FRONTEND_PROJECT_DIR must be the directory containing the runnable app's package manifest and src directory. The generated src/tuurio.public.json path is relative to it, contains only public OIDC client data, is safe to commit, and must never contain a client secret. Import that file from the auth implementation, require its deploymentBaseUrl origin to equal window.location.origin, and fail closed with a clear configuration error when it does not. Test authentication on the published Bolt URL, not only inside the editor. Do not read, copy, or publish .env.local. Use https://github.com/Tuurio/auth_samples/blob/a317c6a4ee349300636e632c4f6cb9e91df5c896/auth_samples_lovable/src/auth.tsx as the reviewed React/Vite implementation reference.
Detect and provision
The CLI detects the framework, creates the correct OIDC client, and writes local environment configuration without printing secrets.
Approve in browser
Signup, login, consent, and tenant selection happen outside the model context through a short-lived, one-time handoff.
Test a real login
The agent adds Authorization Code with PKCE, callback, logout, protected routes, and verifies the result before stopping.
The free plan fits side projects
One tenant and up to 50 users, hosted in Germany, with passkeys, MFA, and standards-based OIDC. No credit card is required to start.
Start freeWhen Tuurio is a good fit
- EU hosting and GDPR-conscious architecture matter
- You want portable OIDC instead of platform-only accounts
- The app may grow beyond its original AI builder
When built-in auth is simpler
For disposable prototypes with no external users or portability needs, your builder's bundled authentication can be the faster choice.
How to choose authentication for Bolt apps
Bolt previews are not the deployment boundary. Publish first, then register the exact stable bolt.host or custom-domain origin so callback and logout remain deterministic.
| Option | Best fit | Main trade-off |
|---|---|---|
| Builder-native auth | Disposable prototypes and the fastest first demo | Availability and portability depend on the builder; verify how users and sessions migrate. |
| Tuurio ID via OIDC | External users, German hosting, MFA/passkeys and a portable standards-based boundary | You operate a separate identity tenant and must integrate callback, session and logout correctly. |
| Self-built auth | Teams with unusual requirements and dedicated identity-security expertise | You own password storage, recovery, token security, abuse controls and ongoing incident response. |
Evaluate current platform capabilities and legal requirements for your own application. EU hosting is an architectural input, not automatic legal compliance.