For a more detailed walkthrough of authentication and user management, see the CLI Guide.
Bootstrap workflow
1
Retrieve the bootstrap secret
2
Run the bootstrap command
The command returns a JSON payload containing a short-lived
access_token. Test it immediately:3
Clean up
The server deletes the bootstrap secret file after a successful bootstrap. Remove any notes or terminals that still display the secret.
Bootstrap via environment variable
Alternatively, provide the bootstrap secret via environment variable instead of a file:Managing users
CLI
To delete a user, call
DELETE /api/v1/users/{userID} or use the web UI. CLI deletion support is in development.Web UI
- Sign in at
http://localhost:8080(or your production URL with TLS). - Navigate to Settings → Users.
- Use Add user to provision new operators.
- Delete a user by clicking the trash icon and typing the username to confirm.
Authentication model
- Admins/Users: Authenticate with username/password. The server issues JWT access tokens signed with
PULLBASE_JWT_SECRET. - Agents: Authenticate with agent tokens scoped to a single server. Tokens are hashed at rest and shown only once at creation time. Prefixed with
pbt_. - GitHub App: Uses App ID, private key, installation ID, and repository ID to mint short-lived installation tokens for agents.
Token lifetime
- API tokens expire based on
PULLBASE_JWT_EXPIRY_HOURS(default 24 hours). - Agent tokens can be set to expire (
--expires-inwhen creating via CLI) or rotated manually.
Session management
- The web UI stores the JWT in an HTTP-only cookie.
- Sign out from the avatar menu or let the token expire naturally.
- To revoke all sessions, rotate
PULLBASE_JWT_SECRETand restart Pullbase (forces logout for every user).
User roles
| Role | Permissions |
|---|---|
admin | Full access: manage users, environments, servers, tokens |
user | Manage environments and servers, view users |
viewer | Read-only access to all resources |