Install
Install the mxkey CLI on macOS, plus the bundled agent skill for Claude Code, Cursor, and Codex.
mxkey is macOS only. It wraps /usr/bin/security, which only exists on
macOS, so Linux and Windows aren't supported.
Homebrew (recommended)
brew install bonnard-data/mxkey/mxkeyThe single-line form combines brew tap and brew install. Future updates
land via brew upgrade mxkey. Or the two-step:
brew tap bonnard-data/mxkey
brew install mxkeyThe bundled agent skill is installed at $(brew --prefix)/share/mxkey.
Symlink it into your editor to enable:
ln -sfn "$(brew --prefix)/share/mxkey" ~/.claude/skills/mxkeyManual
git clone https://github.com/bonnard-data/mxkey.git
cd mxkey
bash install.shinstall.sh is idempotent. It:
- Checks the OS is macOS (bails otherwise).
- Resolves the bundled
mxkeyscript (<repo-dir>/mxkey). - Makes it executable.
- Creates
~/.local/bin/mxkeyas a symlink to the bundled script. - Verifies
~/.local/bin/is onPATH(prints a fix snippet if not). - Runs
mxkey listas a sanity check.
Verify
which mxkey # should print ~/.local/bin/mxkey
mxkey --version # mxkey 1.0.0
mxkey list # "(no secrets stored)" on a fresh installPATH fix
If mxkey: command not found after install, add ~/.local/bin/ to your shell rc:
# zsh (default on macOS)
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
# fish
set -U fish_user_paths $HOME/.local/bin $fish_user_pathsInstall the agent skill
Drop the repo into your editor's skills directory so Claude Code, Cursor, or Codex can call mxkey on your behalf.
# Claude Code
ln -sfn "$(pwd)" ~/.claude/skills/mxkey
# Cursor (path may differ)
ln -sfn "$(pwd)" ~/.cursor/skills/mxkeyThe skill is a symlink to the cloned repo; git pull updates it automatically.
See Agent skill.
Uninstall
Just delete the symlink:
rm ~/.local/bin/mxkeyTo also wipe stored secrets (nuclear option):
rm -rf ~/.config/mxkey
security dump-keychain login.keychain-db 2>/dev/null \
| grep -oE 'mxkey\.[^"]+' \
| sort -u \
| while read -r svc; do
security delete-generic-password -s "$svc" >/dev/null 2>&1 || true
done