• Stars
    star
    1,326
  • Rank 35,449 (Top 0.7 %)
  • Language
    Go
  • License
    MIT License
  • Created over 3 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A personal key value store 🛼

Skate

A nice rendering of a roller skate with the words ‘Charm Skate’ next to it
Latest Release Build Status

A personal key-value store. 🛼

Skate is simple and powerful. Use it to save and retrieve anything you’d like—even binary data. It’s fully encrypted, backed up to the cloud (that you can self-host if you want) and can be synced with all your machines.

# Store something (and sync it to the network)
skate set kitty meow

# Fetch something (from the local cache)
skate get kitty

# What’s in the store?
skate list

# Pull down the latest data
skate sync

# Spaces are fine
skate set "kitty litter" "smells great"

# You can store binary data, too
skate set profile-pic < my-cute-pic.jpg
skate get profile-pic > here-it-is.jpg

# Unicode also works, of course
skate set 猫咪 喵
skate get 猫咪

# For more info
skate --help

# Do creative things with skate list
skate set penelope marmalade
skate set christian tacos
skate set muesli muesli

skate list | xargs -n 2 printf '%s loves %s.\n'

Installation

Use a package manager:

# macOS or Linux
brew tap charmbracelet/tap && brew install charmbracelet/tap/skate

# Arch Linux (btw)
pacman -S skate

# Nix
nix-env -iA nixpkgs.skate

# Debian/Ubuntu
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
sudo apt update && sudo apt install skate

# Fedora/RHEL
echo '[charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
sudo yum install skate

Or download it:

  • Packages are available in Debian and RPM formats
  • Binaries are available for Linux, macOS, and Windows

Or just install it with go:

go install github.com/charmbracelet/skate@latest

Other Features

List Filters

# list keys only
skate list -k

# list values only
skate list -v

# reverse lexicographic order
skate list -r

# add a custom delimeter between keys and values; default is a tab
skate list -d "\t"

# show binary values
skate list -b

Databases

Sometimes you’ll want to separate your data into different databases:

# Database are automatically created on demand
skate set secret-boss-key@work-stuff password123

# Most commands accept a @db argument
skate set "office rumor"@work-stuff "penelope likes marmalade"
skate get "office rumor"@work-stuff
skate list @work-stuff

# Wait, what was that db named?
skate list-dbs

# Oh no, the boss is coming!
skate reset @work-stuff

Linking

One of the most powerful features of Skate is its ability to link two machines together so they have access to the same data. To link two machines together just run:

skate link

And follow the instructions. Keep in mind that you'll need access to both machines.

Syncing

When you run skate set, data is encrypted and synced to the network. When you get, however, data is loaded from the local cache. To fetch any new data from the server just run skate sync.

Examples

Here are some of our favorite ways to use skate.

Keep secrets out of your scripts

skate set gh_token GITHUB_TOKEN

#!/bin/bash
curl -su "$1:$(skate get gh_token)" \
    https://api.github.com/users/$1 \
    | jq -r '"\(.login) has \(.total_private_repos) private repos"'

Keep passwords in their own database

skate set [email protected] PASSWORD
skate get [email protected]

Use scripts to manage data

#!/bin/bash
skate set "$(date)@bookmarks.db" $1
skate list @bookmarks.db

What do you use skate for? Let us know.

Self-Hosting

Skate is backed by the Charm Cloud. By default, it will use the Charm hosted cloud, but it’s incredibly easy to self-host, even if that’s just on your local network. For details, see the Charm docs.

If you've finished setting up your very own Charm Cloud, great. To make skate connect to your self-hosted instance, you'll need to change the CHARM_HOST environment variable to point to the domain/IP of where you hosted your Charm Cloud. If you would like to change anything else about the Skate client, you can do so by changing the Charm client environment variables.

Hey, Developers

Skate is built on Charm KV. If you’d like to build a tool that includes a user key value store, check it out. Skate has the same functionality as charm kv, but it uses a separate database.

If you have questions about the underlying file system Skate uses, head on over to our Charm FS FAQ.

Feedback

We’d love to hear your thoughts on this project. Feel free to drop us a note!

License

MIT


Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source

More Repositories

1

bubbletea

A powerful little TUI framework 🏗
Go
26,561
star
2

gum

A tool for glamorous shell scripts 🎀
Go
17,705
star
3

glow

Render markdown on the CLI, with pizzazz! 💅🏻
Go
15,692
star
4

vhs

Your CLI home video recorder 📼
Go
14,678
star
5

lipgloss

Style definitions for nice terminal layouts 👄
Go
7,832
star
6

bubbles

TUI components for Bubble Tea 🫧
Go
5,325
star
7

soft-serve

The mighty, self-hostable Git server for the command line🍦
Go
5,174
star
8

huh

Build terminal forms and prompts 🤷🏻‍♀️
Go
3,994
star
9

wish

Make SSH apps, just like that! 💫
Go
3,428
star
10

freeze

Generate images of code and terminal output 📸
Go
3,091
star
11

mods

AI on the command line
Go
2,830
star
12

pop

Send emails from your terminal 📬
Go
2,382
star
13

glamour

Stylesheet-based markdown rendering for your CLI apps 💇🏻‍♀️
Go
2,369
star
14

charm

The Charm Tool and Library 🌟
Go
2,351
star
15

log

A minimal, colorful Go logging library 🪵
Go
2,284
star
16

wishlist

The SSH directory ✨
Go
1,074
star
17

harmonica

A simple, physics-based animation library 🎼
Go
1,020
star
18

melt

Backup and restore Ed25519 SSH keys with seed words 🫠
Go
579
star
19

kancli

A tutorial for building a command line kanban board in Go
Go
172
star
20

vhs-action

Keep your GIFs up to date with VHS + GitHub actions 📽️
TypeScript
163
star
21

bubbletea-app-template

A template repository to create Bubbletea apps.
Go
131
star
22

x

Charm experimental packages
Go
125
star
23

keygen

An SSH key pair generator 🗝️
Go
109
star
24

taskcli

A tutorial for building a Taskwarrior-inspired task tracker in Go using glamorous CLI libraries
Go
97
star
25

inspo

Share and explore projects you can build with Charm libraries
93
star
26

wizard-tutorial

A basic wizard made with Bubble Tea and Lip Gloss. Follow along with the tutorial video for this project:
Go
81
star
27

tree-sitter-vhs

Syntax highlighting for VHS with tree-sitter 🌳
JavaScript
79
star
28

confettysh

confetti over ssh
Go
56
star
29

git-lfs-transfer

Server-side implementation of the Git LFS pure-SSH protocol
Go
50
star
30

catwalk

Open source 3D models from Charm 🧸
50
star
31

soft-serve-action

Synchronize GitHub repositories to your Soft Serve instance 🍦
47
star
32

promwish

Prometheus middleware for Wish
Go
41
star
33

meta

Charm's meta configuration files 🫥
25
star
34

hotdiva2000

A human-readable random string generator 👑
Go
25
star
35

homebrew-tap

Our homebrew tap 🍺
Ruby
23
star
36

scoop-bucket

Charmbracelet Scoop Bucket
15
star
37

nur

Nix
14
star
38

.github

Default community health files
2
star