https://crates.io Build Status dependency
status

share-secrets-safely (sheesy) is a solution for managing shared secrets in teams and build pipelines.

Like pass, sy allows to setup a vault to store secrets, and share them with your team members and tooling. However, it wants to be a one-stop-shop in a single binary without any dependencies except for a gpg installation, helping users to work with the gpg toolchain and workaround peculiarities.

asciicast

Installation

Please read the installation notes here.

Getting Started

The first steps showing on how to use the vault with a complete example and detailed explanations can be found in the book.

Project Goals

Non-Goals

Why would I use sheesy over...

You will find various and probably biased and opinionated comparisons in our book. However, it's a fun read, and please feel free to make PRs for corrections.

Caveats

Roadmap to Future

As you can see from the version numbers, this project dispenses major version generously. This is mainly because, for the sake of simplicity, there is only a single version number for the CLI as well as all used libraries.

Effectively, you can expect the CLI will change rarely, and if it does only to improve the user experience. The more tests we write, the more certain shortcomings become evident.

The vault library and its types will change much more often, but we would expect it to settle from 5.0.

Roadmap to 3.1

Substitution-Superpowers

Make it easy to generate property-sets by merging structured files together, and make said context available to a handlebars powered engine to perform substitutions.

This allows to bring together context owned by various entities into a single aggregated one, with the possibility for later contexts to override earlier ones.

With this capability, it's also possible to substitute secrets into files, for example like this: sy sub base.json sub/ours.yaml <(sy vault show secret.yaml) < deployment.yml | kubectl apply -f -

Roadmap to 3.2

Adding the merge subcommand

The merge subcommand allows to combine json or yaml files. This is useful to partition context and data according to your needs, yet use all of the values in combination for substitution. This is particularly useful if some of that content was just decrypted from a vault.

Roadmap to 3.3

Adding the extract subcommand

The extract capability makes it feasible to store secrets in structured files like YAML or JSON, as it allows to extract pieces of data in various ways. Think jq but with native support for YAML files.

Roadmap to 3.4

Improved UX and basic Web of Trust controls

Roadmap to 4.0

Sub-Commands as standalone programs

Even though the main binary should by sy as before, the code should be structured to provide cli versions of the respective subcommand, e.g. vault-cli. That way, people can also use special-purpose sub-programs directly without having a binary that contains all the other cruft.

This can be useful to make pass standins more approachable, and also build custom sy binaries with just a sub-set of the functionality (for example, without pass stand-in capability).

Roadmap to 4.1

Add the pass subcommand

sy aims to be as usable as possible, and breaks compatiblity were needed to achieve that. However, to allow people to leverage its improved portability thanks to it being self-contained, it should be possible to let it act as a stand-in for pass.

Even though its output won't be matched, its input will be matched perfectly, as well as its behaviour.

Roadmap to 5.0

Web of Trust for everyone

The web-of-trust is powerful if used correctly, and helps to assure you are encrypting only for trusted keys.

Development Practices

Maintenance Guide

Making a release

As a prerequisite, you should be sure the build is green.

Making a deployment

As a prerequisite you must have made a release and your worktree must be clean, with the HEAD at a commit.

For safety, tests will run once more as CI doesn't prevent you from publishing red builds just yet.

Making a new Asciinema recording

Even though the documentation is currently updated with every push to master (to allows fixing the existing docs easily), the eye-candy on the front page needs to be regenerated too.

As a prerequisite, you will need an installed binary of asciinema. Please make sure your player is already linked to your account via asciinema auth.