# simple usage
$ kvass set hello world
$ kvass get hello
world
# enumerate keys
$ kvass ls
hello
# store arbitrary files
$ kvass set logo < kvass.jpg
$ kvass get logo > kvass.jpg
# Its trivial to set up and operate kvass across multiple devices
$ ssh you@yourserver.com kvass config show
Encryption Key: 5abf59f5f1a2f3c998a4f592ce081a23e14a68fd8a792259c6ec0fc1e8fb1246 # <- copy this for the next step
ProcessID: 752176921
Remote: (None)
$ kvass config key 5abf59f5f1a2f3c998a4f592ce081a23e14a68fd8a792259c6ec0fc1e8fb1246 # set the same key for all your devices
$ kvass config remote yourserver.com:8000 # tell kvass where to find the server instance
# run "kvass serve" on your server using systemd, screen or the init system of your choice. (runit, anyone?)
# every set will now be broadcasted to the server
$ kvass set "hello from the other side" hello
$ ssh you@yourserver kvass get "hello from the other side"
hello
# and every get will check the server for updates
$ ssh you@yourserver kvass set hello 👋
$ kvass get hello
👋
# Good to know: All communication between the client and server is authenticated and encrypted using AES-256 GCM.
# remember the file we stored earlier? Let's get a shareable url for it!
$ kvass url logo
http://demo.maxnagy.com:8000/get?q=OQMwTQmFCz6xiWxFxt4Mkw
# you can also print the corresponding qr code directly to your terminal
kvass qr logo
# run kvass without arguments to get a nice cheat sheet of supported commands
$ kvass
kvass [--db=string]
Description:
kvass - a personal KV store
Options:
--db the database file to use (default: ~/.kvassdb.sqlite)
Sub-commands:
kvass ls list keys
kvass get get a value
kvass set set a value
kvass rm remove a key
kvass url show shareable url of an entry
kvass qr print shareable qr code of entry to console
kvass config set config parameters
kvass serve start in server mode