noauth
Centralized OAuth token service on Modal with encrypted storage and automatic refresh.
SDK install (GitHub)
Use this when you only want the client library (no Modal server deps). This install does not pull Modal.
uv pip install "git+https://github.com/thehumanworks/noauth.git"
Minimal usage:
from noauth.sdk import NoAuthClient
# Credentials can be provided via:
# 1. Explicit parameters (shown below)
# 2. Environment variables (NOAUTH_CLIENT_ID, NOAUTH_CLIENT_SECRET)
# 3. ~/.modal.toml file
client = NoAuthClient(
base_url="https://<your-app>.modal.run",
token_id="wk-...",
token_secret="ws-...",
)
print(client.health().message)
# Store an OAuth credential
client.store_credential(
"codex",
"oauth",
config={"client_id": "...", "token_url": "..."},
tokens={"access_token": "...", "refresh_token": "..."},
)
# Get credentials
cred = client.get_credential("codex", "oauth")
print(cred.tokens.get("access_token"))
# List credentials
creds = client.list_credentials()
print([c.name for c in creds])
# Refresh OAuth tokens
client.refresh_credential("codex")
## CLI usage
```bash
# Health check
noauth health
# Get OAuth credential tokens
noauth get codex --kind oauth
# Get bearer credential value
noauth get api-key --kind bearer
# Store OAuth tokens (from JSON file)
noauth store codex ./tokens.json
# Store OAuth config + optional tokens
noauth store-credential codex --kind oauth --config ./config.json --tokens ./tokens.json
# Store bearer token
noauth store-credential api-key --kind bearer --value "secret"
# Refresh OAuth credential
noauth refresh codex
# List credentials
noauth list
noauth list --kind oauth
# Delete credential
noauth delete codex --kind oauth --force
## Doppler secrets
noauth can use Doppler as the credential store. Set `DOPPLER_TOKEN`, `DOPPLER_PROJECT`, and `DOPPLER_CONFIG` for the Modal app. When enabled, OAuth credentials are stored as JSON in Doppler under `CODEX_AUTH_JSON` and `GEMINI_AUTH_JSON`.
## Server install (Modal app)
Use this when you want to deploy the service:
```bash
uv pip install "git+https://github.com/thehumanworks/noauth.git#egg=noauth[server]"
Deploy:
uv run modal deploy -m noauth.app
Notes:
- All endpoints require Modal Proxy Auth. Use a Proxy Auth token (
wk-.../ws-...). - API/CLI tokens (
ak-/as-) are not valid for proxy auth.
Metadata
Release files for noauth 0.1.4
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 | |
|---|---|---|---|---|
| noauth-0.1.4.tar.gz | 32.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| noauth-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 64.3 kB
Release files / noauth-0.1.4.tar.gz
| Download URL | noauth-0.1.4.tar.gz |
|---|---|
| Size | 32.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
95de195f08c89e48d635063806e4a18767075416582a91975919b9afafd78a7e
|
|
BLAKE2b-256 checksum How to use checksums |
cc284320c05c5e5b754db9eab514fb100ebd02df741866e146ec6cac7006d391
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / noauth-0.1.4-py3-none-any.whl
| Download URL | noauth-0.1.4-py3-none-any.whl |
|---|---|
| Size | 31.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e14736918cf06ce7e04c5ae20591c81eb3c98966020e36e7bbe2416a22745e01
|
|
BLAKE2b-256 checksum How to use checksums |
6e4db16402655541a4b1e28e310eed09848a1de9cbb77e5bd10b5ebc159758aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Security for noauth 0.1.4
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.