The first release of the platform Crunu runs on today. Values are encrypted and decrypted only in the browser and in the agent. The server stores ciphertext, public keys and signed records, and it has no decryption key at any point.
- Your account key is derived from your password and a Secret Key generated on your device. Neither one is sent to the server.
- A printable Emergency Kit holds your Secret Key and a QR code for setting up a new device.
- Second factor with authenticator apps or with passkeys and security keys.
- Approve a new device from one that's already signed in by comparing a six-digit code.
- Optional personal recovery code. Access returns after a waiting period, one hour by default, and the account owner is alerted.
- Changing your password, replacing all account keys after a device is compromised, and deleting your account all require your current password and Secret Key.
- The app locks after a period of inactivity, and copied values are cleared from the clipboard after a minute.
- Organizations with owners, admins and members. One account can belong to several organizations.
- Roles on each environment: Editor reads and changes all files, Reader reads them, Specific files sees only the files chosen for that person, and Operator adds machines and requests access for them without seeing any values.
- Invitations are valid for up to seven days. The new member verifies a key fingerprint with an admin, who then confirms them.
- Access profiles group environment roles under one name, so a change to the profile applies to everyone in it.
- Members can send access requests, and owners or admins approve or reject them.
- Offboarding in one flow: an exposure report of the versions the person received, a reissue checklist of the values to change at their providers, revocation of the tokens, links and codes they could still use, and rotation of their environment keys.
- When an admin leaves, the organization keys are rotated to a new key generation.
- Employee recovery: an admin can transfer the personal environments of a lost account to that person's new account.
- Projects hold environments, and every environment has its own key.
- Store
.env files, INI files such as ~/.aws/credentials, flat YAML or any text. Drag in files and whole folders.
- History keeps the last 100 versions of each environment. View and compare versions, and restore an old one as a new version.
- Compare two environments and copy selected values from one to the other.
- Search with ⌘K across names, services, paths and actions. Values are never searched.
- Every member has a personal project for their own secrets.
- An agent for Linux and macOS on amd64 and arm64.
- Machines enroll with a single-use enrollment code, and an admin approves each one after verifying its fingerprint.
- On Linux, a systemd service keeps decrypted environments in memory only and hands them to local programs over a socket that only its group can use.
- Machines keep working without a connection until their lease ends, 24 hours by default. Revocation wipes environments from memory.
- Commands to run a program with an environment's variables and to write an environment's files to disk with restricted permissions.
- Service tokens for CI, limited to specific environments, with a lease, a usage limit and optional network restrictions.
- A CI binding ties a token to GitHub Actions, GitLab CI, Bitbucket Pipelines or any OIDC issuer, down to the repository, branch and deployment environment.
- An install script that checks SHA-256 sums, Debian packages and signed self-update.
- Share links give people without an account the files you choose from an environment. The decryption key stays in the part of the link after
#, which never reaches the server.
- Expiring links stop working after a set time of up to 365 days or after a set number of views, which can be just one. Live links show the latest version of the files until you revoke them. Links can also require a password.
- The organization audit log is a hash chain with one-click verification and JSONL export. It is kept for 365 days by default.
- Alerts appear in the app and can be sent to notification channels: a signed webhook or email.
- One server for Docker on your own machine, Cloudflare Workers with D1, Vercel, Google Cloud Run and AWS App Runner. The App Runner script works only in AWS accounts where App Runner is still offered.
- Storage on SQLite, Postgres or Cloudflare D1.
- Move between platforms with a single export archive that contains no readable values.
- Signed releases of the agent and the web app, a reproducible web build, and a standalone HTML copy of the app that checks the hosted site against the signed release.
- A health check, metrics and a diagnostics tool for operators.