Skip to content

Authentication

Soup supports multiple authentication methods depending on your use case.

The dashboard and CLI use GitHub OAuth.

Visit app.getsoup.dev and click “Sign in with GitHub.”

Terminal window
soup login

Opens your browser for GitHub login. Token saved to ~/.soup/config.json.

For servers or remote machines where you can’t open a browser:

Terminal window
soup login --device
# Output:
# Open this URL in any browser:
# https://app.getsoup.dev/cli/device
# Enter this code:
# ABCD-EFGH
# Waiting for authentication...
  1. Open the URL on your phone/laptop
  2. Enter the code
  3. Authorize with GitHub
  4. CLI automatically continues

Create tokens in the dashboard under Settings → API Tokens.

Terminal window
# Via CLI
soup token create --name "CI Deploy" --scopes secrets:read,secrets:write
# Or via dashboard
Settings API Tokens Create Token

Scopes:

  • projects:read, projects:write
  • secrets:read, secrets:write, secrets:delete
  • flags:read, flags:write, flags:delete
  • envs:create, envs:delete
Terminal window
curl https://app.getsoup.dev/api/v1/projects/my-app/environments/production/secrets \
-H "Authorization: Bearer soup_pat_..."

Or set in CLI:

Terminal window
export SOUP_TOKEN=soup_pat_...
soup secrets list # uses $SOUP_TOKEN if present

Service accounts are project-scoped with specific roles.

Via API (no UI yet):

Terminal window
POST /api/v1/service-accounts
{
"name": "Production Deploy",
"project_slug": "my-app",
"role": "editor" # or "viewer"
}

Returns a soup_sk_... token.

Roles:

  • Editor: Read/write access to project
  • Viewer: Read-only access

Same as personal tokens:

Terminal window
curl -H "Authorization: Bearer soup_sk_..." \
https://app.getsoup.dev/api/v1/projects/my-app/...

For self-hosted Soup instances (standalone mode).

Full access to all projects:

Terminal window
# Generate on first run
soup-engine --generate-master-key
# Or via API
POST /keys
{
"name": "Master Key",
"key_type": "master"
}

Returns sk_master_... token.

Scoped to single project:

Terminal window
POST /projects/{slug}/keys
{
"name": "My App Key"
}

Returns sk_proj_... token.

Terminal window
curl http://localhost:8080/api/v1/projects/my-app/secrets \
-H "Authorization: Bearer sk_master_..."

Do:

  • Store tokens in env vars or secret managers
  • Use project-scoped service accounts for CI/CD
  • Rotate tokens regularly
  • Use minimal scopes

Don’t:

  • Commit tokens to git
  • Share tokens between services
  • Use master keys in production apps
Terminal window
# Via CLI
soup token revoke <token-id>
# Or in dashboard
Settings API Tokens Revoke

Revoked tokens stop working immediately.