Skip to main content

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)

Source distribution for noauth 0.1.4
File Size Uploaded Provenance
noauth-0.1.4.tar.gz 32.4 kB Without provenance Details

Built distribution (wheel)

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

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