finds.dev← search

// the find

OvidijusParsiunas/deep-chat

★ 3,638 · TypeScript · MIT · updated Jun 2026

Fully customizable AI chatbot component for your website

Deep Chat is a web component that wraps AI chat functionality into a single custom element. It handles the UI, streaming, file uploads, speech I/O, and direct connections to 20+ AI APIs. Aimed at developers who want to drop a chat interface into an existing app without building one from scratch.

Framework-agnostic web component means one codebase works in React, Vue, Svelte, Angular, or plain HTML without framework-specific wrappers (though a React package exists for convenience). The interceptor and handler escape hatches are well-designed — you can override request/response shapes without forking the component. Browser-hosted LLM support via WebLLM is a genuine differentiator for offline or privacy-sensitive use cases. Active maintenance cadence: the 2.x series ships real features (upwards mode, scroll button, OpenAI Realtime) not just dependency bumps.

Direct browser API key exposure is baked into the directConnection feature and the docs call it out only as a footnote — a significant footgun for anyone who ships it without reading carefully. The component is a monolith: connecting to 20+ APIs means every user downloads service code for providers they'll never use, and there's no apparent tree-shaking story for the service implementations. State management is opaque — if you need to programmatically control conversation history beyond what browserStorage offers, you're fighting the component's internal state rather than owning it. The TypeScript types directory has ~80 separate files for individual provider types, which suggests the internal architecture is additive rather than abstracted; adding a new provider means copying a pattern rather than implementing an interface.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →