Guide

Organizations

The dashboard ships with optional multi-user organizations: teams that share visibility into task history and approvals.

The dashboard ships with optional multi-user organizations: teams that share visibility into task history and approvals.

Enable organizations

Organizations are off unless AUTH_ENABLE_ORGANIZATIONS is exactly true:

AUTH_ENABLE_ORGANIZATIONS=true
AUTH_ALLOW_ORGANIZATION_CREATION=true   # whether any signed-in user may create one
Mail transport requiredEnabling organizations requires a working mail transport, because invitations are delivered by email. The default MAIL_PROVIDER=console only logs — configure resend or smtp first. See Mails.

AUTH_ALLOW_ORGANIZATION_CREATION is ignored while organizations are off. When creation is disallowed, only operators (through the database or a seeded flow) create organizations, and users join by invitation.

How it works

  • Organization data (membership, invitations, roles) lives in the Better Auth session store — the same Postgres database, declared in packages/database's Drizzle schema.
  • Policy constants such as the membership limit and invitation expiry are defined in packages/auth and composed into the Better Auth options.
  • The dashboard's organization UI lives in apps/dashboard/modules/organizations/ — pages for creating an organization, managing members, and accepting invitations.
  • Like every auth capability, the organization feature flags are captured at build time; rebuild after changing them. See Authentication overview.

Organization authority governs the dashboard UI only — it never extends to the control plane or repository policy. See Permissions.

Copyright © 2026