specific.hcl:
- Secrets - sensitive information that should never be committed to version control: API keys, database passwords, signing keys.
- Config - non-sensitive values that may vary between environments: log levels, feature flags, URLs.
specific.hcl, Specific knows exactly which ones are missing and prompts you for them when needed, both when starting specific dev and when deploying to the cloud. There’s no .env file to assemble by hand.
Secrets
Declare the secrets your application needs and reference them inenv:
specific.hcl
generated- whentrue, auto-generates a random string if no value is set. Useful for internal secrets like JWT signing keys.length- length of generated secrets (default: 64). Only applies whengenerated = true.
generated flag) must be given a value: locally in specific.local, in production during deployment. Generated secrets are auto-created on first run, and you can still override them manually.
Secret and config references cannot be interpolated into strings; use them as standalone
env values.Config
specific.hcl
default- value used unless overridden by an environment or locally.
Environment overrides
Override config values per environment withenvironment blocks:
specific.hcl
Local development: specific.local
Local secret and config values live in specific.local, a gitignored HCL file next to specific.hcl:
specific.local
specific dev prompts for any missing secrets and config values on startup. The file is never included in deployments.
Production
Duringspecific deploy, the CLI checks that every required value is set for the target environment and prompts you interactively for anything missing. You can enter values while builds are still running. Values can also be passed as flags: specific deploy --secret stripe_api_key=sk_live_....
- Secrets are stored securely, never logged, and injected into services as environment variables at runtime.
- Secrets are scoped per environment - setting a secret for
stagingdoes not affectproduction. - Update secrets and config anytime from the dashboard, without touching
specific.hcl. New values take effect on the next deployment.
Complete example
specific.hcl