Tokens¶
SimpleOTA has two token kinds. Both are bearer tokens; both are stored as salted hashes server-side; both are shown in plaintext once at creation and never retrievable later.
Personal API tokens (PATs)¶
- Scope: all projects you own.
- Use case: human/admin tasks, CLI scripts, multi-project automation.
- Created at: API Tokens in the top navigation.
Project API tokens¶
- Scope: one project.
- Use case: device communication, CI upload, factory tooling.
- Created at: the Project API tokens card on the project page, via Issue token.
Choosing the right one¶
| Job | Token kind |
|---|---|
Devices polling /check/ |
Project token |
| CI uploading firmware | Project token |
| Building a dashboard against your fleet | Personal token |
| Cross-project scripting | Personal token |
Default to project tokens. Smaller blast radius if leaked.
Project token scopes¶
Scopes are checkboxes, so a token can carry one or both. New tokens
default to device only.
device: for firmware running on hardware. Can only poll/check/and/status/. Cannot upload firmware or touch deployments.api: for CI pipelines and developer tooling. Can upload firmware and manage deployments. Cannot poll OTA endpoints.
Only ever flash a device-scope token into hardware. An api-scope token extracted from a device would let an attacker upload firmware or modify your deployments. For the same reason, do not tick both scopes on a token you are going to flash: a token holding api is an upload credential no matter what else it can do.
Naming¶
Always name tokens (ci-upload-bot, factory-flash-rig-3,
alex-laptop). The dashboard lists them by name; revoking one is a
one-click operation that doesn't disrupt others.
Rotation¶
There is no automatic rotation. The recommended rhythm is:
- Create a new token alongside the old one.
- Roll it out wherever the old one is used.
- Revoke the old one.
Tokens record when they were last used. The dashboard shows this for personal tokens and for per-device tokens.