Skip to main content

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

  1. 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_JS in ui_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.
  2. Pluggable Service & User-Store Providers (AuthProviderPlugin):
    • MeshTubeAuthProvider (meshtube): Authenticates against a local or remote MeshTube instance's users, admin_users, and api_keys store.
    • LocalOperatorProvider (local_operator): Standalone node operator authentication via MESHNODE_OPERATOR_TOKEN, meshctl control credentials, or authorized operator pubkeys—no MeshTube dependency required.
  3. 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).

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)

Source distribution for fleetmesh-auth 0.1.0
File Size Uploaded Provenance
fleetmesh_auth-0.1.0.tar.gz 52.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fleetmesh-auth 0.1.0
File Interpreter ABI Platform
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.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page