Wave Terminal's block workspace and the AI that cannot run commands yet
Wave combines a terminal, editor, browser, and AI assistance in one cross-platform workspace.
At a glance
- What is it?
- Wave Terminal wraps a Go terminal core in an Electron shell and puts terminals, editors, previews and AI chat into one draggable grid, with durable SSH sessions and a `wsh` helper binary. The workspace model and the remote story are the strong parts, while the assistant can read and edit files but still cannot run commands.
- Who is it for?
- Wave Terminal fits people who want a session that survives a dropped SSH connection, previews of remote files without leaving the terminal, and workspace control from `wsh`. It does not fit a team that needs the assistant to execute commands today.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 8 days ago.
- What is it written in?
- Mainly Go, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.
Star history
- wavetermdev/waveterm22,700 ★ · +859
| Repository | 2026-07-28 | 2026-11-13 |
|---|---|---|
| wavetermdev/waveterm | 21.8k | 22.7k |
859 Stars in the last 108 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Wave AI edits files but cannot run commands yet
Two capabilities are shipped and one is not. The assistant reads terminal output and scrollback for debugging, performs file operations with automatic backups and user approval, and can be reached from any shell in the workspace:
wsh aiThat command is how you pipe output or attach files to the assistant from the command line, according to the README. Command execution, listed in the same section, is marked as coming soon and still subject to approval, so the assistant cannot run what you ask it to run. Every "fix this build error" loop ends with you pressing Enter, and any automation you wanted to build around a terminal-resident agent has to wait for a release.
Model choice is the flexible half. Bring your own keys for OpenAI, Claude or Gemini, add Azure or Perplexity in the chat widget, or point at Ollama, LM Studio or any OpenAI-compatible provider. No account is required, and included beta credits exist while the experience is refined, which is a moving allowance rather than a published quota.
One block per terminal, editor, preview or chat widget
Wave's workspace is a grid of blocks you drag around: terminal blocks, editors, web browsers and AI assistants, with a full-screen toggle that promotes any block and drops you straight back to the multi-block view. Command Blocks exist for isolating and monitoring a single command, and previews cover markdown, images, video, PDFs, CSVs and directories.
That is a different arrangement from an editor with a terminal docked under the file tree. In an editor the file is the primary surface and the terminal is a panel you open, while here the terminal is one surface among several and the graphical editor for remote files is a neighbour block. A preview that renders a PDF without leaving the workspace is closer to a file viewer than to a terminal emulator.
The consequence shows up in habits. Someone who lives inside VS Code with a split terminal is not gaining a better shell, they are being asked to move their file editing into a block beside it and relearn where the controls live. Test that swap against your own editing workflow before moving a setup that already works.
The wsh helper targets kernel 2.6.32, the app targets glibc 2.28
Wave Terminal needs macOS 11 or later on arm64 or x64, Windows 10 1809 or later on x64, and Linux built on glibc 2.28 or later, with Debian 10, RHEL 8 and Ubuntu 20.04 given as examples. The `wsh` helper has a separate and looser list: macOS 11 or later, Windows 10 or later, and on Linux a kernel of 2.6.32 or newer for x64 and 3.1 or newer for arm64.
The split is not an inconsistency. The helper is the piece that has to exist on the machine at the other end of the connection, so its floor is a kernel number while the desktop application's floor is a libc. That is what makes durable SSH sessions to old boxes plausible at all, because an appliance or a build machine that cannot run a modern userland may still accept a small helper binary, and you get terminal and file access from a workstation that never touches it.
What the helper cannot do is open a session before it lands. First contact still needs whatever that remote system already gives you, and the README says nothing about how the helper reaches the host or what to do on a machine with no outbound network.
One-click remote access inherits the remote account's permissions
Remote connections come with full terminal and file system access, and the dependency list shows what stands behind that. github.com/kevinburke/ssh_config v1.2.0 reads the user's SSH config, github.com/skeema/knownhosts v1.3.1 brings the OpenSSH known_hosts implementation, github.com/creack/pty v1.1.24 provides the pseudo-terminal, and golang.org/x/crypto v0.57.0 supplies the transport. Durable sessions with automatic reconnection are the headline feature, and these are the same building blocks any SSH client uses.
Host key verification and reuse of an existing SSH config are worth checking on a first connection. The permission boundary is not documented. "Full file system access" means the permissions of the account you connect as, and the assistant performs file operations with automatic backups and user approval. On a production host that account is often a login account, so an approved edit is a write to production, and the automatic backup is a copy rather than a permission change.
Connect with a restricted account first and see whether Wave treats it as an ordinary SSH session before you point it at anything real.
No install command, and package.json is marked private
The README has no shell command for installing Wave Terminal. macOS, Linux and Windows readers are sent to docs.waveterm.dev/gettingstarted for platform instructions and to www.waveterm.dev/download for the installer, while BUILD.md holds the from-source path.
The packaging file confirms there is no published npm package: `"private": true`, no `bin` field, version `0.14.5`, and `"dev": "electron-vite dev"` as the development entry. Two details matter before you build. `"postinstall": "node ./postinstall.cjs"` runs a repository script on every dependency install, including on a fresh checkout, and `"browserslist": ["Chrome >= 128"]` is a bundler target for the renderer styles rather than a runtime requirement on the host.
First run: install per platform, open the app, add a provider key through the secret storage that uses native system backends, then reach the assistant from a shell with:
wsh aiThe README prints that command and no flags, no subcommands and no example of what to pipe into it.
The newest tag is five months older than the last push
The last push to the repository was on 2026-11-02. The newest release is v0.14.5, tagged on 2026-04-16, alongside v0.14.5-beta.2 on the same day and v0.14.5-beta.0 the day before. Roughly six and a half months of commits therefore sit on the default branch after the tag everyone downloads, so a feature list can describe main-branch behaviour that the installed binary does not have.
Two versioning details compound it. package.json reads `0.14.5`, and under semver a zero major version promises nothing across minor releases, so a 0.15 would owe you no compatibility. Then there is a nested module: go.mod requires github.com/wavetermdev/waveterm/tsunami v0.12.3, a separate module inside the same repository path at a version behind the app, and neither the README nor the top-level file listing says what that module does.
Evaluate the tag, not the branch.
Prompts ship inside the repository, so the assistant moves with the release
The top level carries an `aiprompts/` directory, a `CLAUDE.md` with the project's own agent instructions, and editor and tool configuration directories `.vscode/`, `.zed/`, `.roo/` and `.kilocode/` next to the Go sources, the TypeScript frontend and the build files.
On the dependency side, github.com/google/generative-ai-go v0.20.1 is a direct dependency for Gemini access, and golang-jwt/jwt/v5 v5.3.1 with launchdarkly/eventsource v1.11.0 points to token handling and a server-sent-event client somewhere in the tree, while the README describes no account, no sign-in flow and no server component beyond those beta credits.
wsh and its SQLite database, both undocumented past the name
`wsh` is the command-line surface, built on github.com/spf13/cobra v1.10.2, with junegunn/fzf v0.65.2 supplying a fuzzy picker and github.com/alexflint/go-filemutex v1.3.0 in the dependency list. The README gives it three jobs: managing the workspace from the CLI, sharing data between terminal sessions, and `wsh file` for copying and syncing files between local and remote SSH hosts. That last one needs no GUI, which makes it the part that ends up in a script.
Local state is local as well. github.com/mattn/go-sqlite3 v1.14.44 is a direct dependency, the repository carries a `db/` directory next to `schema/`, and github.com/golang-migrate/migrate/v4 v4.19.1 handles schema changes. The README does not say where the database file lives, what it holds or how to export a workspace, so sessions that share data and durable SSH state stay tied to one machine's files, and a second machine means a fresh workspace or an undocumented copy.
Secrets are stored through native system backends and stay reachable across SSH sessions.
Editorial conclusion
Wave Terminal fits people who want a session that survives a dropped SSH connection, previews of remote files without leaving the terminal, and workspace control from `wsh`. It does not fit a team that needs the assistant to execute commands today. Check three things before switching: the release tag against the last push date, whether `wsh` runs on the oldest host you connect to, and what your SSH account can reach once Wave has full file system access. Then leave a live session running and cut the network before you trust the reconnection.
Frequently asked questions
What is Wave Terminal?
Wave Terminal is an Apache-2.0 AI-integrated terminal for macOS, Linux and Windows, written in Go with an Electron shell. Terminal blocks, an editor, a web browser and AI chat share one draggable workspace, remote sessions survive interruptions with automatic reconnection, and local models run through Ollama or LM Studio with no account required.
How does Wave Terminal compare with VS Code?
The difference is in what the terminal is. In Wave Terminal it is a block in a grid beside editors, previews and chat, each block promotable to full screen, while in VS Code the terminal is a panel under a file tree with the editor in charge. Wave's remote sessions also rely on a `wsh` helper binary that supports Linux kernels from 2.6.32, against a glibc 2.28 floor for the desktop app itself.
Does Wave Terminal need an account to use the AI features?
No. Bring your own API keys for OpenAI, Claude or Gemini, configure Azure, Perplexity, Ollama or LM Studio, or any OpenAI-compatible provider, and the README states that no accounts are required. A free beta credit allowance is included while the experience is refined.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/wavetermdev-waveterm)Star history chart for your README
[](https://hysenlabs.com/projects/wavetermdev-waveterm)Was this useful?