Authsome ships ~35 bundled providers. For anything else — internal APIs, niche SaaS, or a service that just isn’t bundled yet — you write a JSON definition and register it.Documentation Index
Fetch the complete documentation index at: https://authsome.mbajaj.me/llms.txt
Use this file to discover all available pages before exploring further.
Step 1: Research the service
Find the authentication mechanism:- OAuth2? Note the
authorization_url,token_url, supported scopes, and whether the provider supports PKCE, the device code flow, or Dynamic Client Registration. - API key? Note the header format (
Authorization: Bearer ...vsX-API-Key: ...). - Both? Pick one. OAuth2 gives scoped, time-limited access with auto-refresh. API keys are simpler.
Step 2: Write the JSON
Pick a template based on the auth type.- OAuth2 (with DCR)
- OAuth2 (PKCE)
- API key
Preferred when the service supports Dynamic Client Registration. No
client_id required.Step 3: Pick the right flow
| Flow | When to use |
|---|---|
dcr_pkce | Preferred for OAuth2. Service supports Dynamic Client Registration. No client_id to manage. |
pkce | Standard OAuth2 with PKCE. Browser-capable setup. Needs client_id/client_secret. |
device_code | Headless OAuth2. User enters a code on a separate device. Needs client_id. |
api_key | Single secret with a header. Optional env_var for scripted setup. |
Step 4: Register the provider
auth_type/flow compatibility, and copies the file into ~/.authsome/providers/. Pass --force to overwrite an existing provider with the same name.
Step 5: Log in
Same commands as for bundled providers:client_id and client_secret. They are stored encrypted under the active profile and reused on every subsequent login. They are never accepted as command-line arguments.
Multi-tenant providers
For services where each customer has their own subdomain (Okta, GitHub Enterprise, GitLab self-managed):- Set
oauth.base_urlto a sensible default in the JSON. - Use
{base_url}inauthorization_url,token_url, etc. - Pass
--base-urlat login time:
Override a bundled provider
Custom providers always win over bundled ones with the same name. To customize a bundled provider — for example, to add scopes or change the host URL:What’s next
Provider schema
Every field in a provider definition.
Provider registry
How resolution and overrides work.