Personal command-line tools in one repo: shell scripts, Python CLIs (PEP 723 + uv), optional Go and Swift builds, and shell modules. One ./toolbox install wires commands into bin/.
cd ~/toolbox
./toolbox install
# Shell (add to ~/.zshrc or ~/.bashrc)
source ~/toolbox/shell/init.sh
aws-ec2 list
cert-check example.com
netinfo- Unified CLI - Same command names no matter whether the implementation is Python, shell, Go, or Swift
- Python -
uv run --scriptwith inline dependencies (PEP 723), no shared venv - Swift / Go - Built by
toolbox installwhen those sources exist - Shell modules - Functions sourced into the current shell (
shell/modules/) toolboxCLI (Go) —install,list,clean,shell,bootstrap,deps; repo root./toolboxis a bash proxy that buildsbin/toolboxif needed
| Command | Description |
|---|---|
aws-ec2 |
EC2 list, describe, find SSH key file |
aws-eks |
EKS list, describe, kubeconfig |
aws-env |
Profile/region picker TUI; token status — used via aws.env shell wrapper |
aws-find-ip |
Find an IP across profiles and US regions |
aws-screen-monitor |
EC2 console screenshot loop during reboots |
aws-token-timeout |
AWS session token expiration |
saml2aws-op |
saml2aws with 1Password-backed JumpCloud creds |
ssm-connect |
Bubble Tea TUI, then aws ssm start-session |
| Command | Description |
|---|---|
cert-check |
TLS certificate inspection |
httpkit |
HTTP trace, probe, Cloudflare Rules Trace |
netbird-status |
NetBird VPN status |
netbird-up |
Connect NetBird |
netinfo |
Network interfaces (Swift; --plain for text) |
| Command | Description |
|---|---|
k8s-hpa-analyzer |
Inspect HorizontalPodAutoscaler objects |
k8s-restart-resource |
Rolling restart for Deployment or DaemonSet |
| Command | Description |
|---|---|
pd-incident |
One incident, multiple output formats |
pd-report |
Multi-service incident report for a time range |
pyduty |
Maintenance windows and service search |
| Command | Description |
|---|---|
brew-search |
Homebrew search helper |
merge-zsh-history |
Merge zsh history backups into the active history file, deduplicating by command |
nerdfont-install |
Nerd Font installer |
op-clip |
1Password clipboard helper |
tmux-exec |
Run commands in tmux panes |
upkeep |
Interactive package updater for Homebrew, uv, Cargo, and Go; see docs/upkeep.md |
vmrss |
Process RSS memory |
| Command | Description |
|---|---|
ssh-sc |
Interactive SSH key and host helper; see docs/ssh-sc.md |
tssh |
Open SSH connections in a dedicated local tmux session; see docs/tssh.md |
| Command | Description |
|---|---|
join-call |
Textual TUI for Teams deeplinks (macOS) |
| Command | Description |
|---|---|
ghrel |
Browse releases and download assets (TUI); see docs/ghrel.md |
| Command | Description |
|---|---|
mix-audio |
Combine audio files |
Longer guides (examples, env vars, scenarios) live under docs/. For the manager, bootstrap, toolboxctl, and shell.yaml, see docs/toolbox.md. For Terraform shell helpers (terraform.plan.save, MR plans), see docs/terraform.md. For Go command standards, see docs/go-cli.md. For Python, shell, Swift, and cross-tool metadata standards, see docs/tool-authoring.md. For HTTP tooling start with docs/httpkit.md, or see Documentation in AGENTS.md for the full list.
- macOS or Linux
- Go 1.25+ (builds the
toolboxbinary the first time; also used to build othercmd/*tools) - uv (Python scripts)
- macOS: Homebrew and
brew bundle(runbrew tap Homebrew/bundleifbrew bundleis missing), Swift / Xcode CLT (for Swift tools inscripts/) - Linux: your distro’s packages for
go,uv, and anything indeps/*.yaml(no Homebrew required)
-
Clone and enter the repo (adjust path if yours differs):
git clone https://github.com/rvwallace/toolbox ~/toolbox cd ~/toolbox
-
New machine: run
./bootstrap.sh(macOS: generates a tempBrewfilefromdeps/*.yamland optionalbrew bundle install; Linux: printsapt/dnfpaste lines). Seedocs/toolbox.md. -
Install commands into
bin/:./toolbox install
-
Source shell integration:
# ~/.zshrc or ~/.bashrc source ~/toolbox/shell/init.sh
-
Reload the shell or open a new terminal.
The repo root ./toolbox script runs the Go binary in bin/ (or builds it with go build).
./toolbox install # Symlinks, compile Swift/Go as configured
./toolbox list
./toolbox clean # Drop dead symlinks in bin/
./toolbox shell list # Modules with enabled/override/runtime state
./toolbox helpAfter source shell/init.sh:
bin/is onPATH- Modules under
shell/modules/load (honors~/.config/silentcastle/toolbox/shell.yamlwhenbin/toolboxexists) toolbox_reloadreapplies init after editstoolboxctlwrapstoolboxwith-r/-t(seedocs/toolbox.md)
| Module | Functions |
|---|---|
ansible.sh |
Placeholder functions hinting at uv tool install ansible-core/ansible-lint; no-ops once installed |
aws.sh |
aws.caller_identity; aws.env (set/profile/region/show/clear/token-status — wraps aws-env) |
chef.sh |
chef.env (set/clear/show/list) |
git.sh |
git.ignore.add plus git helper functions |
kube.sh |
k.env Kubernetes interactive helper |
sesh.zsh |
sesh cached completions |
terraform.sh |
terraform.plan.save, terraform.apply.save, tfswitch auto-switch hook |
tmux.sh |
tp popup helper |
toolbox/
├── README.md
├── CHANGELOG.md
├── AGENTS.md
├── CONTEXT.md
├── toolbox # bash proxy → bin/toolbox (builds with go if needed)
├── bootstrap.sh # deps + build on new systems
├── deps/ # toolbox.yaml + tools.yaml (brew / apt / dnf lists)
├── bin/ # gitignored; symlinks + compiled binaries
├── docs/ # Optional per-tool markdown guides (+ toolbox.md)
├── scripts/ # By domain: aws/, net/, k8s/, ...
├── cmd/ # Go CLIs (includes toolbox)
├── internal/ # Shared Go code used by multiple commands only
└── shell/
├── init.sh
├── toolboxctl.sh
└── modules/
- Add
scripts/<domain>/<name>.pywith#!/usr/bin/env -S uv run --scriptand a PEP 723 block. chmod +xthe file../toolbox install.- If the tool is OS-specific, add
toolbox-platformsmetadata as documented indocs/tool-authoring.md.
- Add
scripts/<domain>/<name>.shwith#!/usr/bin/env bashandset -euo pipefailas needed. chmod +x, then./toolbox install.- If the tool is OS-specific, add
toolbox-platformsmetadata as documented indocs/tool-authoring.md.
- Add
cmd/<name>/main.go. ./toolbox install(when the manager builds that path).- Follow
docs/go-cli.md: use Kong for CLI parsing/help; use Bubble Tea v2 for TUIs. - If the command is OS-specific, add
cmd/<name>/toolbox.yamlas documented indocs/tool-authoring.md.
See AGENTS.md for templates and conventions.
- Folders follow purpose (
scripts/aws/), not language - Command names are kebab-case
- Python: typer + rich where it fits; inline deps only
- Python, shell, and Swift tools may declare
toolbox-platformsmetadata; Go commands may declare platforms incmd/<name>/toolbox.yaml - Go: Kong for CLI parsing/help; Bubble Tea v2 for TUIs; Bubbles v2 and Lip Gloss v2 when needed
- Config:
~/.config/silentcastle/<tool>.json(or tool-specific files indocs/); toolbox shell modules:~/.config/silentcastle/toolbox/shell.yaml(seedocs/toolbox.md) - Cache:
~/.cache/silentcastle/
MIT — see LICENSE.