Open Source CLI Tool

Your command-line memory,
organized.

Stop memorizing complex CLI commands. Stop cluttering your .bashrc with aliases. Define once in YAML, access anywhere with fuzzy search.

Get Started
$ go install github.com/thassiov/cmdvault/cmd/cmdvault@latest
terminal
$ cmdvault
? Select a command:
docker list containers Show all containers
docker prune system Clean up unused resources
git checkout branch Switch to a branch (fzf)
k8s pod logs Stream pod logs
$ docker system prune -f
Deleted containers: 3
Total reclaimed space: 1.2GB

Everything you need

Powerful features to organize your command-line workflow

Fuzzy Search

Uses fzf if available, falls back to a built-in picker. Find commands instantly.

Dynamic Placeholders

Use {{port}} syntax for runtime values. Pass positionally or get prompted.

Smart Sources

Populate placeholder values from command output. Select containers, branches, pods via fzf.

Direct Aliases

Skip the picker entirely. Run cmdvault my-alias directly.

Execution History

Every run logged with timestamp, exit code, and duration for analysis.

Shell Integration

Tab completion and Ctrl+F keybinding for bash and zsh.

Simple YAML configuration

Define your commands once, use them forever

~/.config/cmdvault/commands/docker.yaml
commands:
  - name: container logs
    command: docker
    args: ["logs", "-f", "{{container}}"]
    description: Stream container logs
    placeholders:
      container:
        source: "docker ps --format '{{.Names}}'"

  - name: exec shell
    command: docker
    args: ["exec", "-it", "{{container}}", "/bin/sh"]
    description: Open shell in container
Usage
# Interactive - select from running containers
$ cmdvault container-logs
# Direct - pass container name
$ cmdvault container-logs nginx
# With extra flags
$ cmdvault container-logs nginx -- --tail 100

Ready to organize your commands?

Get started in seconds with a single install command.

$ go install github.com/thassiov/cmdvault/cmd/cmdvault@latest
View on GitHub