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: Account → Tokens.
Project API tokens¶
- Scope: one project.
- Use case: device communication, CI upload, factory tooling.
- Created at: Project → Tokens.
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¶
When issuing a project token you choose one scope:
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.
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.
Active tokens carry a last_used_at timestamp so you can spot stale
ones safely.