Repository navigation
TUI or not TUI - future of goose-cli crate #5958
Replies: 5 comments 19 replies
|
I'll say please do not move to an embedded terminal. One of the nice things about goose is that I can use it where I want. I like my editor (emacs). It has a terminal emulator. I can trivially use goose right in the context where I am already programming. Almost all of the outputs from goose are things I'd like to interact with in my editing environment. I also like how much I can do from the CLI (though I'd like to see more). Goose is the easiest LLM harness I've found to integrate into my existing environment. I can fully integrate project management where I already manage my projects. I can launch goose with different profiles depending on the project I've loaded. E.g., I can decide to launch the process with a different LLM depending on workload and language, based on project metadata I've already got. Additionally, I can read the last tool call(s) from the terminal buffer and open the edited files in a new buffer. I've got lots of small workflow enhancements that are only possible because I can use goose in emacs. Heavier TUIs make this harder to do. I like that Goose is pretty much a linear chat history, and that I can easily interrogate the state of Goose and sessions from non-interactive CLI commands. Please keep this around and only implement any TUI enhancements as a shell on top of functionality that lives in the CLI and existing minimal TUI. |
|
To add to the goose use modes, I primarily use goose:
So, the TUI mockup I put together handles both of these better or equally well vs the cli version of goose because that's where I spend all my time. wrt integration with an editor, I think something like ACP is probably the right solution. The TUI, unlike the CLI, runs a real goose-server and would support ACP. Using an agent scaffold inside a terminal emulator inside of an editor inside of a terminal emulator does seem like a bit of a niche use case. To be honest, I love the simplicity of the cli, but the ux does leave a bit to be desired. I wouldn't hate to support "cli-mode" from a unified cli/tui interface that uses goose-server as a backend, though. Lower maintenance than (cli + with its own backend) + (electron ui/TUI with a shared goose-server backend) |
|
@greggyb interesting and thanks for writing up thoughts, I think I get what you mean. I would kind of view TUI as a drop in for what you get with In the next release there is native terminal integration: which will let you do:
and similar, which means you stay in terminal flow (your real terminal, not a faux one) and goose tracks what is going on in the background (ie commands you run). This may or may not air in emacs flow (may not be needed if you already have a separate native terminal/emacs terminal flow you like which should stay as well). In some ways a TUI feels a little retro (I love synthwave retro, still not sure about TUIs, which may try to do too much when you already have native workflows that should just work, which I hope the new goose term feature helps with as well). Like tyler shows, we don't have to make things all TUI all the time. I would be interested if there are any emerging TUI clients. I saw this: https://github.com/iOfficeAI/AionUi which is a generic (well potentially) ACP GUI client, if there was a TUI client that talked ACP (there isn't last I looked) is one way to have many front ends. but to your point @greggyb, I think having a compact way that neatly embeds in terminals and things like emacs is a thing we want to keep one way or another. |
|
@codefromthecrypt just pointed this out to me https://willmcgugan.github.io/announcing-toad/ - so there is some signal there may be a future TUI client for any agent (presumably using ACP or similar) |
|
I side with Greggyb that Goose is in a very specific niche and does a very good job at it. I also integrated Goose all into my work life, and it is working better than anything before! For example, in Helix editor I added special macros to select parts of my source code and put it in the context. Together with #5823, this is now my daily driver! TUIs are IMO great until they ain't. For example, I came from Crush, and it has a stunningly sexy UI, but once I found even simple things as copy pasting don't work, it just becomes so hard to workaround, whereas now I can simply change the pipeline in my editor of choice. I do think however choice is important and if the TUI is a separated crate that can be maintained (i.e. having goose-cli and goose-tui) making sure that there's a clear distinction can be a good idea. |

Uh oh!
There was an error while loading. Please reload this page.
Have been discussing and exploring with @DOsinga and @tlongwell-block about a text-ui for goose, as goose-cli is "old" now (well, almost a year):
#5831 is a demo implementation, some starter discussion questions:
All reactions