sake
sake copied to clipboard
:robot: sake is a task runner for local and remote hosts
sake
sake is a command runner for local and remote hosts. You define servers and tasks in a sake.yaml config file and then run the tasks on the servers.
This readme is also accessible on sakecli.com.
sake has tons of features:
- auto-completion of tasks, servers and tags
- SSH into servers or docker containers
sake ssh <server> - list servers/tasks via
sake list servers|tasks - present task output in a compact table format
sake run <task> --output table - open task/server in your preferred editor
sake edit task <task> - import other
sake.yamlconfigs - and many more!

Interested in managing your git repositiories in a similar way? Check out mani!
Table of Contents
- Installation
- Building From Source
- Usage
- Create a New Sake Config
- Run Some Commands
- Documentation
- License
Installation
sake is available on Linux and Mac.
-
Binaries are available on the release page
-
via cURL
curl -sfL https://raw.githubusercontent.com/alajmo/sake/main/install.sh | sh -
via Homebrew
brew tap alajmo/sake brew install sake -
Via GO install
go install github.com/alajmo/sake@latest
Auto-completion is available via sake completion bash|zsh|fish and man page via sake gen.
Building From Source
Requires go 1.18 or above.
- Clone the repo
- Build and run the executable
make build && ./dist/sake # To build for all target platforms run (requires goreleaser CLI) make build-all
Usage
Create a New Sake Config
Run the following command:
$ sake init
Initialized sake in /tmp/sake
- Created sake.yaml
Following servers were added to sake.yaml
Server | Host
-----------+---------
localhost | 0.0.0.0
Run Some Commands
# List all servers
$ sake list servers
Server | Host
-----------+---------
localhost | 0.0.0.0
# List all tasks
$ sake list tasks
Task | Description
------+-------------
ping | Pong
# Run Task
$ sake run ping --all
TASK ping: Pong ************
0.0.0.0 | pong
# Count number of files in each server in parallel
$ sake exec --all --output table --parallel 'find . -type f | wc -l'
Server | Output
-----------+--------
localhost | 1
What's Next
Check out the examples page for more advanced examples and the recipes page for a list of useful recipes.
Documentation
- Examples
- Recipes
- Config Reference
- Command Reference
- Project Background
- Changelog
- Contributing
License
The MIT License (MIT)
Copyright (c) 2022 Samir Alajmovic