Why not just type the command you're trying to type and tab autocomplete it?
1. You're limited to binaries and executable scripts in your $PATH
2. Many commands do not have bash-completion support.
vi mode for bash, bash-completion are both innovations trying to tackle this optimization of workflow. I see tools like dmenu and slmenu as better ways to give richer UI and create/reuse workflows. GP's request for `allows fuzzy search of program names, tags and a short description` is highly doable in dmenu/slmenu if not already done [0]. Not so much with bash, vi mode for bash, bash-completion.
May also use i3-dmenu with fzf:
urxvt -title "fzf-menu" -e bash -c 'i3-dmenu-desktop --dmenu=fzf'