Security & privacy
How BLXAde handles credentials, masking, local data, and license access.
BLXAde is designed as a local-first desktop app with a minimized webview capability set. This page summarizes user-facing security behavior — not a penetration-test report.
Local-first data
| Data | Where it lives |
|---|---|
| Project files | Your project folder on disk |
| Canvas workfile | .blxade/workspace.blxcanvas inside the project |
| App preferences | Local SQLite (blxade.db) under app data |
| Recent paths | Local profile config |
| Terminal full history | Process RAM only |
| Provider API keys | OS keyring (native vault) |
| Auth refresh / license lease | OS keyring under BLXAde auth accounts |
| Access token | Native memory only (never SQLite/webview) |
The webview does not receive broad filesystem APIs; workspace operations go through narrow native commands.
Authentication and license
- OAuth (GitHub/Google) via Bitslix for identity.
- Separate license lease authorizes productive use (lifetime license).
- Leases are Ed25519-signed, installation-bound, ~7-day lifetime, refreshed online.
- Offline use requires a still-valid cached lease + matching profile.
- Denial or expiry clears productive access and returns to login.
Suspend when access closes
Closing the access gate suspends or kills productive native work already in progress, including:
- live PTYs and orchestration terminals
- Global Agent work
- Loop children and future scheduler fires
- Voice capture / playback / realtime / TTS
- Hermes runtimes, pending MCP calls, project preview servers
Loops and the loopback MCP server start only after access opens again. Reopening does not resurrect killed processes. Local project files remain on disk.
Debug Skip login never ships in release builds.
Provider secrets
- OpenRouter, OpenAI, xAI, Groq, fal, etc. use isolated keyring accounts.
- Optional
~/.blxade/.envis a one-shot import — deleted after successful import of all recognized keys. - Keys are not written into canvas documents, logs, or React IPC payloads.
YouTube Music OAuth
Tokens are native keyring-backed. Replaying onboarding or certain Danger Zone actions disconnect YouTube so setup can run cleanly again. Disconnect does not delete your Google account.
Terminal masking
Before agent tools or UI egress paths consume terminal output, BLXAde normalizes ANSI and masks common secret patterns (keys, tokens, private key blocks). Treat masking as a defense in depth, not a reason to print production secrets in terminals.
MCP local server
- Bound to 127.0.0.1 only
- Bearer authenticated
- Descriptor under
~/.blxade/run/is ephemeral - External principals get a reduced tool set vs Global Agent / Agent CLI
Do not expose the MCP port beyond loopback (the product is not designed for that).
Notifications privacy
Notification events reject arbitrary free text dumps of prompts, paths, and credentials. History is retention-capped and age-pruned.
What Danger Zone does not delete
Clearing history / replaying onboarding does not remove:
- project folders and source code
- canvas workfiles (except as separate explicit user deletion on disk)
- general preferences
- unrelated credentials (except documented YouTube disconnect cases)
- agent hooks / MCP install state (unless you remove them in Agents settings)
Good practices
- Store projects in directories you control and back up.
- Prefer environment/secret managers over pasting keys into agent chats.
- Review agent CLI permissions before enabling broad hooks.
- Keep the app updated; early versions change security surfaces.
- On shared machines, log out and avoid Skip-login debug builds.