A CLI tool to streamline SSH connections, inventory management, and PostgreSQL administration
Tsukuyo is a command-line tool designed to automate and streamline various operational tasks. It provides a unified interface for managing SSH connections (both standard SSH and Teleport SSH), maintaining inventories of connection details, executing predefined scripts, and administering PostgreSQL databases. The goal is to reduce manual steps in common workflows and improve productivity.
- SSH Connection Management — Standard SSH & Teleport SSH with tunneling support
- Inventory Management — Hierarchical data store with JSONPath queries, database & node inventory
- Script Management — Store, organize, search, and execute shell scripts with env vars
- PostgreSQL Administration — Role/database CRUD, permission management, and configurable targets
- Architecture & Data Storage — Tech stack and storage schema details
- Testing — Test coverage and how to run tests
- Changelog — Release notes and version history
- Go 1.22 or higher
- For TSH functionality: Teleport client installed and configured
git clone https://github.com/arung-agamani/tsukuyo.git
cd tsukuyo
go build -o tsukuyo
cp tsukuyo /usr/local/bin/ # or ~/bin/ if in your PATHtsukuyo ssh <node-name> # connect
tsukuyo ssh <node-name> --tunnel 8080:localhost:80 # tunnel
tsukuyo ssh <node-name> --with-db # tunnel with DB
tsukuyo ssh list # list nodesSee full docs: SSH Connection Management
tsukuyo tsh # interactive connect
tsukuyo tsh --with-db # connect with DB tunnelSee full docs: SSH Connection Management
tsukuyo script add # add script (interactive)
tsukuyo script list # list all scripts
tsukuyo script search <query> # search scripts
tsukuyo script run <name> # run a script
tsukuyo script run <name> --with-env-file .env # run with env varsSee full docs: Script Management
tsukuyo inventory query db.my-db.host # query value
tsukuyo inventory set app.debug true # set value
tsukuyo inventory delete db.test-db # delete value
tsukuyo inventory db set prod-pg pg.example.com # add DB entry
tsukuyo inventory db list # list DB entriesSee full docs: Inventory Management
# Target management (kubectx-style switching)
tsukuyo postgres target add # add target (interactive)
tsukuyo postgres target list # list targets
tsukuyo postgres target use # switch active target
# Role management
tsukuyo pq role list # list roles
tsukuyo pq role create <name> --login --password <pw> # create role
tsukuyo pq role delete <name> # delete role
# Database management
tsukuyo pq db list # list databases
tsukuyo pq db create <name> --owner <role> # create database
tsukuyo pq db delete <name> # delete database
# Permission management
tsukuyo pq perm grant --role app --on-table users --privs SELECT,INSERT
tsukuyo pq perm show app_user # show role permissions
tsukuyo pq perm audit # security audit
tsukuyo pq perm template apply readonly --role reader --db myappSee full docs: PostgreSQL Administration
- ✅ Hierarchical inventory with JSONPath queries
- ✅ Enhanced DB inventory with recovery & CLI flags
- ✅ Tag-based filtering for DB tunnels
- ✅ PostgreSQL role & database CRUD
- ✅ PostgreSQL permission management & audit
- Add support for multiple SSH keys
- Add configuration options
- Expand TSH integration capabilities
- Add support for other script languages (Node.js, Python)
- Add import/export functionality for inventory data
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Almost the whole entirity of this project is done through vibe coding, though I know what I'm doing, because in some moments, the LLM models are just plain dumb.
