I wanted to share Yakari, a tool I built to make command-line interfaces more approachable through interactive TUIs. If you've ever forgotten CLI flags or needed to look up command syntax, this might help.
Yakari turns complex commands into interactive menus. Users can navigate through options with simple key presses instead of memorizing complex command structures. If you've used Emacs and Magit (or any other Transient) before, the interface will feel familiar.
Features: - Transform CLIs into guided menus - Create custom menus for any CLI - Support for flags, named parameters, choices, and interactive inputs - Command history and contextual help
You can try it out without installing thanks to uv [1]:
uvx --from yakari ykr demo # Play with a demo showcasing different argument types
uvx --from yakari ykr git # Try the git menu in any git repo
The project is built with Python using Textual and is heavily inspired by Emacs' Transient.I'd love feedback from both CLI users and developers. What tools would you find most useful to have menus for? How could this make your terminal workflows easier?
Here's what's missing. A persistent view of what the user is actually typing. The menus are all nice, but if this is fancy autocomplete I always want to also see the partial command that I've been typing so far. At least, there's no such view in the demo video.
PS. The demo video is very confusing.
Re: what the user is typing should be displayed in the bottom left of the window as they are typing. It’s not really fancy autocomplete, rather it’s keyboard shortcuts.
I answered to a different comment [1] that found the video confusing as well. Let me know if that explanation helps or if the UX is still confusing to you. I’ll need to come up with a better video example.
Gooey is much more automated but limited to Python because it requires adding a decorator to the CLI code.
In other words, yakari is just a command runner with a nice — but apparently confusing — UI.
[1] https://github.com/vlandeiro/yakari-menus/blob/main/git.toml
I can explain the first steps of the video here:
1. ykr git starts the TUI configured for git. This display a menu where each option is accessible via a keyboard shortcut.
2. User inputs “b”, which opens the “branch” menu.
3. User inputs “l” which runs the command to list all the branches and display them to the user. Hitting ctrl+r hides the result window.
4. Still in the branch menu, the user inputs “c” to create and switch to a new branch. This prompts them with a branch name and the user inputs “demo”. Submitting the branch name calls git checkout -b demo and display the results to the user.
The remaining steps show similar interactions to add and commit a file, as well as deleting a branch.
Does that help understanding how the UX works or are there still confusing parts?