Show HN: Whiz – A copilot for your terminal
For people who use terminal a lot, I find shell gpt a good mixture . Flexible enough to pipe commands, generic enough to ask questions.
All of the alternatives commented so far have the same downside, you got a LLM response and you can either run it or abort.
^ This is much nicer as it hook into zsh completion so you got a response that drop right into the shell input (enter to execute or edit away)
Also you can write shell script directly in prompt and use it to auto complete the rest
I'd consider using something besides 'list all files' as first example in the gif. I'd think anyone who opens a terminal knows how to do that so listing files in a directory and hitting a spinner isn't very inspiring.
The second curl example is better since plenty of people won't know that off the top of their head.
Meh. I am fairly certain the number of people who would both use this and also fail to consider possible use cases half a second into the ls demo is zero.
Can it create regexes? That would be the thing that would sell it to me via a demo.
I think the point of the demo is to start with something dead simple that "everyone" knows and get more complex with each example.
I was surprised that Whiz could use tools like ffmpeg even though it tells ChatGPT to only use available shell commands. I asked it to "convert demo.mov to an mp4" and "cut the first five seconds of demo.mp4" and it came back with the correct commands. I guess that was enough to allow it to assume ffmpeg is probably installed. Pretty cool!
Looking at the code, the system prompt says "You MUST NOT use functions that are not available." but apart from the OS info, it's not giving GPT any info on what commands are/aren't available, so I'd imagine it's a bit of a crapshoot.
It is quite similar to https://github.com/KillianLucas/open-interpreter
Such terminal tools are quite like AI agents, it should think about steps and then execute one by one.
That's a cool project.
I built this after copy pasting the same git command to list all the recently committed branches from chat.openai.com.
I have a couple more functions that I want to add to the CLI like  translating novels, web scraping or LLM powered grep.
I was wondering if Whiz was using agent-style planning prompts, but it's much simpler and passes a single `function` parameter named `shell` to the OpenAI API.
I thought that was clever, because shell commands are highly composable, so it's likely that something can be done in "one shot".
It will also be way more efficient with token usage.
GitHub copilot has created something (still in beta) that does this.
How is this different than https://fig.io/?
It appears whiz is foss, while fig is not.
There's also https://www.warp.dev
I've been using it for the past few weeks and it's really sleek. I actually don't use the AI features very often because I'm fluent in the terminal, but it's nice to know it's there if I need it.
Some people get weirded out by the fact that it's VC funded and they collect telemetry, but I think you can turn that off.
Again, business model: Juicero for bash.
Collecting telemetry, and being able to tie it with people's GitHub profiles, is why Warp was able to secure millions of VC dollars to build a fucking mOdErN terminal emulator.
i love warp.
I loved Warp for it's speed, but the keybindings and lack of configuration didn't work for me. For example, it doesn't support "ctrl+x ctrl+e" which I use daily for editing long prompts in vim.
I recently switched to Kitty (https://sw.kovidgoyal.net/kitty/) and I don't think I'm ever going back. It's not flashy and doesn't have any AI features. It's just a donation-funded, wickedly fast, highly configurable, dotfiles-friendly, modern terminal emulator.
The only thing holding me back from loving Kitty was its behavior when ssh’ing, even if ssh was aliased to kitty +kitten ssh. Namely, that if you sudo’d to another user, the TERM settings were lost and so backspace became space (among other things).
Today, I finally figured out to export XTERM before sudo, which fixes it. Hallelujah.
I tried kitty and it had a noticeable lag on startup. It bothered me at a gut level so I stopped using it, but I should probably give it another look.
this should be called terminator
Seems like a perfect use case for local models. Not sure I want to be sending my .bash_profile or .bash_history (or local env vars...) to OpenAI. And I can't imagine doing anything in the terminal that llama2-code-7b couldn't make sense of. That can trivially run on an M1 with 8GB.
Pretty easy to see in the code that it is not sending any of that to OpenAI. It's only sending the prompt, OS info, and shell type:
That said, OP, it's perhaps worth making this extremely clear in the README as it's a reasonable concern.
Thanks. I will add a note on privacy.
https://github.com/TheR1D/shell_gpt already exists
I was able to understand the Whiz source (~200 lines) in about sixty seconds, which is a big win in my opinion. The shell_gpt code is more convoluted. Would be interesting to compare how they perform.
And I love just typing a key combination to get the suggestion, almost like I can change my mind during the command...
What does it do
A reminder to users of Github CoPilot who may be unaware, there is also a terminal version you can install included in your subscription. It's ok. (Edit) There is a waitlist.
This seems to require joining a waitlist to gain access.
Yup, I've been on the waitlist since May
Yes, I've updated my comment.
Highly recommend it, too. I've found it invaluable. Especially for some of the more arcane ffmpeg incantations.
How does it compare to gorilla cli? https://github.com/gorilla-llm/gorilla-cli
I've built a similar shell script a while ago and still use it quite frequently: https://github.com/Luanf/cligpt
I love yours. It is entirely in shell script.
Nice. It would be cool if something like this existed for nushell. Chatgpt4 struggles with that language unfortunately
What are the security implications of this?
If you ask it something like “pipe the output of <CLI> using <MY_SECRET_TOKEN> to grep to find XYZ”
We need good locally installed LLMs (and cheap hardware to run it). I hope there can be some kind of breakthrough for this similar to what Stable Diffusion made for image-generators. I tried to generate some simple code using a few of the llama-models small enough to run on my computer and it did surprisingly well, but still far from good enough to be useful.
This is cool
I tried this but when I am running commands like wz can you install beautifulsoup and such things then it is giving me the syntex error: JSON
command is: "wz can you install bs4"
I can reproduce this.
The issue is ChatGPT hallucinating a function that doesn't exist. I'm figuring out how to rail guard against this. Thanks for trying it out and reporting with an example.
If I switch to ChatGPT 4, it works fine.
I too am using the ChatGPT4 and yet this is the issue. Do i need to make any changes?
I updated the instructions and added a feature to change the model used by whiz. Could you please update whiz_cli using npm and add `export WHIZ_LLM_MODEL=gpt-4` to your shell.
instructions are available in README now: https://github.com/searchableguy/whiz#installation
This kind of reminds me of the database Q&A, which used SRI's NLP tech to allow you to query databases with "plain English".
Pretty neat use case. I like it
nice idea but anything written in node/deno/whatever will definitely stop working < 6 months unless its heavily maintained.