Infisical

infisical.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

An open-source secrets manager: environment variables per project and stage, with a CLI that injects them into a process, plus rotation and access rules.

Promptfree, for everyone, and the only version there is
Build me the secrets manager I actually need instead of a hosted Infisical: environment variables per project and stage, injected into a process, with an audit log.

Read this first, and take it seriously. This is the one thing on the list where running it yourself is riskier than paying: a managed instance is patched by somebody whose job it is, and a secrets manager with an unpatched hole hands over everything at once. If you build it, keep it small, keep it off the public internet, and keep it updated. For many people the right answer is SOPS with an age key in the repository — no server at all, and nothing to breach.

STACK
- Node 20+ with Fastify
- SQLite through better-sqlite3, WAL mode
- Encryption from libsodium or the platform's own primitives. Never a hand-rolled construction
- A small CLI that fetches secrets and injects them into a child process
- Caddy in front, reachable only over a private network or a VPN

THE DATA MODEL
- projects: id, slug, name, created_at
- environments: id, project_id, slug, name, position — development, staging, production
- secrets: id, project_id, environment_id, key, value_encrypted, nonce, version, comment, is_deleted, created_by, created_at
- secret_versions: id, secret_id, value_encrypted, nonce, version, changed_by, at — append-only; a rotated value keeps its history so a rollback is possible
- folders: id, project_id, environment_id, parent_id, name — secrets grouped by path
- machine_identities: id, name, project_id, environment_ids_json, token_hash, expires_at, ip_allowlist_json, revoked_at
- access_rules: id, principal_kind, principal_id, project_id, environment_id, path_prefix, permission
- audit_log: id, actor_kind, actor_id, action, project_id, environment_id, secret_key, ip_hash, at — append-only, enforced by a trigger, and never containing a value
- approvals: id, project_id, environment_id, change_json, requested_by, status, approved_by, at

ENCRYPTION
- Every value encrypted at rest with authenticated encryption and a random nonce per record
- The master key comes from the environment or, better, from the host's own key store — never from the database, and never checked in
- Envelope encryption: a per-project data key, itself encrypted under the master key, so rotating the master key does not mean re-encrypting everything
- Decryption happens only when a value is served to an authorised principal, and never in a background job that logs
- The threat model written out in the README: what an attacker with the database file gets, what one with the machine gets, and what one with a leaked token gets. If you cannot write those three sentences, the design is not finished

ACCESS
- Human users through single sign-on where possible, with short sessions
- Machine identities with tokens that expire, are scoped to a project and environment, can be restricted by source address, and are revocable instantly
- Default deny, with rules by path prefix so a service reads only its own secrets
- Production is a separate environment with its own rules, and reading a production secret is always audited and optionally requires approval
- No shared accounts, because an audit log full of 'deploy' answers nothing

THE CLI, WHICH IS HOW IT IS ACTUALLY USED
- `run -- <command>`: fetch the secrets, put them in the child process's environment, execute. The values never touch the disk
- A local cache, encrypted, with a short life, so a brief outage of the server does not stop a deploy — and an explicit flag to require freshness
- Export to a dotenv file only with a deliberate flag and a warning, because that file is the thing you were trying to stop existing
- Diff between environments, which is how the missing variable in production gets found before it is found by a customer
- Everything works from CI with a machine token in the runner's own secret store

ROTATION
- A secret has a version; writing a new value keeps the old one
- Rotation is: write the new value, deploy, confirm, retire the old. The tool tracks that lifecycle rather than pretending a swap is atomic
- Dynamic secrets for databases if you want them — issue a short-lived credential on request and revoke it after. This is genuinely useful and genuinely a lot of work; skip it unless it earns its place
- Every secret has a last-rotated date and an optional maximum age, with a report of what is overdue

LEAK PREVENTION
- Values never appear in a log, an error message, an audit row or an HTTP response that was not an authorised read
- The API refuses to return a value in a URL, only in a body
- A pre-commit hook and a CI check scanning for anything that looks like a secret in the repository
- Redaction by value match in every log path

OPERATIONS
- .env for the server itself: DATABASE_PATH, BASE_URL, MASTER_KEY_SOURCE, SESSION_SECRET, OIDC_*
- Migrations on boot, each once
- Not exposed to the public internet. Behind a VPN or an identity-aware proxy, and if that is impossible, behind mutual TLS
- Nightly backup — encrypted values, which is what makes the backup safe to store off-site — and a tested restore
- Update discipline: dependencies watched and patched promptly. Write that in the README as an operational requirement, not a suggestion

WHAT MATTERS MOST
The threat model, the audit log and where this runs. Write the three sentences about what an attacker gets before writing code, keep it off the public internet, and audit every read. And be honest with yourself about whether you will keep it patched — if the answer is no, use SOPS and a key file, which has no server to attack.

Give me the repository, the CLI, migrations, .env.example, and a README that opens with the threat model and the honest recommendation.

What you lose

  • A managed instance that stays patched, which matters more here than anywhere else on this list
  • Dynamic secrets and rotation for databases and cloud providers
  • Approval workflows and an audit log on the paid tier

If you would rather not build

  • HashiCorp Vault, for dynamic credentials

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$6/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Infisical

$0

The product itself, self-hostable with Docker Compose.

Infisical/infisicalfree · open source

SOPS

$0

Encrypted secrets committed to the repository; no service to run.

getsops/sopsfree · open source

Why this verdict

our own opinion · changed only by a person

76/100

Verdict yes at 76 because self-hosting is easy. The rotation runbook the prompt asks for is the thing most teams lack, tool or no tool.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Infisical

answered from the record above

Is Infisical free?

No — the plan we track is $6 a month. Pro at around $6 per identity per month billed monthly on the cloud; the core is free to self-host.

Can you replace Infisical by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 76 out of 100, build time one session. Read what you lose before you decide.

How much does Infisical cost?

$6 a month on Pro — $72 a year. Recorded 10 Aug 2026.

What do you lose by replacing Infisical?

A managed instance that stays patched, which matters more here than anywhere else on this list; Dynamic secrets and rotation for databases and cloud providers; Approval workflows and an audit log on the paid tier. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Infisical?

Yes: Infisical, SOPS. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 56 in Dev tools

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc