Get started

one configure

Manage local connections and preferences for deployment, environment variables, and image registries.

6 min readUpdated 3 days agoEdit on GitHub

one configure manages local connections and preferences, not application code. Credentials stay on this machine and are never written to the workspace or Git.

Usage

one configure
one configure add
one configure add <pair> --profile <name> [backend flags...] [--use]
one configure list [pair]
one configure current [pair]
one configure show <pair> --profile <name> [--reveal]
one configure use <pair> --profile <name>
one configure remove <pair> --profile <name>
one configure locale [auto|zh-CN|en-US]
one configure open

With no connections, bare one configure opens the setup wizard. With existing connections it shows a concise overview. show, use, and remove let terminal users select an existing connection; scripts keep explicit <pair> and --profile inputs.

Interactive Mode

For local human setup, use the wizard:

one configure
one configure add

The wizard first asks which service to connect, then asks for a connection name and the required service fields. Stable service IDs remain visible in automation commands. Secret fields use password-style input.

Scripts and CI should not wait for the wizard; pass the service ID, connection name (--profile), and service flags explicitly.

Supported pairs

pairpurpose
env/infisicalInfisical site URL + Universal Auth client id / secret
deploy/aliyun-ossAliyun OSS object storage
deploy/tencent-cosTencent COS object storage
deploy/aws-s3AWS S3
deploy/minioself-hosted MinIO
deploy/rustfsself-hosted RustFS
deploy/r2Cloudflare R2
deploy/kustomizeKubernetes kubeconfig + context
deploy/vercelVercel API token
deploy/cloudflareCloudflare API token
deploy/edgeoneTencent EdgeOne Pages API token
container/dockerGeneric Docker registry host, namespace, username, password
container/dockerhubDocker Hub username, password/token, namespace
container/ghcrGitHub Container Registry username, PAT, namespace
container/acrAliyun ACR region, username, password/token, namespace

env/dotenv does not need a profile; it is for local .env workflows. The S3-compatible deploy backends share one profile shape, but each provider has its own backend ID.

Examples

one configure add env/infisical --profile work \
  --client-id "$INFISICAL_CLIENT_ID" \
  --client-secret "$INFISICAL_CLIENT_SECRET" \
  --use

one configure add deploy/aws-s3 --profile web-prod \
  --region us-east-1 \
  --access-key-id "$AWS_ACCESS_KEY_ID" \
  --access-key-secret "$AWS_SECRET_ACCESS_KEY" \
  --use

one configure add deploy/kustomize --profile prod-k8s \
  --kubeconfig ~/.kube/config \
  --kubeconfig-context prod \
  --use

one configure add container/ghcr --profile ghcr \
  --namespace "$GITHUB_USER" \
  --username "$GITHUB_USER" \
  --password "$GHCR_PAT" \
  --use

Resolution order

When a command needs a profile, it resolves in this order:

  1. --profile <name>
  2. Project + environment binding in profile-bindings.json
  3. Workspace + environment binding in profile-bindings.json
  4. legacy Project binding in config.json#workspaces
  5. legacy Workspace binding in config.json#workspaces
  6. ~/.config/one/config.json#domain/backend.default

The environment-aware bindings are keyed by canonical Workspace root, environment, and (domain, backend). They store only a Profile name. The Dashboard UI offers dev, preview, and prod through ?env=; the core/API also accepts safe custom IDs supplied by other workflows. Global Settings Profile CRUD is not environment-scoped. An empty environment keeps the legacy chain.

one.manifest.json never stores a local Profile name. one configure use ... --workspace and --project remain compatible legacy bindings; use one serve when you need a distinct selection for each environment.

The same profile name can exist under different backends, for example prod under both deploy/aws-s3 and deploy/kustomize.

Storage

~/.config/one/
├── config.json             # non-secret Profile fields, defaults, legacy bindings
├── credentials.json        # secrets: clientSecret, accessKeySecret, password
├── profile-bindings.json   # v1: canonical root + environment -> Profile names
└── cache/                  # short-lived token cache

All three JSON files are machine-local and written as 0600; profile-bindings.json contains names only. None of them modifies or upgrades one.manifest.json. show masks secrets by default; only show --reveal prints cleartext.

Output schemas

commandschema
addone-cli/configure-add/v1
list <pair>one-cli/configure-list/v1
listone-cli/configure-list-all/v1
current <pair>one-cli/configure-current/v1
currentone-cli/configure-current-all/v1
showone-cli/configure-show/v1
useone-cli/configure-use/v1
removeone-cli/configure-remove/v1

Common errors

codefix
PROFILE_NONE_CONFIGUREDrun one configure add <pair> --profile <name> --use
PROFILE_NOT_FOUNDrun one configure list <pair> and use an existing name
PROFILE_BACKEND_INVALIDuse a profile whose backend matches the target project
PROFILE_FILE_INVALIDrepair the file named in the error context (config.json, credentials.json, or profile-bindings.json)
PROFILE_VERSION_UNSUPPORTEDupgrade One CLI or recreate only the incompatible machine-local file

Next