An Amazon Glacier client implemented in Golang
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.gitignore Split into discrete packages Aug 18, 2013 Fix some formatting / typos Aug 28, 2012
aws.go WIP Aug 18, 2013
config.go WIP Aug 18, 2013
kelvin.ini Build config file if missing on start Sep 6, 2012
visit.go WIP Aug 18, 2013


Kelvin is an Amazon Glacier client implemented in Go. I chose Go for 3 reasons:

  1. I want to learn Go better.
  2. I have really enjoyed programming in Go so far.
  3. Go compiles to a static binary for Mac, Windows, and Linux

Glacier in Brief

Glacier is a service offering from Amazon designed for reliably storing large quantities of data in a long time frame. Glacier has two basic abstractions, a "vault" and an "archive." An archive is a discrete storage item - an arbitrary blob of data. A vault collects archives in a namespace. Amazon automatically encrypts data at rest using AES256 and it manages the keys for you. (You may optionally tell kelvin to encrypt your files before transmission using your own keys that you control.)


The first time you run kelvin from the command line, it will build a configuration file for you, prompting you to enter your Amazon AWS credentials.

It will also use a set of sensible default values.

If you want to reconfigure Kelvin, you can run kelvin --configure explicitly.

Basic Use

Kelvin accepts a list of pathnames or files much like GNU tar. You may exclude files or paths using the -x (or --exclude) flag. By default, kelvin will treat different path specifications as vault definitions.

/home/foo would become vault "hostname-home-foo"
/home/bar would become vault "hostname-home-bar"

and so on...

The default operation is to recurse through a path specification and upload files found therein as discrete archives. You may optionally tell kelvin to aggregate files into a ZIP style archive before transmission.

Vault Operations

create-vault <name>
delete-vault <name>

Retriving an archive