Authentication
OpenID Connect SSO (Auth0, Keycloak, Okta, Azure AD or any OIDC provider) using Authorization Code Flow with PKCE. Sessions ride JWTs in httpOnly cookies — no tokens in localStorage.
OIDC guideThe security model in one place: OIDC SSO with PKCE, JWT in httpOnly cookies, RBAC, env-var seed credentials, TLS and SSH tunnels, display-level data masking, checksummed releases — and how to report a vulnerability.
SELECT control, detail FROM security_controls;What is enforced, where it is enforced, and how to reach us when something isn't.
OpenID Connect SSO (Auth0, Keycloak, Okta, Azure AD or any OIDC provider) using Authorization Code Flow with PKCE. Sessions ride JWTs in httpOnly cookies — no tokens in localStorage.
OIDC guideRole-based access control with per-connection visibility scoping — a connection can be exposed to admins only, to users, or to everyone. Roles map from your identity provider claims.
Seed connections resolve ${ENV_VAR} placeholders at runtime, so secrets live in your environment or secret manager — never in a config file. Pair each connection with a dedicated least-privilege database account (read-only to start).
Seed connectionsTLS between browser and app; TLS and SSH tunnels from the app to your databases — including databases behind firewalls that never get public exposure.
Sensitive columns (email, phone, SSN, financial data) are detected and masked across the grid, exports, and clipboard with RBAC enforcement. Masking is display-level — combine it with database-side grants for hard guarantees.
Self-hosting is a first-class citizen: run it on your infrastructure, inside your network, behind your VPN. Nothing needs to leave your perimeter — including AI, which can run fully local via Ollama or LM Studio.
MIT-licensed source you can audit line by line. Every release ships SHA256 checksums; CI runs CodeQL and SonarCloud. Images are published to GHCR with immutable version tags.
Please report it privately — not in a public issue. The disclosure process, supported versions, and response commitments live in the repository's security policy.
Read SECURITY.md-- honest by default: if a control is display-level, this page says so.