# 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. 🛼 *** ⚠️ As of v1.0.0 Skate operates locally and no longer syncs to the Charm Cloud. [Read more about why][sunset] and see [the v1.0.0 release notes](https://github.com/charmbracelet/skate/releases/tag/v1.0.0) for a migration guide. The Charm Cloud [sunsets][sunset] on 29 November 2024. [sunset]: https://github.com/charmbracelet/charm?tab=readme-ov-file#sunsetting-charm-cloud *** Skate is simple and powerful. Use it to save and retrieve anything you’d like—even binary data. ```bash # 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 # 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: ```bash # 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][releases] are available in Debian and RPM formats - [Binaries][releases] are available for Linux, macOS, and Windows Or just install it with `go`: ```bash go install github.com/charmbracelet/skate@latest ``` [releases]: https://github.com/charmbracelet/skate/releases ## Other Features ### List Filters ```bash # 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: ```bash # 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 ``` ### Store Location By default, Skate stores its databases in your operating system's user data directory. You can choose a different parent directory with `--store`: ```bash skate --store ~/.local/share/my-skate-store set kitty meow skate --store ~/.local/share/my-skate-store get kitty ``` You can also set `SKATE_STORE` if you want every command in a shell session to use the same store: ```bash export SKATE_STORE=~/.local/share/my-skate-store skate list-dbs ``` ## Examples Here are some of our favorite ways to use `skate`. ### Keep secrets out of your scripts ```bash 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 ```bash skate set github@password.db PASSWORD skate get github@password.db ``` ### Use scripts to manage data ```bash #!/bin/bash skate set "$(date)@bookmarks.db" $1 skate list @bookmarks.db ``` What do you use `skate` for? [Let us know](mailto:vt100@charm.sh). ## Feedback We’d love to hear your thoughts on this project. Feel free to drop us a note! - [Twitter](https://twitter.com/charmcli) - [The Fediverse](https://mastodon.social/@charmcli) - [Discord](https://charm.sh/chat) ## License [MIT](https://github.com/charmbracelet/skate/raw/main/LICENSE) --- Part of [Charm](https://charm.sh). The Charm logo Charm热爱开源 • Charm loves open source