Repository navigation
feat: support multiple API keys (profiles) for managing multiple Dokploy organizations #44
Description
Problem
The CLI currently stores a single {url, token} credential pair (via dokploy auth, env vars, or .env). There is no way to manage multiple organizations or multiple Dokploy instances without manually swapping credentials each time.
Current workaround: re-run dokploy auth -u <url> -t <token> or swap DOKPLOY_API_KEY / DOKPLOY_URL environment variables every time you need to target a different organization or server.
This is painful for users who:
- Manage multiple Dokploy instances (e.g., staging vs production, or different clients)
- Belong to multiple organizations within the same Dokploy instance (where API keys are org-scoped via the
metadata.organizationIdfield inuser.createApiKey) - Work in CI/CD pipelines that deploy to different environments
Proposed Solution
Introduce a profile system (similar to aws-cli profiles, kubectl contexts, or gcloud configurations).
CLI interface
# Save a named profile
dokploy auth --profile prod -u https://panel.example.com -t <api-key>
dokploy auth --profile staging -u https://staging.example.com -t <api-key>
dokploy auth --profile client-acme -u https://panel.example.com -t <org-scoped-key>
# List profiles
dokploy profiles list
# * prod https://panel.example.com
# staging https://staging.example.com
# client-acme https://panel.example.com
# Switch active profile
dokploy profiles use staging
# Show current profile
dokploy profiles currentConfig file (~/.dokploy/config.json)
{
"currentProfile": "prod",
"profiles": {
"prod": {
"url": "https://panel.example.com",
"token": "<api-key>"
},
"staging": {
"url": "https://staging.example.com",
"token": "<api-key>"
},
"client-acme": {
"url": "https://panel.example.com",
"token": "<org-scoped-api-key>"
}
}
}Key changes
-
client.ts—readAuthConfig()resolves credentials in this order:--profile <name>global flag (highest priority)DOKPLOY_PROFILEenv varDOKPLOY_URL+DOKPLOY_API_KEYenv vars (backward compatible)- Active profile from config (stored in
~/.dokploy/config.jsonor similar) - Legacy
config.jsonnext to the package (backward compatible)
-
commands/auth.ts— Add optional--profile <name>flag. When omitted, saves to adefaultprofile for backward compatibility. -
New
profilescommand group —list,use,current,remove. -
Global
--profileflag — Allow overriding the active profile on any command:dokploy --profile staging project list.
Benefits
- Backward compatible: existing single-key usage continues to work unchanged
- No credential juggling: switch contexts with one command instead of re-authenticating
- CI/CD friendly: use
DOKPLOY_PROFILE=staging dokploy project listor--profile staging - Aligns with server capabilities: the Dokploy server already supports org-scoped API keys; the CLI just needs a way to use them conveniently
Related
- The server API already supports organization-scoped API keys via
user.createApiKeywithmetadata.organizationId - 22 CLI commands already accept
--organizationIdflags, meaning the server is multi-org aware but the CLI auth layer is not
Activity
ImBIOS commentedon Aug 17, 2026
Temporary workaround: dokploy-account — manage multiple Dokploy accounts for the dokploy CLI
Usage:
dokploy-account add -u -t Save a new account
dokploy-account list List saved accounts
dokploy-account remove Delete an account
dokploy-account current Print the currently active account
dokploy-account <args...> Run dokploy with the given account
dokploy-account use Switch the default account (symlink)
Accounts are stored in: /home/imbios/.dokploy-accounts wrapper
If you need multi-account support today while #50 is reviewed, you can use the standalone wrapper:
Requires to be installed globally.
Usage
Accounts are stored in
~/.dokploy-accounts/<name>.env.This is a temporary workaround — the native profile support in PR #50 is the proper solution and should land once reviewed.
feat: add profile-based multi-account support