Source: https://seerepo.com/r/wavetermdev/waveterm/built
Markdown source: https://seerepo.com/r/wavetermdev/waveterm/built.md
Description: waveterm is a Go repo built with React, net/http, Gorilla, Electron, and Vite. It stores its data in SQLite and reaches it with github.com/jmoiron/sqlx.

# What is waveterm built with?

waveterm is a Go repo built with React, net/http, Gorilla, Electron, and Vite. It stores its data in SQLite, reaches it with github.com/jmoiron/sqlx, signs people in with github.com/golang-jwt/jwt/v5, uses AI through ai and @ai-sdk/react, connects to Google, makes its content with unist-util-visit, html-to-image, papaparse, pngjs, react-markdown, and 8 more, validates its data with github.com/invopop/jsonschema, is tested with Vitest, deploys with winston, and uses go-sqlite3. It has 149,008 written lines, with 60 test files.

Read on November 4, 2026, at commit 9f1c967.

Repository: https://github.com/wavetermdev/waveterm

## Frontend (/)

### The base

- **[React](https://seerepo.com/uses/react)**: 138 files · [in tsunami/frontend/package.json](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/tsunami/frontend/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 2 files

### Interface

- **@floating-ui/react**: 11 files
- **[monaco-editor](https://seerepo.com/uses/monaco-editor)**: 10 files
- **react-dnd**: 6 files
- **[xterm](https://seerepo.com/uses/xterm)**: 4 files
- **[react-resizable-panels](https://seerepo.com/uses/react-resizable-panels)**: 3 files
- **[TanStack](https://seerepo.com/uses/tanstack)**: 3 files
- **monaco-yaml**: 2 files
- **react-dnd-html5-backend**: 2 files
- **@observablehq/plot**: 1 file
- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file

## Backend (/)

### The base

- **[net/http](https://seerepo.com/uses/net-http)**
- **[Gorilla](https://seerepo.com/uses/gorilla)**: 3 files

### Data

- **go-sqlite3**
- **[SQLite](https://seerepo.com/uses/sqlite)**: 2 files · [pkg/filestore/blockstore_dbsetup.go, line 20](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/pkg/filestore/blockstore_dbsetup.go#L20)

### Data access

- **github.com/jmoiron/sqlx**: 3 files

### Sign-in

- **github.com/golang-jwt/jwt/v5**: 2 files

### AI

- **[ai](https://seerepo.com/uses/ai)**: 3 files
- **@ai-sdk/react**: 1 file

### Services

- **[Google](https://seerepo.com/uses/google)**: 1 file · [pkg/aiusechat/google/google-summarize.go, line 15](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/pkg/aiusechat/google/google-summarize.go#L15)

## Support (/)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 18 files

### Content

- **unist-util-visit**: 2 files
- **html-to-image**: 1 file
- **papaparse**: 1 file
- **pngjs**: 1 file
- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file
- **rehype-highlight**: 1 file
- **[rehype-raw](https://seerepo.com/uses/rehype-raw)**: 1 file
- **[rehype-sanitize](https://seerepo.com/uses/rehype-sanitize)**: 1 file
- **rehype-slug**: 1 file
- **[remark-gfm](https://seerepo.com/uses/remark-gfm)**: 1 file
- **[shiki](https://seerepo.com/uses/shiki)**: 1 file
- **[streamdown](https://seerepo.com/uses/streamdown)**: 1 file
- **[yaml](https://seerepo.com/uses/yaml)**: 1 file

### Validation

- **github.com/invopop/jsonschema**: 1 file

### Testing

- **Vitest**: 16 files

### Deploy

- **winston**: 1 file

### Tools

- **github.com/spf13/cobra**: 45 files
- **css-tree**: 2 files
- **golang.org/x/mod**: 1 file

### Other

- **jotai**: 105 files
- **clsx**: 41 files
- **throttle-debounce**: 17 files
- **debug**: 10 files
- **golang.org/x/crypto**: 6 files
- **golang.org/x/sys**: 5 files
- **github.com/shirou/gopsutil/v4**: 4 files
- **github.com/creack/pty**: 3 files
- **SemVer**: 3 files
- **base64-js**: 2 files
- **dayjs**: 2 files
- **github.com/mitchellh/mapstructure**: 2 files
- **github.com/skeema/knownhosts**: 2 files
- **golang.org/x/sync**: 2 files
- **uuid**: 2 files
- **electron-updater**: 1 file
- **env-paths**: 1 file
- **github.com/emirpasic/gods**: 1 file
- **github.com/fsnotify/fsnotify**: 1 file
- **github.com/gorilla/websocket**: 1 file
- **github.com/joho/godotenv**: 1 file
- **github.com/Microsoft/go-winio**: 1 file
- **github.com/skratchdot/open-golang**: 1 file
- **golang.org/x/term**: 1 file
- **rxjs**: 1 file
- **shell-quote**: 1 file
- **ws**: 1 file

## Frontend (tsunami/frontend)

### The base

- **[Vite](https://seerepo.com/uses/vite)**: [in tsunami/frontend/package.json](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/tsunami/frontend/package.json)
- **[React](https://seerepo.com/uses/react)**: 7 files · [in tsunami/frontend/package.json](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/tsunami/frontend/package.json)

### Styles

- **[Tailwind CSS](https://seerepo.com/uses/tailwind-css)**
- **[tailwind-merge](https://seerepo.com/uses/tailwind-merge)**: 2 files

### Interface

- **[recharts](https://seerepo.com/uses/recharts)**: 1 file
- **[xterm](https://seerepo.com/uses/xterm)**: 1 file

## Support (tsunami/frontend)

### Content

- **[react-markdown](https://seerepo.com/uses/react-markdown)**: 1 file

### Other

- **debug**: 2 files
- **jotai**: 2 files
- **base64-js**: 1 file
- **clsx**: 1 file

## Other repos with a similar stack

- [supabase/supabase](https://seerepo.com/r/supabase/supabase/built): React, Vite, Tailwind CSS, monaco-editor, react-resizable-panels, Mermaid, ai, @ai-sdk/react, unist-util-visit, html-to-image, papaparse, react-markdown, remark-gfm, shiki, streamdown, recharts · [Compare](https://seerepo.com/compare/supabase/supabase/vs/wavetermdev/waveterm)
- [infiniflow/ragflow](https://seerepo.com/r/infiniflow/ragflow/built): React, net/http, Google, Tailwind CSS, tailwind-merge, @floating-ui/react, react-resizable-panels, Mermaid, github.com/golang-jwt/jwt/v5, papaparse, react-markdown, rehype-raw, rehype-sanitize, remark-gfm, recharts · [Compare](https://seerepo.com/compare/infiniflow/ragflow/vs/wavetermdev/waveterm)
- [Significant-Gravitas/AutoGPT](https://seerepo.com/r/Significant-Gravitas/AutoGPT/built): React, Google, Tailwind CSS, tailwind-merge, ai, @ai-sdk/react, react-markdown, rehype-highlight, rehype-slug, remark-gfm, shiki, streamdown, recharts · [Compare](https://seerepo.com/compare/Significant-Gravitas/AutoGPT/vs/wavetermdev/waveterm)
- [bytedance/deer-flow](https://seerepo.com/r/bytedance/deer-flow/built): React, SQLite, Tailwind CSS, tailwind-merge, react-resizable-panels, ai, unist-util-visit, papaparse, rehype-raw, rehype-sanitize, remark-gfm, shiki, streamdown · [Compare](https://seerepo.com/compare/bytedance/deer-flow/vs/wavetermdev/waveterm)
- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): React, Google, Vite, Tailwind CSS, tailwind-merge, xterm, react-resizable-panels, Mermaid, ai, react-markdown, remark-gfm, yaml · [Compare](https://seerepo.com/compare/paperclipai/paperclip/vs/wavetermdev/waveterm)
- [OpenHands/OpenHands](https://seerepo.com/r/OpenHands/OpenHands/built): React, Electron, Vite, Tailwind CSS, tailwind-merge, monaco-editor, xterm, unist-util-visit, react-markdown, rehype-raw, rehype-sanitize, remark-gfm · [Compare](https://seerepo.com/compare/OpenHands/OpenHands/vs/wavetermdev/waveterm)

## Frequently asked questions

### What language is waveterm written in?

waveterm is written in Go, with 149,008 written lines.

### What framework does waveterm use?

waveterm is built with React, net/http, Gorilla, Electron, and Vite.

The proof: [in tsunami/frontend/package.json](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/tsunami/frontend/package.json)

### What database does waveterm use?

waveterm stores its data in SQLite and reaches it with github.com/jmoiron/sqlx.

The proof: [pkg/filestore/blockstore_dbsetup.go, line 20](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/pkg/filestore/blockstore_dbsetup.go#L20)

### What does waveterm sign people in with?

waveterm signs people in with github.com/golang-jwt/jwt/v5.

### Does waveterm use AI?

Yes. waveterm uses AI through ai and @ai-sdk/react.

### What services does waveterm use?

waveterm connects to Google and uses go-sqlite3.

The proof: [pkg/aiusechat/google/google-summarize.go, line 15](https://github.com/wavetermdev/waveterm/blob/9f1c9670d407be3b93cf090319a63ef30bf54d0e/pkg/aiusechat/google/google-summarize.go#L15)

### Does waveterm have tests?

Yes. waveterm has 60 test files and is tested with Vitest.

### Which repos have a stack like waveterm's?

The ones that share most of its stack: supabase/supabase, infiniflow/ragflow, and Significant-Gravitas/AutoGPT.

## What is your repo built with?

Any public repo, with no account: https://seerepo.com/r/owner/repo/built, with the owner and name it has on GitHub.
