Every Swarmd tenant starts with a single admin user (created during tenant setup) who is automatically placed in the Tenant Administrator group. You can invite additional team members and control what they can access by assigning them to groups.
Permissions in Swarmd are managed exclusively through groups. Every tenant is created with four default groups:
Group
Purpose
Default
Tenant Administrator
Full access to all tenant resources including group and user management
No
Editor
Day-to-day operations — manage agents, conversations, approvals, and API keys
No
Viewer
Read-only access to agents, conversations, approvals, and audit logs
Yes
Billing Manager
Manage billing and payment settings
No
The Viewer group is marked as the default — users created without explicit group assignment are automatically added to it.You can also create custom groups with any combination of permissions to match your team’s needs.
When creating a user, specify which groups they should belong to via groupIds. If omitted, the user is assigned to the default group (Viewer).
API
UI
Invite a user into the Editor group:
# First, list groups to get the Editor group IDcurl https://api.swarmd.ai/tenant-auth/v1/tenants/TENANT_ID/groups \ -H "Authorization: Bearer $SWARMD_TOKEN"# Then create the user with that group IDcurl -X POST https://api.swarmd.ai/tenant-auth/v1/tenants/TENANT_ID/users \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $SWARMD_TOKEN" \ -d '{ "email": "engineer@acme.com", "password": "initial-password", "firstName": "Alex", "lastName": "Chen", "groupIds": ["EDITOR_GROUP_ID"] }'
A user’s effective permissions are the union of all permissions from all groups they belong to. For example, a user in both Editor and Billing Manager gets the combined permissions of both groups.
Updating a group creates a new immutable version — the previous version is preserved for audit purposes. All members of the group receive the updated permissions on their next login.
Every group change and membership change is recorded:
Group versions — each update to a group’s name, description, or permissions creates a new immutable version. View the history with GET /v1/tenants/TENANT_ID/groups/GROUP_ID/versions.
Membership events — every group assignment and removal is logged with who performed the action and when.