| Permission | Scope | Why |
|---|---|---|
| Repository contents | Read-only | To read file trees, file contents, and parse imports/exports for visualization |
| Repository metadata | Read-only | To list repo names and detect default branches |
We use GitHub OAuth to learn your username and avatar. That's it. No repository scope is requested at this step. We can't see any of your repos from sign-in alone.
You install the Nebulayer GitHub App and choose exactly which repos to share. This happens on GitHub's own interface — we can't see repos you don't select.
You can modify or revoke access anytime from your GitHub Settings → Applications → Installed GitHub Apps.
App JWT (signed with RSA private key) → exchanged for installation access token → 1-hour expiry → never stored in database. Generated fresh per API request.
All traffic over HTTPS/TLS. Database encrypted at rest via Supabase (AES-256).
Hosted on Vercel (SOC 2 compliant). Database on Supabase (SOC 2 compliant).
All database tables use Supabase RLS policies. Users can only access their own data. Server-side writes use a service-role client that bypasses RLS only for verified operations.
Questions? Open an issue on GitHub
Last updated: February 2026