Cubby

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.

Installation

The repository defines two binaries in cmd: a client and a server. By default, the client will use the publicly available server at public.cubbycli.com, 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:

host: https://public.cubbycli.com
port: 3737
options:
  viewer: editor
  body-only: true
user:
  email: jason
  password: passwordhere 
crypto:
  symmetric-key: sometexthere 
  mode: symmetric

Next, run:

cubby signup

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

Cubby subcommands

put

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

push

Appends a single line of text to a blob.

Usage: cubby push <path> <new line>

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

get

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

List blobs.

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

Usage: cubby list

search

Search blobs.

Searches titles, tags, and unencrypted body text.

Usage: cubby search <substring>

Example: cubby search email

signup

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

GitHub

View Github