Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Show HN: Wave – Modern Open-Source Terminal (macOS and Linux) (github.com/wavetermdev)
82 points by sawka on Dec 19, 2023 | hide | past | favorite | 90 comments
Hi HN, I’m Mike, the founder and creator of Wave, a cross-platform open-source terminal that supports inline rendering, modern UI, and persistent sessions. I love the command line; I’ve been using it for over 25 years, starting with a Linux box I made with spare parts in my college dorm room. But while other devtools have been modernized, the terminal has been stuck, with the same basic functionality for over 40-years.

What if your command line terminal could display more than just text? That’s crazy right (I can hear the screams of thousands of graybeard sysadmins). Not all the time, but maybe just when you want it to. Like displaying Markdown, Images, ChatGPT output, or CSVs (that you can copy from and paste directly into Excel). Or running a VSCode style editor inline in your terminal that has mouse support, copy/paste, indentation, and syntax highlighting support right out of the box for when you need to edit your remote .bashrc file.

That’s why I built Wave, to keep what’s best about the command line while adding the power of the open web. Wave has inline renderers for terminal content and remote files to help keep you in flow and reduce context switches. We have 5 initial plugins: remote file editor, markdown viewer, image viewer, CSV viewer, and a ChatGPT interface, with more coming soon. We’re proudly built on Electron (just like VSCode, Slack, and Discord) with all of the network code and heavy lifting done in a local Go backend. This enables us to deliver a consistent cross-platform experience and the ability to leverage high-quality web components for our UI and plugins.

Openness is a core part of our mission. Our code is open source (Apache 2.0), and our plugins are written in TypeScript/React. We don’t require an email, login, or payment to use our terminal (it is free as in speech and as in beer). We’re also proud to be shipping a Linux version of Wave alongside the MacOS version (with a Windows WSL port coming soon). Yes, we do plan on making money in the future, through opt-in team collaboration features. Basic rule of thumb is if it runs on your own computer with your own resources it will be free, if it hits our servers using our resources it will be paid.

But Wave isn’t just a simple renderer trick. We’ve been working on Wave for over a year and have over 1200 commits. We’re on a mission to improve terminal DevEx across the board and fix all sorts of terminal micro-frustrations. Wave manages your remote SSH connections, seamlessly restoring sessions, persisting sessions, and giving you a searchable contextual history of all the commands you’ve run, across all of your sessions and remote machines.

If you’re interested, please give it a try and give us a Star on Github to show your support for Open Source! Feedback, bugs, feature requests, and contributions are all welcome. Happy Hacking!

https://www.waveterm.dev | https://github.com/wavetermdev/waveterm



I'm in the same boat as many -- not particularly excited by the idea of a new terminal, but curious enough to take a look and (unusually) a smidge interested after seeing the website. Well done, you've got further with me than most "reinvent the terminal" projects :).

Issue 88 is a blocker, though, I'm afraid. I may be monolingual, but I still need to be able to use "international" characters.

In the interests of being interested, I did install the cask and I have some feedback :P.

I have four symbols printed on my (Macbook Pro, UK) keyboard that don't render in the output: "±§€£". Curiously, they do render in the input.

My profile files are apparently too big for Wave to process. So I ssh'd to another machine and was slightly disconcerted to see it installing software on first connection? Not something I expected, I'm afraid.

In conclusion: I can't use it, and I'm not sure I want to if it's going to automatically install software on other machines.


> […] I ssh'd to another machine and was slightly disconcerted to see it installing software on first connection?

That sounds really disturbing and immediately turns me off this project (as well as not having the need for a VC-backed terminal).


the helper program is completely open source (waveshell) it is similar to the shell scripts or additions to your rc files that other modern terminals might add when connecting to a remote machine to support advanced features. the helper does not need any additional permissions, does not open any ports, runs only for the duration of the connection, and communicates exclusively via stdout/stdin over your standard ssh connection.


It absolutely should not be running commands on a remote host without prompting first!


agree in principle, but i will split some hairs here. if you type "ls" into your local terminal, there's an implicit agreement that it will run the remote "ls" program. the helper program facilitates that in the same way that any other terminal + ssh + shell combo does. it only runs commands in response to your activities in the terminal.


yes

if ls is installed on the remote host

and if it is not, the command should fail

this appears to be about telemetry, pure and simple


absolutely no telemetry in the helper, full stop. you can inspect the code yourself.

we do hear the feedback though and are working on a popup/notification that will prompt you before we push the helper program for the next release.


Does it, or will it ever fetch waveshell over the network on demand?


so youve been linux user for 25 years but dont see a problem here huh?


Oh so we're holding it wrong. Does 'modern' mean pre-enshittified?


i don't see any difference between this and what saltstack or ansible are doing. both can run a command on remote machines, and to do that they automatically connect to the machine and copy a program to be run there.


The biggest difference is that I install and execute salt and ansible in order to remotely install software, and I had no expectation that establishing an SSH connection would do that.


you install it locally, but not remote. then you run commands that get executed remotely by way of some tools that get automatically copied to the remote machine via ssh.


I do. And I do it in expectation that this is what will happen, because that's the whole point. Installing software on remote machines is normal for provisioning tools, but decidedly not normal for SSH clients.


zsh support and international character support are our top two issues right now. I know the intl chars can work, we just didn't do enough international testing before launch. sorry to hear that it didn't work out of the box for you (the big profile files are also on our radar).


I'm not sure "international" is the right characterisation (sorry, not sorry). "Non-ASCII", perhaps? Or explicitly list which codepages you do support?

It's not like there are no people in the US who use characters with accents. Or, indeed, that everyone reading your comment considers themselves to be "international".


> We don’t require an email, login, or payment to use our terminal (it is free as in speech and as in beer).

This excites me. I was excited to try a new terminal last week and I had to sign up. I wouldn't do that, so I went back to the default macOS one. I'll give Wave Term a try!

It's clear you have put a lot of thought into the product and its delivery after reading your message above -- it is noted and appreciated!


> so I went back to the default macOS one

I find iTerm to be the standard among macOS developers.


Have been doing dev work on Apple platforms in some capacity or another for over a decade now, and though I’ve tried iTerm several times I always find myself coming back to the stock Terminal. Stock just feels smoother and less quirky somehow.

That said, my terminal usage is nowhere near as heavy as it is for some.


ya, i love iTerm. been a loyal user for more than 10 years. that is until Wave of course :)


For me iTerm was definitely too slow, alacritty is IMO a bit faster. Also heard some good things about Kitty, but that has too many bells and whistles for me.

But nothing can beat foot [0]. But it's only for wayland, so I need to use alacritty on macOS.

[0] https://codeberg.org/dnkl/foot/


Just in case you haven't tried it and want another option, Wezterm runs anywhere and does pretty much everything. But not AI/webapp stuff.


I am regularly behind the trends :)


> What if your command line terminal could display more than just text? That’s crazy right (I can hear the screams of thousands of graybeard sysadmins).

The screams are because they remember the last... 3 or 4 off the top of my head? terminals that said that, and then fell over when you tried to cat a log file because they were using javascript in the hot path for displaying text. So how's your performance and responsiveness? Throughput and latency both matter a lot here.

OTOH, full marks for actually doing FOSS and not requiring a login to use a local terminal; you've already avoided at least some of the obvious landmines that would make me run screaming.


All of the tty processing, networking, and stream processing is done in Go, so it is fast. There is obviously more performance work to do, but in some situations our model can actually be faster than other terminals. If you cat a 1GB file in Wave, it actually runs quickly because the frontend can drop frames, while the Go backend is buffering the stream (so to answer your question, JS is not in the hot path, only Golang is).


> the frontend can drop frames, while the Go backend is buffering the stream

Surely that's not great. Dropped frames are terrible for following what's happening on the screen and even worse for scrolling.


mosh is also dropping frames if it needs to. only happens when the network speed can't keep up with the data being sent through


Yeah exactly. That's meant to make a laggy remote session feel a little less stuttery, which in many cases improves the experience.

It's not the same as doing that between 2 local layers.


well, i have had local sessions hang because they had to much output, so i kind of see the benefit locally too.


One terminal emulator with a bad implementation of buffering and outputting text doesn't make a different bad one good.


This looks really interesting!

My first thought is, how often does all the structure you added get in the way? With plain text (most terminals), it's easy to grab any chunk of text. With structured text, UI elements often get in the way. As an example, in Chrome's devtools console, it's frustrating that

    for (let i = 0; i < 5; ++i) { console.log(i); }
produces this

    0   VM45:1
    1   VM45:1
    2   VM45:1
    3   VM45:1 
    4   VM45:1
instead of this

    0
    1
    2
    3
    4
When I try to copy the text. Does Wave run into this kind if issue?


I hear you. That is a problem with a lot of (bad) UIs and why I think people love text-UI (because it is harder to screw up). First, I don't want to get rid of the text UI -- you can always render your commands using the traditional terminal interface. We just want to provide an option to display the output in a richer way. I think Github does a good job of this. You can view a file with line numbers and annotations on the side, but copy/paste won't grab that content because of how the HTML is structured. We hope be similarly attentive to things like that (but of course it is still a WIP).


> We’re proudly built on Electron (just like VSCode, Slack, and Discord) with all of the network code and heavy lifting done in a local Go backend. This enables us to deliver a consistent cross-platform experience and the ability to leverage high-quality web components for our UI and plugins.

For my curiosity, why electron in a day when Tauri exists, or Wails since you seem to already be in the golang ecosystem?


We're looking into Wails! Definite benefits with tighter integration with Go (and we can ditch the node server).


Did you really call your company "Command Line Inc."? That's awesome!


Yes, and we own commandline.dev! I wanted, and got, the email address mike (at) commandline.dev :)


The ui looks extremely cluttered when all I want is a terminal. I am not using most of the features most of the time.

Also, this is a frontend for bash, which I don't use. So it's pretty much useless for me right now. zsh support is coming, but again this is a frontend for specific shells. What happens if I switch to fish, for example? I don't want to have to change terminals is I use a different shell.

Also, electron. Yuck.


Love this. Though I was cautious initially - just the OSS route with "true" free was very welcome. Out of curiosity - I was surprised there was no mention of Warp.dev here (which seemed to be making waves with all that funding. Pun unintended). Again no need to mention them as this is about you but just curious given all their (and other modern terminal apps) touting their own modernity.


Also surprised to to see Warp get any mentions.


Downloaded the MacOS application and gave it a go. Tried to add a connection to a remote FreeBSD server, using ssh key auth, and got an error:

error connecting to remote: invalid packet received from mshell client: raw[Bad : modifier in $ '~'.]

Also tried the default at setup 'sudo' for local, but the window to input the password wouldn't keep focus, so I could never input the password.


Hey Mike. This looks great. Just want to say, unrelated but, I'm a big fan of your Hibiki HTML(https://www.hibikihtml.com/) and wish you would resume work on it at some point. Any plans on that front or is it feature complete? Will you fix bugs if they are discovered? Any way, will try Wave out this weekend, keep up the good work.


I think I ran into this same bug: https://github.com/wavetermdev/waveterm/issues/161

I try to cd and it just leaves me in ~.

Using on mac.

Looks cool, but obviously pretty limited use when you can't cd. :-)


i'd love to figure out what is causing this as we haven't been able to repro it. if you don't mind adding a comment to the issue with anything novel or interesting in your .bashrc / .bash_profile or your machine setup it would be much appreciated.


As macOS uses zsh by default, does waveterm do this too? As you ask for the bash files instead of the zsh files.


Zsh is not yet supported, it's very high on our list of priorities!


Hi, I commented on the github issue, but maybe no zsh support is the problem. When I `echo $SHELL` I get back `/bin/zsh` in Wave.


I tried it, it’s nice overall, I thought it’s CPU intensive but it turned out it’s because I have htop running in wave terminal, running it outside however seems to be normal. My only criticism would be the UI, it’s clunky and I loathe the side-menu design in sites let alone in my everyday terminal, especially when there’s a menu on top already, and the logo is there despite if you tried to hide the menu, additionally, the whole “prompt-looking” design at the bottom isn’t great either, would prefer to have it on top and the history just go on the bottom instead, but those are my personal preference from 5min test.


I can see this is built on Electron.

It has tabs, but I'm using the i3 tiling window manager and Alacritty. This setup basically removes the need for tabs, so any terminal app with tabs would essentially get in the way.

I switch between windows with the keyboard.


> terminal DevEx across the board and fix all sorts of terminal micro-frustrations

I believe you believe this such a thing exists - I'd like to read/hear your thoughts on this - in my bubble of system administration, I'm not sure I do feel the pain/unique value proposition (not saying it doesn't exist).

> remote file editor, markdown viewer, image viewer, CSV viewer, and a ChatGPT interface

not sure I'd even want something of this be in my terminal at all, for example and cannot imagine why it's a big deal (would like read real life stories again)


It is my very limited experience that the frontend JS devs who mainly have experience working with cloud GUIs and PaaS and do not have a lot of experience in a terminal environment appreciate those types of features.


a couple that have come up a lot in my talks with devs who use the CLI, but don't necessary live in it are: copy/paste, dealing with tmux, getting disconnected, using 'vi' remotely, having to setup prompts/colors/aliases on every new remote machine, editing commands without using the mouse. I'm not saying there aren't ways to do all of this now (especially when you have a lot of experience), but there can be a steep learning curve for new devs.


170+ MB resident after subtracting shared pages to show a single terminal. Added a couple more tabs and it grew to 200 without any other interactions. seems like a lot to me.


Would love to get any suggestions for what people would like to see rendered inline in the terminal. Things like graphs, audio/video streams, filesystem view (that supports drag&drop from your local machine), graphviz, pdfs. Maybe a graphical way to view a JIRA or Github issue and add a comment? Visual diff? Let me know what you think?


I wonder if we could render html inline now as you can do images and other others? Same thing for Markdown for example. My dream would be to basically move everything into the console, but I need graphical applications these days for interacting with others at work etc.


yes! would love to do this. the biggest issue is security and how to sandbox that html from the rest of the terminal. we have some ideas on how to do this (iframes, postMessage, etc.) that i think could work.


Docs! I want to be able to query for, say, godoc or python API docs and get a compact rendering of it.


Why are there no native apps anymore today? Why does everyone ride the Electron bloatware?


It’s insane to me that anyone would use a terminal that is Electron. A terminal should be really light weight and not use up many resources.


The shared "w" with Warp triggered some memories. I hope things go better, but after being burned once I don't see myself getting off of p10k ever, possibly for the worse.


Looks neat. A screenshot or video would be much appreciated.


https://waveterm.dev has some screenshots. Also checkout our twitter feed https://twitter.com/wavetermdev . I couldn't post the homepage as the main link because of a dup check on HN (someone unaffiliated with the company posted the link last week).


Maybe ask dang via hn@ycombinator.com if he could change the submission URL, as I got more information from the website than the GitHub repo. If you want to.


Interestingly enough, I had this recommended to me by a friend within the past month.

For those that use it, is there any reason for me to switch from gnome-terminal?


thanks, i’ve wanted someone to build something very similar to this for a while!


I’m not in the market for a new terminal right now, but I dig your announcement: you explain the license, the languages in the stack, and the future revenue model, which are my first questions whenever evaluating something like this.


Thanks for mentioning the revenue model. I missed it in the announcement. Saw on the site they were VC backed and spent a while wondering “what’s the play”.

Since this can run entirely locally, this might be the first “reimagine the terminal” app I can actually use for work!


thanks, appreciate it! you also get the award for first comment :)


I wish Windows had as many good terminals as MacOS does.


"Cross-platform" but works only with MacOS and Linux, you should change the wording until it is cross-platform.


That is cross platform though…


Cross platform doesn't mean all platforms.


Haven't tested it myself, but some people have gotten it to run on Windows via WSL. We'll have a true Windows port at some point as well.


Initial thought: meh, do we really need another terminal? Fzf, etc kinda do everything...

Views site: 'oooh' (audible)

Well done, my friend. How wonderful!


why is a terminal venture backed


i think the terminal can be much better than it is today. i quit my job and started working on this full time after making the prototype because i was convinced that universal history, inline rendering, and persistent sessions just needed to happen. that being said, building a new terminal is hard and requires direction and a full-time team. these things are expensive and venture money will help us bring this idea to life quickly.

i also want to point out that the main competitor in this space is also venture backed and is closed source. we need the money to keep up (with help from the OSS community) and make sure there is a great open alternative in the market.


I dig it, honestly. Just surprised to see that in teh footer. It's kind of a dealbreaker for me though because so much of my workflow relies on tmux. I tend to align more with the camp that a terminal emulator is just a window into another world, not the world in and of itself. Makes it really easy to move between machines, too. mosh + tmux is half way there.


Honest question, why does everyone uses discord for community space nowadays? What happened to product forums that could be easily found in a web search?


I used Discord for Wave because it is real-time, free, and has a lot of community and auto-moderation facilities built in. It also seems to scale well to large communities. Because you asked, I think it is fair game to share our discord link here: https://discord.gg/XfvZ334gwU


It's unnerving, especially for open source projects. The idea of open source extends beyond the license. It is as much about the community as it is the software. Discord is the worst possible place from an open-ness standpoint. I don't use software that uses it.


You can set up a Discord server for free in under 3 minutes. 10 if you want to install all the fancy moderation bots and change the icons and add custom emojis.

There's nothing comparable for forums. FB tried but it's a cesspool of "user engagement", managing groups is a full time job and still doesn't work properly.

Oh, and Discord _has_ a forum-like feature inside it :D


You can setup a room on any Matrix server of your choice in the same 3 minutes.


The UX in Matrix is really crappy. I say this as someone who has been on IRC since the late 90's. I can deal with jank. I was in the IRC wars. I've seen server splits used to take over channels by Polish IRC warriors.

Matrix is its own brand of confusing because it's trying SO hard not to be a Discord clone. If you properly want to own your Matrix channels, you need to run your own server and that's not a 3 minute thing to do.


> Discord _has_ a forum-like feature inside it

Pretty sure the last bit in the GP was the important one:

> What happened to product forums _that could be easily found in a web search_?

Without web searching capability, whatever "forum-like feature" exists is still subpar.


Yea, searchability on the internet went to crap ages ago.

Content is either in silos like FB or Discord or in videos on Youtube. None of which is properly searchable from an external search engine by content.


Moderation in Discord is much easier than on self hosted platforms. It’s also free, which helps.


As an open-source maintainer, the simple answer is because that's what the majority of users want. The barrier to join a discord server and ask a question is very low, compared to signing up for a forum, posting, and hoping that somebody looks at it.

The only negative feedback I've gotten is from users in China, where Discord is blocked.


If I see discord, I move on. You chose how to run your community, and I'm not going to complain -- I'm not that entitled. I'm just not going to participate.


Or something actually open like matrix! It's really bad that you have to sell your privacy just to get support on a FOSS project.


I hate this trend, whenever you see something interesting and/or wants to engage with someone conversation, you get redirected to discord.. I don’t like it, why not mattermost or similar services if you don’t want to put some effort making a forum?


"A open-source, cross-platform, modern terminal"

"Wave Terminal works with MacOS and Linux (preliminary)."




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: