Source: https://seerepo.com/r/eclipse-theia/theia/built
Markdown source: https://seerepo.com/r/eclipse-theia/theia/built.md
Description: theia is a TypeScript repo built with Electron, React, Express, and vhost. It stores its data in electron-store and signs people in with keytar.

# What is theia built with?

theia is a TypeScript repo built with Electron, React, Express, and vhost. It stores its data in electron-store, signs people in with keytar, uses AI through Anthropic, OpenAI, @openai/codex-sdk, and ollama, makes its content with mustache, js-yaml, dompurify, markdown-it, markdown-it-anchor, and 3 more, validates its data with Zod and Ajv, is tested with Chai, sinon, Puppeteer, Mocha, jsdom, and 1 more, deploys with prom-client, and uses Hugging Face, MCP, and idb. It has 648,258 written lines, with 773 test files.

Read on November 5, 2026, at commit 30a5482.

Repository: https://github.com/eclipse-theia/theia

## Support (dev-packages/application-manager)

### Testing

- **Chai**: 2 files

### Tools

- **yargs**: 1 file

### Other

- **fs-extra**: 7 files
- **SemVer**: 1 file

## Support (dev-packages/application-package)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 1 file

### Testing

- **sinon**: 1 file

### Other

- **deepmerge**: 1 file
- **fs-extra**: 1 file
- **SemVer**: 1 file
- **temp**: 1 file

## Support (dev-packages/bundle-plugin)

### Testing

- **Chai**: 1 file

### Tools

- **detect-libc**: 1 file
- **esbuild**: 1 file

## Support (dev-packages/cli)

### Testing

- **Puppeteer**: 2 files
- **Mocha**: 1 file

### Tools

- **glob**: 1 file
- **log-update**: 1 file
- **yargs**: 1 file

### Other

- **chalk**: 2 files
- **limiter**: 2 files
- **temp**: 2 files
- **escape-string-regexp**: 1 file

## Support (dev-packages/ffmpeg)

### Tools

- **@electron/get**: 1 file

### Other

- **fs-extra**: 2 files
- **unzipper**: 1 file

## Support (dev-packages/localization-manager)

### Tools

- **glob**: 1 file
- **TypeScript**: 1 file

### Other

- **fs-extra**: 2 files
- **chalk**: 1 file
- **deepmerge**: 1 file
- **limiter**: 1 file

## Support (dev-packages/ovsx-client)

### Other

- **limiter**: 1 file
- **SemVer**: 1 file

## Support (dev-packages/private-eslint-plugin)

### Tools

- **ESLint**: 5 files
- **@typescript-eslint/parser**: 1 file

### Other

- **js-levenshtein**: 1 file

## Support (dev-packages/private-ext-scripts)

### Tools

- **@parcel/watcher**: 1 file
- **glob**: 1 file
- **yargs**: 1 file

### Other

- **debug**: 1 file

## Support (dev-packages/private-re-exports)

### Content

- **mustache**: 1 file

### Testing

- **Chai**: 1 file

### Tools

- **TypeScript**: 1 file
- **yargs**: 1 file

### Other

- **SemVer**: 1 file

## Support (dev-packages/request)

### Testing

- **Chai**: 2 files

### Other

- **undici**: 2 files

## Backend (packages/ai-anthropic)

### Services

- **[Anthropic](https://seerepo.com/uses/anthropic)**: 2 files · [packages/ai-anthropic/src/node/anthropic-language-model.ts, line 42](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-anthropic/src/node/anthropic-language-model.ts#L42)

## Support (packages/ai-anthropic)

### Testing

- **Chai**: 2 files

## Frontend (packages/ai-chat-ui)

### Interface

- **[Mermaid](https://seerepo.com/uses/mermaid)**: 1 file

## Support (packages/ai-chat-ui)

### Testing

- **Chai**: 25 files
- **sinon**: 1 file

### Other

- **reflect-metadata**: 7 files

## Support (packages/ai-chat)

### Testing

- **Chai**: 27 files
- **sinon**: 8 files

### Other

- **reflect-metadata**: 4 files

## Backend (packages/ai-chatgpt)

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 1 file · [packages/ai-chatgpt/src/node/chatgpt-language-model.ts, line 25](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-chatgpt/src/node/chatgpt-language-model.ts#L25)

## Support (packages/ai-chatgpt)

### Testing

- **Chai**: 9 files
- **sinon**: 3 files

## Support (packages/ai-code-completion)

### Testing

- **Chai**: 3 files
- **sinon**: 1 file

## Backend (packages/ai-codex)

### AI

- **@openai/codex-sdk**: 7 files

## Support (packages/ai-codex)

### Testing

- **Chai**: 2 files
- **sinon**: 2 files

## Support (packages/ai-copilot)

### Testing

- **Chai**: 9 files

## Support (packages/ai-core-ui)

### Testing

- **Chai**: 5 files

### Other

- **reflect-metadata**: 1 file

## Support (packages/ai-core)

### Content

- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 3 files

### Testing

- **Chai**: 41 files
- **sinon**: 8 files

### Other

- **reflect-metadata**: 8 files
- **inversify**: 4 files
- **fast-deep-equal**: 1 file
- **fast-json-stable-stringify**: 1 file
- **undici**: 1 file

## Support (packages/ai-external-api)

### Testing

- **Chai**: 4 files

## Support (packages/ai-google)

### Testing

- **Chai**: 2 files

## Backend (packages/ai-hugging-face)

### Services

- **[Hugging Face](https://seerepo.com/uses/hugging-face)**: 1 file · [packages/ai-hugging-face/src/node/huggingface-language-model.ts, line 28](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-hugging-face/src/node/huggingface-language-model.ts#L28)

## Support (packages/ai-hugging-face)

### Testing

- **Chai**: 1 file

## Support (packages/ai-ide)

### Testing

- **Chai**: 42 files
- **sinon**: 5 files
- **Puppeteer**: 1 file

### Tools

- **ignore**: 1 file
- **simple-git**: 1 file

### Other

- **minimatch**: 1 file
- **reflect-metadata**: 1 file

## Backend (packages/ai-mcp-server)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 7 files · [packages/ai-mcp-server/src/browser/mcp-frontend-contribution.ts, line 18](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-mcp-server/src/browser/mcp-frontend-contribution.ts#L18)

## Support (packages/ai-mcp-server)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 2 files

## Support (packages/ai-mcp-ui)

### Testing

- **Chai**: 1 file

## Backend (packages/ai-mcp)

### Services

- **[MCP](https://seerepo.com/uses/mcp)**: 5 files · [packages/ai-mcp-server/src/browser/mcp-frontend-contribution.ts, line 18](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-mcp-server/src/browser/mcp-frontend-contribution.ts#L18)

## Support (packages/ai-mcp)

### Testing

- **Chai**: 17 files
- **sinon**: 1 file

### Other

- **reflect-metadata**: 1 file

## Backend (packages/ai-ollama)

### AI

- **ollama**: 1 file

## Support (packages/ai-ollama)

### Testing

- **Chai**: 2 files
- **sinon**: 1 file

## Backend (packages/ai-openai)

### Services

- **[OpenAI](https://seerepo.com/uses/openai)**: 6 files · [packages/ai-chatgpt/src/node/chatgpt-language-model.ts, line 25](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-chatgpt/src/node/chatgpt-language-model.ts#L25)

## Support (packages/ai-openai)

### Testing

- **Chai**: 10 files
- **sinon**: 4 files

## Support (packages/ai-registry)

### Testing

- **Chai**: 28 files
- **sinon**: 1 file

## Support (packages/ai-terminal)

### Validation

- **[Zod](https://seerepo.com/uses/zod)**: 1 file

### Testing

- **Chai**: 9 files
- **sinon**: 3 files

## Support (packages/ai-tool-sketchpad)

### Content

- **[js-yaml](https://seerepo.com/uses/js-yaml)**: 1 file

## Support (packages/bulk-edit)

### Testing

- **Chai**: 1 file

## Support (packages/callhierarchy)

### Other

- **ts-md5**: 1 file

## Support (packages/collaboration)

### Testing

- **Chai**: 1 file

### Other

- **yjs**: 2 files
- **lib0**: 1 file
- **y-protocols**: 1 file

## Support (packages/console)

### Other

- **anser**: 1 file

## Frontend (packages/core)

### The base

- **[React](https://seerepo.com/uses/react)**: 37 files

### Interface

- **lumino**: 29 files
- **react-virtuoso**: 3 files
- **react-tooltip**: 1 file

### Icons

- **@vscode/codicons**: 1 file
- **Font Awesome**: 1 file

## Backend (packages/core)

### The base

- **[Express](https://seerepo.com/uses/express)**: 2 files · [in packages/core/package.json](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/core/package.json)

### Sign-in

- **keytar**: 1 file

## Support (packages/core)

### The base

- **[Electron](https://seerepo.com/uses/electron)**: 1 file

### Content

- **[dompurify](https://seerepo.com/uses/dompurify)**: 2 files
- **[markdown-it](https://seerepo.com/uses/markdown-it)**: 2 files
- **markdown-it-anchor**: 2 files
- **markdown-it-emoji**: 2 files

### Validation

- **[Ajv](https://seerepo.com/uses/ajv)**: 2 files

### Testing

- **Chai**: 101 files
- **sinon**: 14 files
- **jsdom**: 1 file

### Tools

- **vscode-languageserver-protocol**: 9 files
- **yargs**: 3 files
- **@parcel/watcher**: 2 files

### Other

- **inversify**: 264 files
- **@lumino/messaging**: 8 files
- **vscode-uri**: 7 files
- **Socket.io**: 4 files
- **cookie**: 2 files
- **fs-extra**: 2 files
- **fuzzy**: 2 files
- **iconv-lite**: 2 files
- **Lodash**: 2 files
- **lodash.throttle**: 2 files
- **msgpackr**: 2 files
- **p-debounce**: 2 files
- **reflect-metadata**: 2 files
- **socket.io-client**: 2 files
- **temp**: 2 files
- **ws**: 2 files
- **async-mutex**: 1 file
- **fast-json-stable-stringify**: 1 file
- **jschardet**: 1 file
- **uuid**: 1 file

## Support (packages/debug)

### Testing

- **Chai**: 8 files

### Other

- **p-debounce**: 7 files
- **reflect-metadata**: 2 files
- **jsonc-parser**: 1 file

## Support (packages/dev-container)

### Testing

- **Chai**: 6 files

### Other

- **jsonc-parser**: 1 file

## Support (packages/editor-preview)

### Testing

- **Chai**: 1 file

## Support (packages/editor)

### Testing

- **Chai**: 3 files

## Backend (packages/electron)

### Data

- **electron-store**: 2 files

## Support (packages/electron)

### The base

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

### Other

- **fix-path**: 1 file

## Support (packages/external-api)

### Testing

- **Chai**: 4 files

## Support (packages/file-search)

### Testing

- **Chai**: 1 file

### Tools

- **@vscode/ripgrep**: 1 file

## Support (packages/filesystem)

### Testing

- **Chai**: 15 files
- **sinon**: 5 files

### Tools

- **vscode-languageserver-textdocument**: 2 files
- **ignore**: 1 file
- **rimraf**: 1 file

### Other

- **temp**: 7 files
- **minimatch**: 6 files
- **async-mutex**: 3 files
- **body-parser**: 1 file
- **http-status-codes**: 1 file
- **multer**: 1 file
- **tar-stream**: 1 file

## Support (packages/getting-started)

### Testing

- **Chai**: 2 files

## Support (packages/keymaps)

### Testing

- **Chai**: 1 file
- **sinon**: 1 file

### Other

- **jsonc-parser**: 1 file

## Support (packages/markers)

### Testing

- **Chai**: 4 files

### Other

- **temp**: 1 file

## Support (packages/memory-inspector)

### Testing

- **Chai**: 2 files

### Other

- **long**: 9 files

## Support (packages/messages)

### Testing

- **Chai**: 2 files

### Other

- **ts-md5**: 1 file

## Support (packages/metrics)

### Testing

- **Chai**: 2 files

### Deploy

- **prom-client**: 1 file

## Support (packages/mini-browser)

### The base

- **vhost**: 1 file

### Content

- **pdfobject**: 1 file

### Testing

- **Chai**: 1 file

### Other

- **mime-types**: 1 file

## Backend (packages/monaco)

### Data

- **idb**: 1 file

## Support (packages/monaco)

### Testing

- **Chai**: 7 files
- **sinon**: 1 file

### Tools

- **vscode-textmate**: 6 files
- **vscode-oniguruma**: 1 file

### Other

- **jsonc-parser**: 2 files

## Support (packages/navigator)

### Testing

- **Chai**: 7 files
- **sinon**: 1 file

### Other

- **minimatch**: 1 file

## Support (packages/notebook)

### Content

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

## Support (packages/output)

### Testing

- **Chai**: 2 files

### Other

- **p-queue**: 1 file

## Support (packages/plugin-ext-vscode)

### Testing

- **Chai**: 3 files
- **sinon**: 1 file

## Support (packages/plugin-ext)

### The base

- **vhost**: 1 file

### Content

- **escape-html**: 1 file

### Testing

- **Chai**: 38 files
- **sinon**: 1 file

### Tools

- **vscode-textmate**: 1 file

### Other

- **async-mutex**: 2 files
- **jsonc-parser**: 2 files
- **reflect-metadata**: 2 files
- **Lodash**: 1 file
- **mime**: 1 file
- **node-pty**: 1 file
- **SemVer**: 1 file
- **temp**: 1 file

## Support (packages/plugin-metrics)

### Testing

- **Chai**: 1 file
- **sinon**: 1 file

## Support (packages/plugin-utils)

### Testing

- **Chai**: 9 files

### Other

- **fs-extra**: 3 files
- **jsonc-parser**: 1 file

## Support (packages/preferences)

### Testing

- **Chai**: 9 files

### Other

- **jsonc-parser**: 3 files
- **async-mutex**: 1 file
- **fast-deep-equal**: 1 file
- **p-debounce**: 1 file

## Support (packages/process)

### Testing

- **Chai**: 3 files

### Other

- **node-pty**: 2 files
- **chalk**: 1 file
- **string-argv**: 1 file
- **temp**: 1 file

## Support (packages/property-view)

### Testing

- **Chai**: 2 files

## Support (packages/remote)

### Testing

- **Chai**: 5 files

### Tools

- **glob**: 1 file

### Other

- **ssh-config**: 3 files
- **ssh2**: 2 files
- **archiver**: 1 file
- **Socket.io**: 1 file
- **socket.io-client**: 1 file
- **ssh2-sftp-client**: 1 file

## Frontend (packages/scm)

### Interface

- **react-textarea-autosize**: 1 file

## Support (packages/scm)

### Testing

- **Chai**: 14 files
- **chai-string**: 2 files
- **sinon**: 1 file

### Other

- **diff**: 1 file
- **p-debounce**: 1 file
- **ts-md5**: 1 file

## Frontend (packages/search-in-workspace)

### Interface

- **react-textarea-autosize**: 1 file

## Support (packages/search-in-workspace)

### Testing

- **Chai**: 1 file

### Tools

- **@vscode/ripgrep**: 2 files

### Other

- **minimatch**: 1 file
- **temp**: 1 file

## Support (packages/task)

### Testing

- **Chai**: 7 files
- **sinon**: 1 file

### Other

- **p-debounce**: 2 files
- **async-mutex**: 1 file
- **jsonc-parser**: 1 file
- **reflect-metadata**: 1 file

## Support (packages/telemetry)

### Testing

- **Chai**: 9 files
- **sinon**: 2 files

## Support (packages/terminal-manager)

### Testing

- **Chai**: 2 files

## Frontend (packages/terminal)

### Interface

- **[xterm](https://seerepo.com/uses/xterm)**: 7 files
- **xterm-addon-fit**: 1 file

## Support (packages/terminal)

### Testing

- **Chai**: 9 files

### Other

- **p-debounce**: 1 file
- **reflect-metadata**: 1 file
- **temp**: 1 file

## Support (packages/toolbar)

### Other

- **jsonc-parser**: 1 file

## Support (packages/variable-resolver)

### Testing

- **Chai**: 4 files
- **sinon**: 1 file

## Support (packages/vsx-registry)

### Testing

- **Chai**: 7 files
- **sinon**: 1 file

### Other

- **limiter**: 1 file
- **luxon**: 1 file
- **p-debounce**: 1 file
- **SemVer**: 1 file

## Support (packages/workspace)

### Testing

- **Chai**: 7 files
- **sinon**: 4 files

### Other

- **jsonc-parser**: 2 files
- **temp**: 2 files

## Other repos with a similar stack

- [paperclipai/paperclip](https://seerepo.com/r/paperclipai/paperclip/built): Anthropic, OpenAI, MCP, React, Express, Mermaid, Zod, dompurify, Ajv, xterm · [Compare](https://seerepo.com/compare/eclipse-theia/theia/vs/paperclipai/paperclip)
- [cline/cline](https://seerepo.com/r/cline/cline/built): Anthropic, OpenAI, MCP, React, Mermaid, js-yaml, Zod, react-virtuoso, dompurify, react-textarea-autosize · [Compare](https://seerepo.com/compare/cline/cline/vs/eclipse-theia/theia)
- [ruvnet/ruflo](https://seerepo.com/r/ruvnet/ruflo/built): OpenAI, Hugging Face, MCP, React, Express, js-yaml, Zod, Ajv, prom-client · [Compare](https://seerepo.com/compare/eclipse-theia/theia/vs/ruvnet/ruflo)
- [Mintplex-Labs/anything-llm](https://seerepo.com/r/Mintplex-Labs/anything-llm/built): Anthropic, OpenAI, MCP, React, Express, ollama, react-tooltip, dompurify, markdown-it · [Compare](https://seerepo.com/compare/eclipse-theia/theia/vs/Mintplex-Labs/anything-llm)
- [twentyhq/twenty](https://seerepo.com/r/twentyhq/twenty/built): Electron, Anthropic, OpenAI, MCP, React, Express, Zod, dompurify, react-textarea-autosize · [Compare](https://seerepo.com/compare/eclipse-theia/theia/vs/twentyhq/twenty)
- [cheaper-inference/OmniRoute](https://seerepo.com/r/cheaper-inference/OmniRoute/built): Electron, MCP, React, Express, js-yaml, Zod, dompurify, Ajv · [Compare](https://seerepo.com/compare/cheaper-inference/OmniRoute/vs/eclipse-theia/theia)

## Frequently asked questions

### What language is theia written in?

theia is written in TypeScript, with 648,258 written lines.

### What framework does theia use?

theia is built with Electron, React, Express, and vhost.

### What database does theia use?

theia stores its data in electron-store.

### What does theia sign people in with?

theia signs people in with keytar.

### Does theia use AI?

Yes. theia uses AI through Anthropic, OpenAI, @openai/codex-sdk, and ollama.

The proof: [packages/ai-anthropic/src/node/anthropic-language-model.ts, line 42](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-anthropic/src/node/anthropic-language-model.ts#L42)

### What services does theia use?

theia uses Hugging Face, MCP, and idb.

The proof: [packages/ai-hugging-face/src/node/huggingface-language-model.ts, line 28](https://github.com/eclipse-theia/theia/blob/30a5482386400715f42b541b4b142fd399ada7f3/packages/ai-hugging-face/src/node/huggingface-language-model.ts#L28)

### Does theia have tests?

Yes. theia has 773 test files and is tested with Chai, sinon, Puppeteer, Mocha, jsdom, and chai-string.

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

The ones that share most of its stack: paperclipai/paperclip, cline/cline, and ruvnet/ruflo.

## 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.
