A Node.js CLI tool with handy utilities for "experienced" developers and sysadmins - so you don't even have to move a muscle π.
bot0x kbp <port>
/bot0x killbyport <port>
: Kill process by portbot0x gitclean
: Clean up merged git branches (except main/master)bot0x flushdns
: Flush DNS cache (macOS, Windows, Linux)
bot0x --help
bot0x kbp 3000
bot0x gitclean
bot0x flushdns
From NPM:
npm install -g bot0x
bot0x welcome
For local development:
npm link
You can enable first-class shell aliases for all your bot0x
commands β just like the original github-copilot-cli, which this project drew inspiration from β using the built-in alias
command.
To make aliases available in every shell session, add this line to your .zshrc
, .bashrc
, or similar shell profile:
# Enable bot0x subcommands as top-level shell commands (e.g. 'kbp', 'gitclean', 'flushdns')
eval "$(bot0x alias -- "$0")"
This will let you run kbp 3000
or gitclean
directly in your shell, as if they were standalone commands, while still using the single bot0x
binary under the hood.
Bot0x commands fall into two categories:
- Shell Environment Commands: Commands that need to modify your current shell environment (like AWS profile switching)
- Regular Commands: Commands that don't need to modify your shell environment (like
ccio
,kbp
, etc.)
Add both of these to your .zshrc
or .bashrc
:
# 1. Set up commands that modify your shell environment
eval "$(bot0x shellScript --print)"
# 2. Set up all other commands as shell aliases
eval "$(bot0x alias)"
This creates:
-
Shell functions for commands that modify your shell environment:
awssr <env>
- Switch AWS role and context (dev, staging, prod, etc.)awsp <profile>
- Switch AWS profileawsdr <role>
- Unset AWS credential environment variablesawsdrAll
- Run awsdr && awsrmfaa && kubectx for all environmentsawsrmfaa <role>
- Assume AWS MFA role automaticallyawsmfa <profile>
- Generate AWS MFA token
-
Shell aliases for all other commands, including your new
ccio
command for opening CircleCI.
Note: The
alias
command automatically excludes commands that requireeval
, so there are no conflicts between the two.
If you prefer, you can save the shell environment functions to a file:
# Save the shell functions to a file
bot0x shellScript --print > ~/.bot0x-env.sh
# Then in your .zshrc or .bashrc:
source ~/.bot0x-env.sh
eval "$(bot0x alias)"
# Use shell functions for environment commands
awssr dev
awsp default-root
# Use regular aliases for other commands
ccio
kbp 3000
gitclean
- Why?
- Faster workflows (type
kbp 8080
instead ofbot0x kbp 8080
) - Shell completion and history for subcommands
- Feels like a suite of first-class tools
- Faster workflows (type
- How does it work?
- The built-in
alias
command emits shell functions for each subcommand, which forward tobot0x
. - Inspired by the GitHub CLI's alias system (see this blog post).
- The built-in
Note: This is optional. You can always use
bot0x <command>
as normal.
- Each command lives in its own module in
lib/commands/
- Uses commander for CLI parsing
- Uses shelljs for shell commands
- Uses chalk for colorful output
bot0x/
βββ bin/index.js # CLI entry point
βββ lib/commands/
β βββ killbyport.js
β βββ gitclean.js
β βββ flushdns.js
βββ package.json
βββ README.md
To use bot0x
globally from any terminal during development, run:
npm link
This symlinks your project as a global CLI, so you can run bot0x
and all its subcommands from anywhere. This is also required for the alias integration to work as expected.
- After running
npm link
, you can testbot0x
,kbp
,gitclean
, etc. from any directory. - Changes you make to your code will be reflected immediately (no need to re-link).
MIT