FleetMesh Auth (fleetmesh/fleetmesh-auth)
Standardized, white-labeled, and pluggable authentication & authorization suite for FleetMesh applications (Fleetmesh Stream Studio, MeshTube Admin Deck, Fleetmesh Meshnode Ops, and standalone mesh services).
Key Features
- Cryptographic & Sovereign Identity Login (
sovereign_key):- Nostr Bunker (
bunker://<pubkey>?relay=wss://...): NIP-46 remote signer URI parsing and signed challenge verification. A bunker login must carry a signature over a server challenge; the bundled widget does not yet run the NIP-46 handshake that gets one, so its bunker tab cannot complete a login. - NIP-07 Browser Signer (
window.nostr.signEvent): One-click cryptographic challenge signing via browser extension. - Private Key / DID (
nsec1..., 64-char hex,did:nostr,did:key): the panel signs the challenge in the page (BIP-340 over WebCrypto,BROWSER_KEY_SIGNER_JSinui_widget.py) and sends only the public key and signature. The server refuses a raw key outright (private_key_not_accepted). It only signs the<scheme>:<challenge>:<origin>login message it hashes itself, never a digest the server hands it. - Portable Cross-Site Identity Pass (
fmpass_.../mtpass_...): Self-contained signed NIP-98 (Kind 27235) SSO tickets. A ticket is the identity of the key that signs it, so only the user's own key can mint one, and the panel mints it in the browser: from a pasted key at sign-in, before the key is cleared, or from the signer extension when "Copy Portable Pass" is clicked. The server mints none, and deletes the ticket-signing key earlier versions kept. A ticket is good for one sign-in within the hour; the copy button never hands out the session token.
- Nostr Bunker (
- Pluggable Service & User-Store Providers (
AuthProviderPlugin):MeshTubeAuthProvider(meshtube): Authenticates against a local or remote MeshTube instance'susers,admin_users, andapi_keysstore.LocalOperatorProvider(local_operator): Standalone node operator authentication viaMESHNODE_OPERATOR_TOKEN,meshctlcontrol credentials, or authorized operator pubkeys—no MeshTube dependency required.
- White-Labeled FleetMesh Auth Panel (
ui_widget.py):- Supports Full-Screen Auth Gate mode (
admin.<domain>,ops.<domain>) and Slide-Over / Modal mode (studio.<domain>). - Mountable
/api/fauth/*HTTP routes (GET /api/fauth/config,GET /api/fauth/session,POST /api/fauth/challenge,POST /api/fauth/login,POST /api/fauth/logout,GET /api/fauth/widget.js) or runnable as a standalone SSO service (python3 -m fleetmesh_auth).
- Supports Full-Screen Auth Gate mode (
Configuration
Apps build FleetmeshAuthEngine themselves; these environment variables set
who holds which role without changing their code. Lists are separated by
commas or whitespace. Keys are 64-hex x-only pubkeys, npub1... or
did:nostr:...; an entry that does not parse is logged and skipped.
| Variable | Effect |
|---|---|
FLEETMESH_AUTH_OPERATOR_PUBKEYS |
Keys that sign in as node operators (with admin). |
FLEETMESH_AUTH_ADMIN_PUBKEYS |
Keys that sign in as admins. admin and node_operator imply each other in principal.ROLE_IMPLICATIONS, so today this grants the same roles as the operator list. |
FLEETMESH_AUTH_TRUSTED_INSTANCES |
Remote MeshTube base URLs a login may name in instance_url. The provider's own instance_url is always trusted; users verified remotely sign in as creators. |
MESHNODE_OPERATOR_TOKEN (or FLEETMESH_OPERATOR_TOKEN, MESHTUBE_ADMIN_PASS) |
The local operator provider's password. Unset, operator-token login is refused; there is no default. |
MESHNODE_OPERATOR_USER (or MESHTUBE_ADMIN_USER) |
The operator's display name (default admin). |
Without any of these, a key login is a creator. It is an operator only when the
key is the co-hosted studio's own operator or node key, or the studio's user
record has an admin or operator role. allow_any_sovereign_key=True (code only)
makes every key an operator, for single-operator setups. A list passed to a
provider's constructor replaces the environment's.
Tests
PYTHONPATH=.:../core:../schema python3 tests/test_fleetmesh_auth.py
PYTHONPATH=.:../core:../schema python3 tests/test_browser_signer.py # needs node 22+; skipped without it
test_browser_signer.py runs the panel's in-page signer under Node against
fleetmesh_core: identical public keys and signatures, nsec decoding, and the
server accepting what the page signs, and passes minted in the page that sign in as their owner once.
Metadata
Release files for fleetmesh-auth 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fleetmesh_auth-0.1.0.tar.gz | 52.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fleetmesh_auth-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 100.0 kB
Release files / fleetmesh_auth-0.1.0.tar.gz
| Download URL | fleetmesh_auth-0.1.0.tar.gz |
|---|---|
| Size | 52.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
50b1f2e0275ee668175379df6a035d87fe305019154a0d4c0c695db10c7a89f9
|
|
BLAKE2b-256 checksum How to use checksums |
c4921fa4e81257ddc825e10aaf51dd85bfbfb35b4fb0382bc16fa857502faa14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / fleetmesh_auth-0.1.0-py3-none-any.whl
| Download URL | fleetmesh_auth-0.1.0-py3-none-any.whl |
|---|---|
| Size | 48.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d843a186dec74e6e62ec426f8a996c72d41396d7105b256bd0be14b954940dbc
|
|
BLAKE2b-256 checksum How to use checksums |
419bec6a4ee515823b7df2a7e0401a1c8cae95ca4562d9baa3b8a51b4a680111
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Security for fleetmesh-auth 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.