Cubby is a secure blob storage tool optimized for command-line users that can function as a personal organizer, configuration mechanism, or publishing system, among many other things.

In Cubby, users can read or write blobs like so:

cubby put "janes phone number" 2125551212 
cubby get "janes phone number" # opens in $EDITOR by default (vim, emacs, etc.)

All blobs are encrypted on the client side and only ciphertext is stored on the server.


The repository defines two binaries in cmd: a client and a server. By default, the client will use the publicly available server at, but users can choose to run a private server instead.

Creating a config file

Create a cubby-client.yaml file in your $HOME directory with contents as follows:

port: 3737
  viewer: editor
  body-only: true
  email: jason
  password: passwordhere 
  symmetric-key: sometexthere 
  mode: symmetric

Next, run:

cubby signup

You should see a success message and be ready to go.

Cubby subcommands


Puts a new blob into Cubby.

Usage: cubby put <key> <value>

Example: cubby put myemail "[email protected]"

Optional parameters include:

  • -a: attach file to blob, e.g. -a file.txt
  • -2: add blob as a child to another blob (specified by colon-delimited path), e.g. -2 path:to:parent
  • -g: add a tag, e.g. -g work
  • -X: add a TTL, e.g. -X 365d


Appends a single line of text to a blob.

Usage: cubby push <path> <new line>

Usage: cubby push notes "TODO: buy thanksgiving turkey"


View and update a blob.

get opens the blob’s body contents in the viewer configured in options.viewer. By default, this is set to editor, which opens the blob in your system’s default editor (as defined by $EDITOR). It can also be set to stdout or viewer for read-only use cases.

Nested blobs can be retrieved by using colon-delimited paths, e.g. root-blob:child-blob.

Usage: cubby get <key>

Example: cubby get myemail


List blobs.

list shows all active blobs, intended to illustrate parent-child relationships.

Usage: cubby list


Search blobs.

Searches titles, tags, and unencrypted body text.

Usage: cubby search <substring>

Example: cubby search email


Signs up a user identity.

By default, this subcommand takes the username and password from your cubby-client.yaml file. Be sure to set up this config file before running signup.

Usage: cubby signup


View Github