- Grants access to a single repository (except
org:readtokens, which are org-wide) - Contains explicit permission scopes
- Has a configurable time-to-live (TTL)
- Is customer-signed for full control
Token structure
SDK note: the client normalizes Git status codes inJWT headers must include:stateto descriptive values and provides the original status underrawStatealongside camelCase property names.
Permission scopes
| Scope | Description | Operations |
|---|---|---|
git:read | Read repository contents | clone, fetch, pull |
git:write | Modify repository | push (includes read) |
repo:write | Create repositories | POST /api/v1/repos |
org:read | List repositories | GET /api/v1/repos |
Key management
Public keys for JWT verification are managed through the Pierre Admin Panel.Manual JWT generation
For advanced scenarios—such as integrating with custom Git tooling or provisioning tokens outside the SDK clients—you can generate JWTs directly using your preferred JWT library (TypeScript) or the Python helper. They accept your PEM-encoded private key, repository URL (name), and desired scopes, then return a ready-to-use token:keyPem/key_pem(required): Private key in PKCS8 PEM format. RSA and EC (P-256/384/521) keys are supported.issuer(required): Customer identifier (for exampleyour-namein HTTPS remotes).repoId/repo_id(required): Repository ID (name) the token will access.scopes(optional): Explicit permissions. Defaults to["git:write", "git:read"]. Available scopes:git:read,git:write,repo:write.ttl(optional): Token lifetime in seconds. Defaults to31536000(1 year).
RS256 or ES256 as appropriate.