Every team handles secrets badly. Secrets and passwords get shared in Slack, `.env` files sit in plaintext, or you depend on external secret management services that can fail during critical deployments, or even depend on other people to deploy things for you!
I believe your environment secrets should neither depend on external services or people, nor be shared in plaintext.
kiln is a command-line tool for managing encrypted environment variables. It lets you encrypt secrets into files that can be safely committed to version control, with role-based access control so team members can only decrypt the environments they're authorized for.
What kiln does:
- Encrypts environment variables using age encryption with SSH and age keys
- Role-based access control - each file can have different access levels
- Commit encrypted files safely to git with clean diffs
- Run applications or render config templates with automatic secret injection
- Works completely offline - no external dependencies
Instead of depending on external services, your secrets travel with your code and work everywhere. You define team access in a config file, encrypt your secrets, and everything just works.
Built as a single Go binary that uses your existing SSH keys or generates new age keys.
Try it out and let me know what breaks or what's missing. I'd love to hear how this fits into your team's workflows and what could make it better.
GitHub: https://github.com/thunderbottom/kiln
Docs: https://kiln.sh
coding_coffee•6h ago
Full disclosure: I know the OP personally from some past collaborations, but that doesn't change how genuinely impressed I am with this tool.