cmdkit is a terminal-first command vault for the CLI snippets you need often enough to keep, but not often enough to memorize.
It works well as a personal local command library, but it can also load shared community packs from the repo. That means one user can keep everything private, while another can use the same app as an open source command library with contributions from others.
Links:
- npm: @wahlstrommm/cmdkit
- GitHub: wahlstrommm/cmdkit
- Issues: Report a bug or suggest a pack
npm install -g @wahlstrommm/cmdkit
cmdkitOr with Bun:
bun install -g @wahlstrommm/cmdkit
cmdkit- Keeps rarely used commands close without turning your notes into a mess
- Works as a private local command vault
- Also supports shared open source command packs
- Makes copy-first command reuse fast from the terminal
- Adds just enough structure with tags, safety levels, placeholders, favorites, and recents
- Browse commands in an interactive TUI
- Search, sort, and filter by tag or source
- Copy commands to the clipboard with fallback output
- Run explicitly runnable commands with confirmation
- Store local commands in YAML
- Import and export local command packs
- Track favorites and recent commands locally
- Ship starter community packs for Git, Docker, Node, Linux, SSH, Postgres, MySQL, WordPress, React, and curl
cmdkit does not require a hosted backend or a community repo to be useful.
- Local commands live in
~/.config/cmdkit/commands/*.yaml - Local metadata lives in
~/.config/cmdkit/metadata.json - Repo command packs live under
commands/
If ~/.config/cmdkit is not writable, cmdkit falls back to an internal writable directory. You can also override the home directory explicitly:
CMDKIT_HOME=/path/to/cmdkit-home bun run src/index.tsbun install
bun run src/index.tsUseful CLI commands:
cmdkit search wordpress
cmdkit copy wp.plugin.list
cmdkit run mysql.login
cmdkit new
cmdkit import ./my-commands.yaml
cmdkit export ./cmdkit-export.yaml
cmdkit validatecmdkit is developed with Bun, but the published package now ships a built dist/ bundle plus a standard bin/ wrapper. That means:
- contributors can keep using Bun for development
- published installs can run through the packaged Node entrypoint
- CI verifies tests, validation, and build output
Recommended release flow:
bun run check
bun run build
npm publish --access publicIf you want even tighter packaging later, the next step would be a standalone artifact or release binaries per platform.
Library:
j/kmoves in the command listo,Enter,Space, or→opens details/opens searchgopens tag filtersopens sort menutopens source filterncreates a new local command?opens helpqquits
Details:
←/→moves between actionsTabmoves to the next actionEnteruses the selected actionc,r,e,fjumps to copy, run, edit, favoriteborEscreturns to the library
Each command entry supports:
idtitledescriptioncommandtagsplaceholderscopyablerunnablenotesshellsplatformssafetysourceauthorupdatedAt
Example:
- id: wp.plugin.list
title: List WordPress plugins
description: Show all installed plugins with status.
command: wp plugin list --path={{wp_path}}
tags:
- wordpress
- wp-cli
placeholders:
- name: wp_path
prompt: WordPress path
default: /var/www/html
copyable: true
runnable: true
notes: Requires wp-cli to be installed.
shells:
- bash
- zsh
platforms:
- linux
- macos
safety: safe
source: community
author: cmdkit
updatedAt: 2026-03-21- Local mode always works, even if repo packs are missing
- Local commands override community commands with the same
id - Commands can be filtered by
all,local, orcommunity
copyis the primary flowrunalways asks for confirmationwarninganddestructivecommands are visually flagged- If clipboard support is unavailable,
cmdkitprints the rendered command so it can still be copied manually
Open source contributions are welcome, but they are optional. cmdkit should stay useful even for users who only want a personal local vault.
If you want to contribute shared commands:
- Add or update a YAML file under
commands/core/ - Run
bun run src/index.ts validate - Test the command from the TUI or CLI
See CONTRIBUTING.md for the command guidelines.
Current starter packs include:
gitdockernodelinuxsshpostgresmysqlwordpressreactcurl
- More command packs
- Better packaging for npm/global install
- Richer TUI polish for large libraries
- Team pack workflows
- Optional pack sharing beyond the local-first model