Show HN: Yakari – Interactive TUIs for CLI Tools

github.com

15 points by vlandeiro 17 hours ago

Hi HN!

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?

[1] https://docs.astral.sh/uv/

laserbeam 8 hours ago

So, the point is to make CLIs discoverable and aid with writing commands? Cool!

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.

  • vlandeiro 16 minutes ago

    Yes, you got the point!

    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.

    [1] https://news.ycombinator.com/item?id=42456417#42460134

rochak 6 hours ago

Does this work for all CLIs? There is Gooey [1], a similar Python project that works, but only for Python CLIs.

[1]: https://github.com/chriskiehl/Gooey

  • vlandeiro 23 minutes ago

    Yes this works for all CLIs but there’s a caveat: yakari requires a TOML configuration file that defines the menu for that CLI. For instance, here’s the definition of the git menu [1].

    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

xingwu 11 hours ago

Either I'm stupid or there are some serious UX flow problems, halfway through the video I'm still totally lost what it is doing.

  • vlandeiro 34 minutes ago

    Thanks for the feedback! Seems like the video is confusing to several people so I’ll work on improving it.

    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?