Organizations
How the desktop app honors config.tenancy - organization switching, role-gated management, and per-entity entitlements.
Organizations and multi-tenancy
The desktop app honors the same config.tenancy settings as the web app, so a single config drives both surfaces.
multiTenant | Organization UI | Entitlements keyed to |
|---|---|---|
| enabled | switcher, management, onboarding step | the active billing entity |
| disabled | none | always the user |
When multiTenant is enabled:
- Switching: create and switch organizations (workspaces) from the app; the active one shows in the sidebar via an organization switcher, with Cmd/Ctrl+1..9 shortcuts for the first nine.
- Entitlements: follow the active billing entity - plan and credits resolve for the signed-in user when
billingScopeis"user", or for the active organization when it is"organization". The Account screen reflects the active entity's plan. - Onboarding: on first sign-in the app shows an onboarding step that requires creating (or already belonging to) at least one organization before reaching the app shell.
Organization management happens in-app and is gated by the viewer's organization role (owner/admin versus member):
| Area | Actions |
|---|---|
| Members | list members and manage roles - invite a member, change a member's role, or remove one |
| Invitations | see pending invitations and cancel them |
| Details | edit the organization's details |
| Membership | leave an organization, or delete it |
Two flows stay on the web by design: organization invitations are accepted via the link in the invitation email (opened in the browser), and billing and checkout remain on the web - the Account screen links out to the web billing portal.
Sign-in and security
Browser-based device authorization sign-in plus the shell's security boundaries - CSP, external links, the OS keychain, and the deny-by-default preload bridge.
Development and builds
Run the desktop app in development against your local backend, then package per-OS installers with electron-builder.