An open-source, AI-integrated, cross-platform terminal for seamless workflows
Find a file
Copilot e8d4cddb5a
Add optional per-workspace widget visibility via workspaces in widgets.json (#2898)
This change adds an optional `workspaces` field to widget config entries
so widgets can be scoped to specific workspace UUIDs. Widgets with no
`workspaces` field (or an empty array) continue to render globally,
preserving current `widgets.json` behavior.

- **Config model updates**
- Added `workspaces []string` to `wconfig.WidgetConfigType` with
`json:"workspaces,omitempty"`.
- Updated frontend generated type `WidgetConfigType` with `workspaces?:
string[]`.

- **Sidebar widget filtering**
- `frontend/app/workspace/widgets.tsx` now applies workspace-aware
filtering when building the sidebar widget list:
    - include if `workspaces` is missing or empty
    - include if current `workspace.oid` is present in `workspaces`
    - otherwise exclude
  - Existing `defwidget@ai` filtering logic remains intact.

- **Isolated filtering logic + coverage**
  - Added `frontend/app/workspace/widgetfilter.ts` with:
    - `shouldIncludeWidgetForWorkspace(widget, workspaceId)`
- Added focused tests in `frontend/app/workspace/widgetfilter.test.ts`
for:
    - missing/empty `workspaces`
    - matching/non-matching workspace IDs
    - missing active workspace ID

```ts
function shouldIncludeWidgetForWorkspace(widget: WidgetConfigType, workspaceId?: string): boolean {
  const workspaces = widget.workspaces;
  return !Array.isArray(workspaces) || workspaces.length === 0 || (workspaceId != null && workspaces.includes(workspaceId));
}
```

- **Screenshot**
-
<screenshot>https://github.com/user-attachments/assets/b1727003-793b-4eff-8fc1-00eac9c50b83</screenshot>

<!-- START COPILOT CODING AGENT TIPS -->
---

🔒 GitHub Advanced Security automatically protects Copilot coding agent
pull requests. You can protect all pull requests by enabling Advanced
Security for your repositories. [Learn more about Advanced
Security.](https://gh.io/cca-advanced-security)

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: sawka <2722291+sawka@users.noreply.github.com>
Co-authored-by: sawka <mike@commandline.dev>
2026-02-19 16:14:22 -08:00
.github Tab Indicators, Confirm on Quit, etc (#2811) 2026-01-29 17:04:29 -08:00
.kilocode/skills New Context Menu Item + Wsh Command to Save Scrollback of a Terminal Widget (#2892) 2026-02-19 12:49:57 -08:00
.roo/rules adding more structured "skill.md" files instead of using aiprompts directory (#2885) 2026-02-16 21:07:34 -08:00
.vscode new job manager / framework for creating persistent remove sessions (#2779) 2026-01-21 16:54:18 -08:00
.zed Add basic Zed workspace configs (#1942) 2025-02-09 15:00:46 -08:00
aiprompts adding more structured "skill.md" files instead of using aiprompts directory (#2885) 2026-02-16 21:07:34 -08:00
assets Make the Wave logo icons slightly smaller (#1500) 2024-12-11 13:24:12 -08:00
build Squash some leftover bugs (#1495) 2024-12-11 12:52:15 -08:00
cmd New Context Menu Item + Wsh Command to Save Scrollback of a Terminal Widget (#2892) 2026-02-19 12:49:57 -08:00
db new job manager / framework for creating persistent remove sessions (#2779) 2026-01-21 16:54:18 -08:00
docs New Context Menu Item + Wsh Command to Save Scrollback of a Terminal Widget (#2892) 2026-02-19 12:49:57 -08:00
emain New Context Menu Item + Wsh Command to Save Scrollback of a Terminal Widget (#2892) 2026-02-19 12:49:57 -08:00
frontend Add optional per-workspace widget visibility via workspaces in widgets.json (#2898) 2026-02-19 16:14:22 -08:00
pkg Add optional per-workspace widget visibility via workspaces in widgets.json (#2898) 2026-02-19 16:14:22 -08:00
public tsunami framework (waveapps v2) (#2315) 2025-09-11 14:25:07 -07:00
schema Add optional per-workspace widget visibility via workspaces in widgets.json (#2898) 2026-02-19 16:14:22 -08:00
testdriver touch up final test condition (#1338) 2024-11-22 17:16:04 -08:00
tests/copytests Add S3 fileshare implementation, improve cp behavior (#1896) 2025-02-14 17:27:02 -08:00
tsunami Session Durability Checkpoint (#2821) 2026-02-03 11:49:52 -08:00
.editorconfig Oops i actually made the tabs wrong (#1384) 2024-12-04 13:49:14 -08:00
.gitattributes WSL Integration (#1031) 2024-10-23 22:43:17 -07:00
.gitignore conn error sub-codes for better classification (#2889) 2026-02-19 11:18:52 -08:00
.golangci.yml capture go build / go mod tidy output to outputcapture (#2540) 2025-11-10 19:55:46 -08:00
.prettierignore Add filewatcher for config files (#63) 2024-06-19 23:59:41 -07:00
ACKNOWLEDGEMENTS.md Add back the acknowledgements readme, update about modal link (#818) 2024-09-24 16:58:18 -07:00
BUILD.md switch from yarn to npm (#2347) 2025-09-12 15:36:03 -07:00
CNAME Move docsite to main repo (#1204) 2024-11-06 10:45:21 -08:00
CODE_OF_CONDUCT.md move some metadata files over to new repo 2024-09-18 12:04:28 -07:00
CONTRIBUTING.md set clearer contribution guidelines and expectations (#2782) 2026-01-21 16:35:29 -08:00
electron-builder.config.cjs fix tsunami scaffold in build (#2564) 2025-11-14 16:35:37 -08:00
electron.vite.config.ts update electron version (#2876) 2026-02-16 22:59:18 -08:00
eslint.config.js Switch to using electron-vite instead of WebPack (#45) 2024-06-13 16:49:25 -07:00
go.mod Bump google.golang.org/api from 0.265.0 to 0.266.0 (#2873) 2026-02-17 11:01:28 -08:00
go.sum Bump google.golang.org/api from 0.265.0 to 0.266.0 (#2873) 2026-02-17 11:01:28 -08:00
index.html add tailwind to wave, support shadcn + donut chart as a POC (#1775) 2025-02-04 17:58:36 -08:00
LICENSE Happy new year! (#1684) 2025-01-04 20:56:57 -08:00
NOTICE Happy new year! (#1684) 2025-01-04 20:56:57 -08:00
package-lock.json update electron version (#2876) 2026-02-16 22:59:18 -08:00
package.json update electron version (#2876) 2026-02-16 22:59:18 -08:00
prettier.config.cjs Windows Line Endings (#923) 2024-10-01 12:54:15 -07:00
README.md readme updates for durable sessions / wave ai (#2886) 2026-02-16 23:47:49 -08:00
RELEASES.md Update more links in releases.md (#1826) 2025-01-23 17:59:16 -08:00
ROADMAP.md v0.13 Release Notes, Docs Updates, Onboarding Updates (#2642) 2025-12-08 16:29:19 -08:00
SECURITY.md Add markdown alert parsing, fix buffer issue when switching files (#988) 2024-10-08 09:25:41 -07:00
staticcheck.conf standalone fixes, linting errors, speedups, QOL changes ported from wave-12 branch (#2271) 2025-08-20 18:07:11 -07:00
Taskfile.yml Tab Indicators, Confirm on Quit, etc (#2811) 2026-01-29 17:04:29 -08:00
tsconfig.json waveapps builder window (scaffolding, restructure AI panel to work in both builder and tab windows) (#2482) 2025-10-26 17:48:01 -07:00
version.cjs If prerelease is false and action is none, remove the prerelease version string (#395) 2024-09-18 13:12:34 -07:00
vitest.config.ts Switch to using electron-vite instead of WebPack (#45) 2024-06-13 16:49:25 -07:00

Wave Terminal Logo

Wave Terminal

FOSSA Status

Wave is an open-source, AI-integrated terminal for macOS, Linux, and Windows. It works with any AI model. Bring your own API keys for OpenAI, Claude, or Gemini, or run local models via Ollama and LM Studio. No accounts required.

Wave also supports durable SSH sessions that survive network interruptions and restarts, with automatic reconnection. Edit remote files with a built-in graphical editor and preview files inline without leaving the terminal.

WaveTerm Screenshot

Key Features

  • Wave AI - Context-aware terminal assistant that reads your terminal output, analyzes widgets, and performs file operations
  • Durable SSH Sessions - Remote terminal sessions survive connection interruptions, network changes, and Wave restarts with automatic reconnection
  • Flexible drag & drop interface to organize terminal blocks, editors, web browsers, and AI assistants
  • Built-in editor for editing remote files with syntax highlighting and modern editor features
  • Rich file preview system for remote files (markdown, images, video, PDFs, CSVs, directories)
  • Quick full-screen toggle for any block - expand terminals, editors, and previews for better visibility, then instantly return to multi-block view
  • AI chat widget with support for multiple models (OpenAI, Claude, Azure, Perplexity, Ollama)
  • Command Blocks for isolating and monitoring individual commands
  • One-click remote connections with full terminal and file system access
  • Secure secret storage using native system backends - store API keys and credentials locally, access them across SSH sessions
  • Rich customization including tab themes, terminal styles, and background images
  • Powerful wsh command system for managing your workspace from the CLI and sharing data between terminal sessions
  • Connected file management with wsh file - seamlessly copy and sync files between local and remote SSH hosts

Wave AI

Wave AI is your context-aware terminal assistant with access to your workspace:

  • Terminal Context: Reads terminal output and scrollback for debugging and analysis
  • File Operations: Read, write, and edit files with automatic backups and user approval
  • CLI Integration: Use wsh ai to pipe output or attach files directly from the command line
  • BYOK Support: Bring your own API keys for OpenAI, Claude, Gemini, Azure, and other providers
  • Local Models: Run local models with Ollama, LM Studio, and other OpenAI-compatible providers
  • Free Beta: Included AI credits while we refine the experience
  • Coming Soon: Command execution (with approval)

Learn more in our Wave AI documentation and Wave AI Modes documentation.

Installation

Wave Terminal works on macOS, Linux, and Windows.

Platform-specific installation instructions can be found here.

You can also install Wave Terminal directly from: www.waveterm.dev/download.

Minimum requirements

Wave Terminal runs on the following platforms:

  • macOS 11 or later (arm64, x64)
  • Windows 10 1809 or later (x64)
  • Linux based on glibc-2.28 or later (Debian 10, RHEL 8, Ubuntu 20.04, etc.) (arm64, x64)

The WSH helper runs on the following platforms:

  • macOS 11 or later (arm64, x64)
  • Windows 10 or later (x64)
  • Linux Kernel 2.6.32 or later (x64), Linux Kernel 3.1 or later (arm64)

Roadmap

Wave is constantly improving! Our roadmap will be continuously updated with our goals for each release. You can find it here.

Want to provide input to our future releases? Connect with us on Discord or open a Feature Request!

Building from Source

See Building Wave Terminal.

Contributing

Wave uses GitHub Issues for issue tracking.

Find more information in our Contributions Guide, which includes:

License

Wave Terminal is licensed under the Apache-2.0 License. For more information on our dependencies, see here.