The Builder API Has No Authentication
Sandboxed Preview
Generated apps never run directly inside the main AppBlips page. Every generated app executes in a fully isolated preview environment, which means:- The generated app cannot access the parent page’s DOM, cookies, or
localStorage - The parent page cannot reach into the generated app’s DOM
- The generated app cannot make credentialed requests that carry your AppBlips session
BYOK Key Storage
In the defaultbyok mode, each person using a generated AI-enabled app is prompted to enter their own provider endpoint, model name, and API key the first time AI is needed. AppBlips handles this key as follows:
- The key is stored in the browser only — in
sessionStorageby default, orlocalStorageif the user checks Remember on this device - The key is never sent to your AppBlips server at any point
- The key is never embedded in the generated HTML when an app is exported
While a generated app is running and connected to AI, JavaScript executing inside that app can access the key in order to make AI calls via
blip.ai.text(...). Advise users not to enter high-privilege or shared API keys into generated apps, and to prefer keys with spend limits or scoped permissions from their AI provider.Relay Mode Security
When you setAPPBLIPS_GENERATED_AI_MODE=relay, your server acts as a proxy between generated apps and your AI provider. The provider key never leaves the server — the browser only receives the relay URL. This removes the need for users to supply their own keys, but it shifts the billing and access control responsibility entirely onto you.
If apps generated by your instance are served from a different origin than AppBlips itself, set APPBLIPS_APP_AI_ALLOWED_ORIGINS explicitly to the exact origins you want to permit. Leaving it blank allows only same-origin callers. Do not add origins you do not control, and avoid adding null unless you specifically intend to serve apps as local file:// pages.
Hosting Exported Apps on a Separate Origin
If you self-host AppBlips and also plan to host exported apps somewhere publicly accessible, serve the exported apps from a different domain or subdomain than your AppBlips instance. Generated apps are self-contained HTML with full script privileges, so keeping them on a separate origin limits what a compromised or malicious app can access from your AppBlips installation.Recommended Hardening Steps
- Keep AppBlips behind localhost or a firewall unless you have added explicit authentication in front of it. The
/api/chatendpoint has no built-in auth. - Use HTTPS if AppBlips is reachable over any network. Terminate TLS at a reverse proxy such as Nginx or Caddy and proxy to AppBlips on port 3000.
- Set
APPBLIPS_APP_AI_ALLOWED_ORIGINSexplicitly if you run in relay mode and any generated apps are served from a different origin. List only the exact origins you control. - Monitor your AI provider’s usage dashboard regularly for unexpected spend — especially after any change to rate limit settings or network exposure. Provider-side spend limits are an additional safeguard worth enabling.
