Teams & Roles
Role-based access control for AxiomDB projects with granular permissions for owners, admins, developers, viewers, and billing users.
Teams & Roles
Managing who can access your database is simple with AxiomDB. We use project-level role-based access control (RBAC) to keep things secure. When you add team members, you assign them a specific role that dictates exactly what they can and can't do. For extra peace of mind, high-impact actions are protected by confirmation steps and logged in the audit trail.
The Role Hierarchy
AxiomDB roles are arranged in a hierarchy from the most privileged to the least. Members with higher roles inherit all the permissions of the roles below them:
┌──────────────────────────────────────────────────────┐
│ OWNER │
│ • Everything below │
│ • Delete project │
│ • Enable public network modes │
│ • Manage billing │
│ • Transfer ownership │
│ • Remove any member │
├──────────────────────────────────────────────────────┤
│ ADMIN │
│ • Everything below │
│ • Create/delete branches │
│ • Manage network rules │
│ • Initiate restores │
│ • Rotate credentials │
│ • View credentials (if policy allows) │
├──────────────────────────────────────────────────────┤
│ DEVELOPER │
│ • Everything below │
│ • Create branches │
│ • View credentials (if policy allows) │
│ • Run queries │
│ • View branch metadata │
├──────────────────────────────────────────────────────┤
│ VIEWER │
│ • Read-only dashboard access │
│ • View branch list │
│ • View network rules (no modification) │
│ • View audit log │
├──────────────────────────────────────────────────────┤
│ BILLING │
│ • Manage payment methods │
│ • View invoices │
│ • Update subscription │
│ • No database or infrastructure access │
└──────────────────────────────────────────────────────┘Permission Matrix at a Glance
| Action | Owner | Admin | Developer | Viewer | Billing |
|---|---|---|---|---|---|
| View dashboard | ✅ | ✅ | ✅ | ✅ | ✅ |
| View branch list | ✅ | ✅ | ✅ | ✅ | ❌ |
| View network rules | ✅ | ✅ | ✅ | ✅ | ❌ |
| View audit log | ✅ | ✅ | ✅ | ✅ | ❌ |
| Run queries | ✅ | ✅ | ✅ | ❌ | ❌ |
| Create branches | ✅ | ✅ | ✅ | ❌ | ❌ |
| View credentials | ✅ | ✅ | ⚠️ | ❌ | ❌ |
| Rotate credentials | ✅ | ✅ | ❌ | ❌ | ❌ |
| Manage network rules | ✅ | ✅ | ❌ | ❌ | ❌ |
| Delete branches | ✅ | ✅ | ❌ | ❌ | ❌ |
| Initiate restore | ✅ | ✅ | ❌ | ❌ | ❌ |
| Enable public mode | ✅ | ❌ | ❌ | ❌ | ❌ |
| Delete project | ✅ | ❌ | ❌ | ❌ | ❌ |
| Manage billing | ✅ | ❌ | ❌ | ❌ | ✅ |
| Invite members | ✅ | ✅ | ❌ | ❌ | ❌ |
| Remove members | ✅ | ⚠️ | ❌ | ❌ | ❌ |
| Change member roles | ✅ | ⚠️ | ❌ | ❌ | ❌ |
Developer credential access
By default, developers can't view credentials. If you want them to be able to, a project owner must enable the allow_developer_credential_access policy (which is set to false by default).
What Admins cannot do
Admins can manage a lot, but they have limits: they cannot remove project owners or promote anyone to an owner. While admins can remove developers, viewers, or billing members, they cannot remove other admins. Only project owners can remove an admin.
Guarding Sensitive Actions
Some actions have a bigger impact than others. For those, we require extra confirmation steps beyond standard role checks, and we always log these events to your audit trail:
| Action | Minimum Role | Confirmation | Audit Event |
|---|---|---|---|
| Reveal credentials | Developer* | None | branch.credentials.viewed |
| Rotate credentials | Admin | None | branch.credentials.rotated |
| Enable public runtime mode | Owner | None | network.policy.changed |
| Enable public all mode | Owner | Type project name | network.policy.changed |
| Delete branch | Admin | Type branch name | branch.deleted |
| Delete project | Owner | Type project name | project.deleted |
| Restore backup | Admin | None | backup.restore.started |
| Invite member | Admin | None | team.invitation.created |
| Remove member | Admin | None | team.member.removed |
| Change role | Admin | None | team.member.role_changed |
Adding Team Members
Ready to invite new collaborators to your project? Here is how you can do it:
Using the Dashboard
- Head over to Project Settings → Team.
- Click the Invite Member button.
- Enter the person's email address and pick their role.
- They'll receive an email with a secure invitation link.
- Keep in mind that invitation links expire after 7 days!
Using the CLI
axiom team invite \
--project my-project \
--email "alice@example.com" \
--role developerUsing the API
curl -X POST "https://api.axiom.cloud/v1/projects/prj_abc123/team/invitations" \
-H "Authorization: Bearer ptk_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"email": "alice@example.com",
"role": "developer"
}'Response:
{
"id": "inv_7xK2mP9n",
"email": "alice@example.com",
"role": "developer",
"status": "pending",
"expires_at": "2026-01-22T10:30:00Z",
"created_at": "2026-01-15T10:30:00Z",
"invited_by": "usr_8xK2mP"
}Changing a Member's Role
When you update a team member's role, the change goes into effect immediately. Their active database connections won't be abruptly disconnected, but any new API requests they make will be checked against their updated permissions.
axiom team role update \
--project my-project \
--member usr_alice123 \
--role adminThe impact of downgrading roles
If you downgrade someone from admin to developer, they will immediately lose access to network configuration, credential rotation, branch deletion, and restore tools. If they are in the middle of a session, they'll start seeing permission errors on their next action.
Removing a Team Member
Removing someone from a project revokes their access immediately. If they have active database connections running, we'll give them a 60-second grace period so any in-flight queries can finish before we close the connections.
axiom team remove \
--project my-project \
--member usr_alice123Once removed, they'll receive a notification email, and any API tokens they created for this project will be deactivated.
A Deeper Look at Each Role
Owner
The project Owner is the ultimate administrator:
- Opening public network ports: Only owners can switch network modes to
public_runtimeorpublic_all. And forpublic_all, you'll need to type the project name to confirm. - Deleting the project: This is permanent! To make sure it's intentional, you must type the project name. This will wipe out all data, branches, backups, and team settings.
- Billing control: Owners have full access to update payment methods, download invoices, and manage the subscription plan.
- Passing the torch: An owner can transfer project ownership to another team member. Once done, the previous owner is adjusted to an Admin.
Admin
Admins take care of the project's day-to-day operations:
- Managing branches: Admins can create, delete, and restore branches.
- Controlling the network: Admins are in charge of adding, updating, and removing CIDR rules.
- Rotating credentials: Admins can rotate runtime, direct, or both sets of credentials.
- Restores: Admins can initiate point-in-time restores from backups.
- Team adjustments: Admins can invite new members and manage roles up to the Admin level.
Developer
Developers focus on writing code and building features:
- Branch creation: Developers can spin up new branches (as long as project policy allows it).
- Query execution: Developers have full query access via the dashboard and database clients.
- Credential access: This is conditional and depends on the
allow_developer_credential_accesspolicy. - View access: Developers can view branches, read network rules, and inspect audit logs.
Viewer
Viewers have read-only access to help keep tabs on the project:
- Dashboard access: Viewers can see project metrics, the dashboard, and lists of branches.
- Audit logs: Viewers can inspect the audit log (but cannot export it).
- No changes allowed: Viewers cannot create branches, run database queries, or edit configurations.
Billing
The Billing role is custom-built for accounting and finance team members:
- Payment options: Billing members can add, update, or delete payment details like credit cards.
- Invoices: Billing members can view and download current and past invoices.
- Plan details: Billing members can upgrade, downgrade, or cancel subscriptions.
- No technical access: To keep things secure, billing members cannot see database branches, execute queries, or view connection credentials.
API Token Scopes
When creating API tokens, you can assign them a specific role. The token will inherit the permissions of that role, meaning it can never exceed the access level of the role it's assigned to.
{
"token_id": "ptk_xxxxxxxxxxxx",
"name": "CI Deploy Token",
"role": "developer",
"scopes": ["branches:read", "branches:create", "credentials:read"],
"expires_at": "2026-06-01T00:00:00Z",
"rate_limit": 1000,
"created_at": "2025-01-15T10:30:00Z"
}Token Scopes Reference
| Scope | Description | Minimum Role |
|---|---|---|
branches:read | List and view branch metadata | Viewer |
branches:create | Create new branches | Developer |
branches:delete | Delete branches | Admin |
credentials:read | View connection credentials | Developer* |
credentials:rotate | Rotate credentials | Admin |
network:read | View network rules | Viewer |
network:write | Create, update, delete network rules | Admin |
audit:read | View audit log | Viewer |
team:read | View team members | Viewer |
team:write | Invite, remove, and change roles | Admin |
billing:read | View invoices and payment methods | Billing |
billing:write | Manage billing | Billing |
How Authentication Works
AxiomDB supports two secure ways to authenticate:
PASETO v4 Tokens
Our API tokens use the modern PASETO v4 standard, signed securely with Ed25519 keys. We generate these tokens on the server and only display the token value once when you create it. Make sure to copy it down, as we can't show it to you again!
OAuth2 / OIDC via Square Identity Provider
When you log into the web dashboard, we delegate the process to Square's identity provider:
- You click Sign in with Square.
- Your browser redirects to the Square Identity Provider using secure OIDC parameters.
- You authenticate (including Multi-Factor Authentication if it's set up).
- The provider sends back a secure authorization code.
- AxiomDB exchanges this code for access tokens.
- Your dashboard session starts with access levels matching your project role.
Team Management Best Practices
- Follow the principle of least privilege. Always assign the minimum role required for a team member to do their job.
- Keep billing roles separate. Give your finance team the Billing role rather than making them project Owners.
- Use API tokens for automation. Never embed personal login credentials in your CI/CD pipelines—use scoped API tokens instead.
- Rotate your tokens. Set expirations on your API tokens and rotate them before they run out.
- Perform regular audits. Take a look at your team roster and project audit logs once a month.
- Clean up access immediately. Be sure to remove team members from the project as soon as they leave your team or organization.
Troubleshooting Role Issues
Permission denied
{
"error": "forbidden",
"message": "Role 'developer' does not have permission to perform 'network:write'",
"required_role": "admin"
}What went wrong: Your current role doesn't have the permissions required for the action you're trying to perform.
How to fix it: Reach out to a project Owner or Admin and ask them to upgrade your project role.
Invitation expired
{
"error": "invitation_expired",
"message": "This invitation expired on 2026-01-22T10:30:00Z",
"invited_by": "usr_8xK2mP"
}What went wrong: The invitation link was not accepted within the 7-day window.
How to fix it: Ask the team member who invited you to generate and send a new invitation link.
Cannot remove member
{
"error": "forbidden",
"message": "Admins cannot remove other admins. Ask the project owner."
}What went wrong: Admins are not allowed to remove other admins from the project.
How to fix it: Ask the project Owner to downgrade the admin first, or have the Owner remove them directly.
Related Pages
How is this guide?
Credential Rotation
Rotate Postgres credentials atomically across all layers — database, pooler, and secret store — with zero downtime and full audit trails.
CORS & Data API
Configure Cross-Origin Resource Sharing for the HTTP Data API, manage scoped tokens, and understand the security model for browser-based access.
