Skip to content
Checked

dotenvx alternative: Crunu vs encrypted .env files

Crunu and dotenvx compared: who holds the private key, giving and removing access, CI, audit and Armor, checked against the dotenvx README and pricing.

First rows of the table further down, checked on the date shown.

The difference in brief

dotenvx encrypts the values in your .env files with a keypair per file, so they can be committed with your code; anyone holding a file's private key can read it. Crunu keeps environments out of the repository and seals each environment key to each person, machine and pipeline, so access is removed per recipient.

dotenvx is the better pick when

  • You want encrypted .env files that travel with the code and need no server to decrypt.
  • You need a CLI and SDKs that also run on Windows.
  • You want an open-source core today and paid key custody with approvals later.

Crunu is the better pick when

  • You do not want one private key per environment passed between people, laptops and CI settings.
  • Removing someone should rotate keys and list the values they saw, without re-encrypting files by hand.
  • CI should sign in with OIDC instead of a private key stored as a pipeline secret.

dotenvx and Crunu, property by property

The same 14 questions we ask of every tool, answered from dotenvx’s own pages and from what Crunu does today. Yes is not always better: read the note.

All tools in one table
Yes
documented and available
Partial
with limits: on some plans, in preview or by hand
No
not offered
n/a
doesn’t apply, or isn’t documented publicly
Each cell links to the page it relies on, with the day we read it. Facts about Crunu link to the page of this site that describes them.
PropertydotenvxCrunuour productWhat it changes for you
Decrypted only on your devices
dotenvxPartial

Wherever the private key is set. Paid Armor adds enclaved keys and lists server-side decryption.

dotenvx.com ·
CrunuYes

Values are encrypted and decrypted only in the browser and the crunu agent.

crunu.com/security ·
If values are decrypted only on devices you control, a breach of the vendor’s servers doesn’t expose them.
Server handles plaintext values
dotenvxPartial

Core dotenvx has no server. Paid Armor plans list server-side decryption.

dotenvx.com ·
CrunuNo

The server holds no decryption key at any point. It still sees metadata such as names, emails and timestamps.

crunu.com/security ·
Whoever runs a server that handles plaintext, and anyone who breaks into it, could read what passes through.
Runs on your own infrastructure
dotenvxYes

The core CLI needs no service; encrypted .env files travel with your code.

github.com ·
CrunuPartial

Enterprise plan only, under a signed agreement: your own server on Docker, Cloudflare Workers, Vercel or Google Cloud Run.

crunu.com/self-hosting ·
You decide where the data lives and who operates the service. Several tools, Crunu included, offer this only on an enterprise plan.
Source code published
dotenvxYes

Core CLI under the BSD 3-Clause license; Armor is a paid service.

github.com ·
CrunuNo

Source code is not published.

crunu.com/security/threat-model ·
Published code can be read and audited by anyone, and kept running if the vendor changes course.
CI signs in with OIDC
dotenvxNo

The GitHub Actions guide uses an Enclaved Key and reads DOTENV_PRIVATE_KEY_CI from Actions secrets; no OIDC sign-in is documented.

dotenvx.com ·
CrunuYes

Service tokens bound by OIDC to repository, branch and environment on GitHub Actions, GitLab CI, Bitbucket or any issuer.

crunu.com/features/ci-cd ·
Pipelines get short-lived access tied to the repository, instead of a long-lived token stored in CI settings.
Keys change when someone leaves
dotenvxPartial

Armor plans list a key rotation command; re-keying when a member leaves is not documented.

dotenvx.com ·
CrunuYes

Removing a member rotates the keys of every environment they could read and lists values to reissue.

crunu.com/features/offboarding ·
When people hold decryption keys, removing access is complete only once those keys are replaced.
Separate key per environment
dotenvxYes

Each .env file has its own keypair, such as DOTENV_PRIVATE_KEY_PRODUCTION for .env.production.

dotenvx.com ·
CrunuYes

Each environment has its own key, sealed separately to each recipient's public key.

crunu.com/features/access-control ·
With a key per environment, access to development can’t turn into access to production.
Audit log
dotenvxYes

Paid Armor can audit every decrypt.

dotenvx.com ·
CrunuYes

Hash-chained organization log with one-click verification and JSONL export, kept 365 days by default.

crunu.com/features/audit-log ·
A record of who changed or fetched what tells you what a person or machine could have seen.
Links for people without an account
dotenvxn/a

Not documented publicly.

dotenvx.com ·
CrunuYes

Links for people without an account; the key stays in the URL fragment. Expiry, view limit and password.

crunu.com/features/access-links ·
Contractors and one-off handovers get a value without it staying in chat history.
Free plan or free to use
dotenvxYes

Core dotenvx is free and open source; Armor is paid, with a 5-day trial on Member.

dotenvx.com ·
CrunuYes

Free during early access.

crunu.com/pricing ·
A small team can start with real projects before anyone signs a contract.
Syncs values into other platforms
dotenvxNo

Encrypted .env files ship with the code; your infrastructure only needs the private key.

github.com ·
CrunuNo

No built-in sync to other platforms. CI can push values with crunu run as a recipe.

crunu.com/integrations ·
Pushing values into clouds and CI saves copying by hand, but the syncing service has to read them.
Dynamic secrets
dotenvxn/a

Not documented publicly.

github.com ·
CrunuNo

Not offered by design: generating credentials on demand needs a key on the server.

crunu.com/security/limitations ·
Credentials created on demand and revoked after a lease limit how long a leaked one works.
SSO and SCIM
dotenvxNo

Enterprise SSO is listed as a coming-soon add-on; Armor offers Google and GitHub login.

dotenvx.com ·
CrunuNo

No SSO or SCIM. People sign in with a password, a Secret Key and an optional second factor.

crunu.com/features/access-control ·
Sign-in and provisioning from your identity provider make joining and leaving one step.
Kubernetes integration
dotenvxn/a

Not documented publicly.

dotenvx.com ·
CrunuNo

No Kubernetes operator, Helm chart or CSI provider.

crunu.com/integrations ·
An operator or CSI driver delivers values into clusters without custom glue code.

Comparison in detail

On this page

The difference between dotenvx and Crunu is who holds the private key. dotenvx encrypts each value in a .env file with that file's public key, so the encrypted file can be committed and shipped with your code; the matching private key, such as DOTENV_PRIVATE_KEY_PRODUCTION for .env.production, decrypts it wherever it is set. Crunu has no key to pass around: each environment key is sealed separately to every person, machine and pipeline allowed to read it, and none of them ever sees anyone else's key.

dotenvx is a clever, small design built from tools developers already use: Git, .env files and public-key cryptography. This page is about what changes when a team, not one developer, has to manage who holds those private keys.

Who each one fits

dotenvx fits developers and small teams who like .env files and want them encrypted in Git, with nothing to run. One private key per environment on the server, in CI or in your OS keychain is all your infrastructure needs. The core CLI is open source under the BSD 3-Clause license, and there are SDKs for several languages. Its paid service, Dotenvx Armor, adds key custody, team access, approvals and audit on top.

Crunu fits teams where several people, servers and pipelines read different environments and the list changes. Nobody receives a copy of a production key to keep in a password manager. Each recipient gets its own sealed copy of only the environments it needs, and a departure rotates those keys in one step.

Who holds the private key

In dotenvx, the private key is the access list. Whoever has DOTENV_PRIVATE_KEY_PRODUCTION can decrypt .env.production, from any copy of the repository, including every commit in its history. Giving a new teammate production access means giving them that key. dotenvx does not document a re-key for when someone leaves. With the core CLI, the way to keep an old key from reading future changes is a new keypair, a re-encrypted file, and the new key replaced everywhere the old one was set: laptops, servers and every CI secret that held it. Dotenvx Armor lets a team share access without sharing the private key, but that is a paid service with its own trust model.

Based on dotenvx’s public documentation, checked Oct 30, 2026.

Crunu starts from the other end. A developer with access to development holds the development key and nothing else, so they cannot read production even with a full copy of the database. Machines and pipelines get their own keys too. When someone leaves, the member removal flow rotates every environment key they held, shows which versions they received and when, and lists the values to reissue at each provider. Nobody has to redistribute a new private key to everyone who stays.

Example. Kiteline is a fictional company.

The trade-off is that Crunu always involves a server. It stores only ciphertext and cannot decrypt, but it still sees metadata such as project names, email addresses and timestamps, as the limitations page explains. dotenvx core needs no server at all.

Where dotenvx is stronger

  • Secrets travel with the code. Encrypted .env files ship in the same commit and the same artifact as the code that reads them. With core dotenvx your infrastructure only needs one private key per environment. Crunu needs its agent and a server it can reach at least once per lease.
  • Windows and SDKs. dotenvx lists key storage in macOS Keychain, Windows Credential Manager and Linux Secret Service, plus SDKs for languages including Node.js, Python, Ruby, Rust and PHP. Crunu has no Windows agent and no SDKs; applications use crunu run.
  • Drop-in for dotenv. If your code already loads .env files, dotenvx changes very little. Crunu adds projects, environments and accounts.
  • Paid controls Crunu lacks. Armor lists human approval before decrypt, decrypting from a software enclave, and Google and GitHub sign-in. Crunu has access requests for environments, but no approval step for each decrypt and no SSO.
  • Open-source core. The dotenvx CLI is BSD 3-Clause. Crunu's source code is not published.

Moving from dotenvx to Crunu

  1. Create an account and save your Emergency Kit before anything else.
  2. Create a project for each application and an environment for each .env file you encrypt, such as development, ci and production.
  3. On a trusted computer that holds the private keys, write each file out in plaintext, for example dotenvx decrypt -f .env.production --stdout > production.env.
  4. Drag the plaintext files into the matching environments and invite the team, giving each person a role per environment.
  5. Replace dotenvx run -- <command> with crunu run --env <project>/<environment> -- <command>, enroll servers as machines and give pipelines service tokens with OIDC binding.
  6. Remove the DOTENV_PRIVATE_KEY_* values from CI secrets, servers and .env.keys files, delete the plaintext files, and remove the encrypted files from the repository once nothing reads them.

The encrypted files stay in Git history, readable by anyone who still holds an old private key. Reissue the values that matter at their providers after the move.

Other dotenvx alternatives

If you want to keep encrypted files in Git, SOPS encrypts values in .env, YAML, JSON and INI files with age, PGP or cloud KMS keys, and documents how to remove a key and rotate the data key. git-crypt encrypts whole files transparently, without a way to revoke access. SOPS vs Ansible Vault covers the trade-offs between file tools in more depth.

If you want a hosted vault where the vendor still cannot read values, Phase and Bitwarden Secrets Manager also encrypt on the client. Doppler and Infisical decrypt on their servers in exchange for syncs to many platforms. The who can decrypt guide compares them all.

More facts, row by row

Details beyond the 14 questions above, as this comparison states them.

dotenvxCrunu
Where secrets liveEncrypted values in .env files committed with your codeEnvironments in a vault outside your repository, stored as ciphertext
Who can decryptWhoever holds the file's private key; paid Armor can move keys off devices and lists server-side decryptionOnly the people, machines and pipelines an environment key is sealed to
Keys per environmentEach .env file has its own keypair, such as DOTENV_PRIVATE_KEY_PRODUCTIONEach environment has its own key, sealed separately to each recipient's public key
Giving someone accessShare the private key, or with Armor share access without the keyAn invitation, a fingerprint check with an admin, and a role on each environment
Removing someoneArmor plans list a key rotation command; re-keying when a member leaves is not documentedRemoval rotates the keys of every environment they could read and lists the values to reissue
CI pipelinesThe GitHub Actions guide encrypts with an Armor Enclaved Key and reads DOTENV_PRIVATE_KEY_CI from Actions secretsService tokens limited to chosen environments, optionally bound by OIDC to a repository, branch and deployment environment
Record of accessPaid Armor can audit every decryptHash-chained organization log, 365 days by default, with a record of which versions each person received
Where keys are keptA local .env.keys file, the OS secret store, a password manager, or ArmorAccount keys on your devices, from your password and Secret Key; machine keys with the agent
PlatformsCLI and SDKs, with key stores for macOS, Windows and LinuxWeb app, plus a CLI and agent for Linux and macOS
Source codeCore CLI open source under BSD 3-Clause; Armor is a paid serviceNot published
PriceCore free; Armor plans billed monthly by seats and included usage, with a 5-day trial on MemberFree during early access in the Crunu cloud; self-hosting on the Enterprise plan

Sources

Every page this comparison relies on, and the day we last verified it.

  1. dotenvx README · checked October 30, 2026
  2. dotenvx for AI tools (llms.txt) · checked October 30, 2026
  3. dotenvx pricing · checked October 30, 2026
  4. Dotenvx Armor · checked October 30, 2026
  5. dotenvx: GitHub Actions · checked October 30, 2026
  6. dotenvx license (BSD 3-Clause) · checked October 30, 2026

Questions about Crunu and dotenvx

Something else? Write to support@crunu.com

Is Crunu an alternative to dotenvx?

Yes, for teams that share encrypted .env files between people, servers and CI. Crunu replaces the per-file private keys with keys sealed to each person and machine, so access can be granted and removed one recipient at a time. If you work alone and like secrets traveling with the code, dotenvx may suit you better.

How do I move from dotenvx to Crunu?

Decrypt each file with dotenvx decrypt --stdout on a trusted computer, drag the plaintext files into Crunu environments, and switch dotenvx run to crunu run. There is no importer. Then remove the old private keys from CI, servers and .env.keys files.

Who can read a dotenvx file?

Anyone who has the matching private key, such as DOTENV_PRIVATE_KEY_PRODUCTION for .env.production, and a copy of the file. With paid Armor, keys can be moved off devices, access can require human approval, and Armor lists server-side decryption among its features.

Does Crunu work on Windows?

The Crunu web app runs in current versions of Chrome, Safari and Firefox, but the crunu agent and CLI are built for Linux and macOS only. If your team develops or deploys on Windows, dotenvx's CLI covers that today and Crunu does not.

Can CI decrypt without a stored key in Crunu?

Yes. A Crunu service token can be bound by OIDC to a repository, branch and deployment environment on GitHub Actions, GitLab CI or Bitbucket Pipelines, so a leaked token does not work without that pipeline's identity token. The documented dotenvx setup stores a private key as a CI secret.

Example. Kiteline is a fictional company.

Values are encrypted before they leave the device

The browser and the crunu agent encrypt and decrypt. The server stores ciphertext and signed documents, and holds no key that opens them.

  • What the server stores

    For each version: the encrypted data, the encrypted data key, the environment key version and the author’s signature. No values.

  • Where values appear

    Only on devices that hold the environment key: a member’s browser, or a machine where the crunu agent keeps them in memory.

  • A copied database isn’t enough

    The account key comes from your password and a Secret Key the server never receives, so a full copy of the database doesn’t help anyone guess passwords.

More comparisons

All comparisons

Try Crunu with one project

Free during early access. Sign up with your email; your account keys and Secret Key are created in your browser, and the server never sees them.