Setting up Infisical for local development
TLDR: brew install infisical/get-cli/infisical, then infisical login, then infisical init in your project. Organize secrets as project > environment > folders. Use infisical run --env=dev -- npm run dev to inject secrets without writing to disk. Works with Terraform/OpenTofu. Free cloud tier is enough for small teams.
Infisical is an open-source secrets manager built for developers. MIT license, project/environment hierarchy, CLI injection, web dashboard, self-hosting option, end-to-end AES-256-GCM encryption.
If you are coming from 1Password’s op CLI, I wrote about why it is not enough.
How secrets are organized
Organization└── Project (e.g., "my-project") ├── development │ ├── /database (DATABASE_URL, DATABASE_PASSWORD) │ └── /api-keys (STRIPE_KEY, SENDGRID_KEY) ├── staging └── productionSetup
brew install infisical/get-cli/infisicalinfisical login # opens browsercd ~/projects/my-projectinfisical init # links directory to projectDocs: infisical.com/docs/cli/overview
Usage
# Read a single secretDB_PASS=$(infisical secrets get DB_PASSWORD --env=dev --plain --silent)
# Inject all secrets into a process (nothing on disk)infisical run --env=dev -- npm run dev
# Inject from a specific folderinfisical run --env=dev --path=/database -- npm run devDocs: infisical.com/docs/cli/commands/secrets
Terraform/OpenTofu
Official provider with 1.1M+ downloads. Works with OpenTofu.
provider "infisical" { host = "https://app.infisical.com" client_id = var.infisical_client_id client_secret = var.infisical_client_secret}
data "infisical_secrets" "api" { env_slug = "production" workspace_id = "PROJECT_ID" folder_path = "/database"}Supports ephemeral resources (Terraform v1.10+) so secrets never end up in .tfstate files. Supports OIDC auth for CI/CD pipelines.
Cloud vs self-hosted
Cloud (recommended to start): Free tier with up to 3 projects, 3 environments, and 5 identities. Check current pricing for exact limits.
Self-hosted: Docker Compose (PostgreSQL + Redis + Infisical). Same CLI. Docs
What Infisical does not solve
No per-request approval popup. It authenticates once and trusts the session. No biometric integration. These limitations are not unique to Infisical. The real defense is isolating secrets from untrusted processes.
Spot something wrong?
Found a typo, a broken link, or something that could be better? I would love to hear from you. Drop me a message and I will fix it.