Model or dataset
OvidijusParsiunas/deep-chat avatar
OvidijusParsiunas/deep-chat

Deep Chat: a web component for adding an AI chat window to an existing site

Fully customizable AI chatbot component for your website

3,730 stars456 forksTypeScriptMIT

At a glance

What is it?
Deep Chat is an MIT-licensed TypeScript component that drops a chat UI into a page and can talk to a backend you control or to a hosted AI API straight from the browser. The interesting part is the request contract, not the bubble styling.
Who is it for?
Adopt Deep Chat when the chat window is a small part of a larger product and you already have, or are willing to write, an HTTP endpoint that follows its request and response shape. Skip it if you need server-side conversation state, a hosted dashboard, or retrieval over your own documents, because none of those are in the README.
Can I use it commercially?
Yes. MIT 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 received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The gap Deep Chat fills is the chat window, not the model

Most teams building an assistant already have a model call somewhere. What they do not have is a message list, an input box, file attachment handling, a microphone button and a scroll behaviour that survives a long conversation. Deep Chat is aimed at that layer. The README describes it as a fully customizable AI chat component that can be injected into a website with one line of code, and the repository is organised around a component package plus example servers rather than around a hosted service.

The intended user is a front-end or full-stack developer who is comfortable wiring an HTTP endpoint and who wants the transcript UI to be a dependency rather than a project. It is not aimed at someone who wants a no-code assistant builder. There is no dashboard in the repository layout, no database, and no place to paste documents. The component renders and sends; the endpoint you point it at decides everything else.

How the request property and directConnection differ

There are two ways to get an answer into the window, and the choice has real consequences.

The first is the request property. You give the component a URL, and it posts to that URL in a shape the documentation defines, expecting a response in a shape it also defines. The README shows the minimal form as an attribute carrying JSON with a url key, and notes that the service has to handle the request and response formats used in Deep Chat. If your existing service speaks a different dialect, two escape hatches exist: interceptor properties that augment the transferred objects, and a handler function that takes over the request code entirely. Those two options are where most integration work actually happens.

The second is directConnection. Here the component talks to a hosted AI API from the browser, and the README lists more than 20 supported APIs, naming OpenAI and Claude among them. The release notes for 2.5.0 added Requesty, liteLLM and Dify to that list, and 2.5.1 is titled as deprecating the OpenAI Assistants API. The obvious trade-off is that a browser-side call means a browser-side key unless the provider offers a safe mechanism, and the README's example passes an optional key inline. Treat that path as a prototyping convenience or as something for keys you are willing to expose, and use request for anything else.

Installing Deep Chat and sending a first message

The README gives a single install command for the generic package. If you are in a React project it points you at a separate package instead, which is worth knowing before you start, because the two are not the same import.

bash
npm install deep-chat
bash
npm install deep-chat-react

After installing, the README says to add the element to your markup. The exact syntax varies by framework and the README links to a frameworks page rather than reproducing every variant, so the plain element below is the baseline.

html
<deep-chat></deep-chat>

At this point the window renders but has nothing to talk to. To connect it, the README shows the request attribute carrying a JSON object with a url key that points at your endpoint.

html
<deep-chat request='{"url":"https://service.com/chat"}'/>

What you should see after this is a working input box that posts to your URL, plus whatever your service returns rendered as a message. If nothing appears, the first thing to check is the response shape, since the README is explicit that the service must handle the formats Deep Chat uses. The repository also ships an llms.txt file intended as a reference for configuring the component with a code assistant, and the README includes a prompt that points an assistant at it.

Where the component gets in the way

The request contract is the main constraint. If your backend already returns a format you cannot change, you are writing an interceptor or a handler, and the README does not describe how far those can bend the payload. That is a documentation gap worth testing early rather than late.

Browser-side direct connections carry the key exposure problem described above, and the README does not present a mitigation. There is also no conversation store: the component can keep messages in browser storage, which the release notes describe as storing messages locally without a backend message integration, but that is per-browser and not a shared history. A multi-user product that needs to resume a conversation on another device will not get that from the component.

Finally, the feature list is broad, covering webcam capture, microphone recording, speech to text and speech to speech. Each of those pulls in browser permissions and provider support that the README does not enumerate per browser. If voice is central to your product rather than a nice extra, budget time to verify it in your target browsers before you commit to the component.

Deep Chat versus building on a headless chat SDK

The nearest alternative approach is a headless conversation library, where you get message state, streaming and tool-call plumbing as hooks or functions and render the interface yourself. The difference is where the work sits. A headless library asks you to build the transcript, the input, the scroll behaviour and the attachment UI, and in exchange it does not constrain your endpoint format or your markup.

Deep Chat inverts that. You get the window for free and you adapt your backend to its contract, or you use an interceptor. That is a good trade when the chat is one panel in a larger application and the visual result matters more than control over the transport. It is a poor trade when the conversation state is the product, because the component deliberately does not own it. There is also a middle option the README itself points at: the example servers in the repository, which show what a compatible endpoint looks like. Reading one of those before writing your own is faster than inferring the format from the attribute examples.

Maintenance, licence and the cost of staying current

The licence is MIT, which permits commercial use and modification, and the repository carries a LICENSE file at the top level. As with any MIT dependency, the obligation is essentially attribution, but the practical question for a component that renders user-visible UI is different: if you fork the styling, you own the merge cost on every release.

The release cadence visible in the repository is steady. 2.5.1 landed on 2026-08-27, 2.5.0 on 2026-07-19, and 2.4.2 on 2026-01-31, and the last push to the default branch was on 2026-09-14. The 2.5.1 notes are titled as deprecating the OpenAI Assistants API, which is the pattern to watch: provider-side changes arrive as component updates, and a pinned older version will eventually break against a provider that moved. Budget for periodic upgrades rather than a one-time install, and read the release notes before bumping, because features such as the directConnection providers have been added incrementally across minor versions.

Editorial conclusion

Adopt Deep Chat when the chat window is a small part of a larger product and you already have, or are willing to write, an HTTP endpoint that follows its request and response shape. Skip it if you need server-side conversation state, a hosted dashboard, or retrieval over your own documents, because none of those are in the README. Before committing, open the Connect page and the server template examples together and confirm your endpoint can return the Response format, including the streamed variant if you want tokens to appear as they arrive.

Frequently asked questions

How do I use Deep Chat?

Install the package with npm, add the deep-chat element to your markup, and give it a request attribute pointing at an endpoint that follows the Deep Chat request and response formats. If you would rather not change your service, the README points to interceptor properties and a handler function instead.

Is Deep Chat free?

The repository is licensed under MIT, which permits commercial use and modification. That covers the component itself; any AI API you connect it to is billed separately by that provider.

What is Deep Chat AI?

It is an AI chat component for websites, written in TypeScript and distributed as an npm package. The README describes it as a fully customizable chatbot component that can connect to popular AI APIs or to your own custom service.

Deep Chat versus ChatGPT, what is the difference?

ChatGPT is a finished assistant product. Deep Chat is a UI component you embed in your own site, and the model behind it is whatever endpoint or provider you configure through request or directConnection.

What is a deep chat?

In this repository the term names the component itself: an embeddable chat window you add to a page, which sends messages to a service you configure and renders the replies. The README does not define the phrase any more broadly than that.

Official sources

  1. License: MIT
  2. OvidijusParsiunas/deep-chat on GitHub
  3. Project website
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ovidijusparsiunas-deep-chat.svg)](https://hysenlabs.com/projects/ovidijusparsiunas-deep-chat)