Model or dataset
langchain-ai/agent-chat-ui avatar
langchain-ai/agent-chat-ui

Agent Chat UI: A Thin Chat Front End for Any LangGraph Server

🦜💬 Web app for interacting with any LangGraph agent (PY & TS) via a chat interface.

3,252 stars701 forksTypeScriptMIT

At a glance

What is it?
Agent Chat UI is a Next.js chat interface that talks to any LangGraph server exposing a messages key. It is handy for demos and internal tools, but its production story depends on a proxy package and a few sharp edges.
Who is it for?
Adopt Agent Chat UI if you build LangGraph agents in Python or TypeScript and want a quick, hosted or local chat shell without writing your own message list and streaming logic. Skip it if you need deep control over chat UI internals, offline operation, or a production deployment without an API key proxy.
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?
No. The owners have archived the repository on GitHub, so it is read-only and no longer receives changes.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

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

From daily snapshots

Star history

  • langchain-ai/agent-chat-ui3,252 ★ · +113
Star history
Repository2026-09-102026-11-13
langchain-ai/agent-chat-ui3.1k3.3k

113 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What Agent Chat UI actually is

Agent Chat UI is a Next.js application that gives you a chat window for any LangGraph server that keeps conversation state under a messages key. It is not an agent framework and it does not run graphs. It is a presentation layer. You point it at a deployment URL and an assistant ID, and it fetches runs and streams responses. The target user is a LangGraph developer who wants a quick way to talk to an agent during development, or a team that wants a branded chat surface without building one from scratch. The README positions it both as a local dev tool and as something you can deploy, with a hosted version at agentchat.vercel.app. The core value is that it works with both Python and TypeScript LangGraph servers, as long as they expose the expected state shape.

How the data flow works

The UI connects directly to a LangGraph server from the browser in development. You enter a deployment URL and an assistant ID, and the app uses those to submit runs and fetch state. Streaming display relies on on_chat_model_stream events. The UI listens for those events and renders tokens as they arrive. If a model is tagged with langsmith:nostream, those events are suppressed, so nothing appears until the message is saved to graph state. For permanent hiding, a message ID prefixed with do-not-render- is filtered out by the UI, regardless of streaming. That filter is a simple string check on the ID. Artifacts are a second channel: the UI reads thread.meta.artifact from the stream context and renders a side panel. The provided useArtifact hook returns a component and a state bag, so your agent can push structured content like a document viewer or a chart next to the chat.

Getting it running: commands and config

The quickest path is the scaffolding command: npx create-agent-chat-app. That clones or initializes the project. If you prefer a manual clone, run git clone https://github.com/langchain-ai/agent-chat-ui.git, then cd agent-chat-ui, then pnpm install, then pnpm dev. The app appears at http://localhost:3000. On first run, a setup form asks for the deployment URL, the assistant or graph ID, and a LangSmith API key when connecting to deployed servers. There is a toggle for Agent Builder deployments that sets the auth scheme to langsmith-api-key automatically. You can bypass the form with environment variables: NEXT_PUBLIC_API_URL, NEXT_PUBLIC_ASSISTANT_ID, and NEXT_PUBLIC_AUTH_SCHEME. Copy .env.example to .env and fill those values. For Agent Builder, set NEXT_PUBLIC_AUTH_SCHEME=langsmith-api-key. The environment variable approach is useful for scripting or for embedding the UI in a demo where you do not want users to type a URL.

Controlling message visibility has two layers

The README describes two separate mechanisms for hiding messages, and the distinction matters. The first is for live streaming only. If you add the langsmith:nostream tag to a chat model's config, the UI will not render tokens as they stream. But the message will still appear after the LLM call finishes, if it gets saved to state unchanged. That is a common pattern for hiding intermediate reasoning or tool-call noise that you do not want to flash on screen. The second mechanism is permanent. You prefix the message ID with do-not-render- before adding it to graph state, and also add the langsmith:do-not-render tag to the model config. The UI filters out any message whose ID starts with that prefix. This is a blunt instrument: it relies on your graph code remembering to do the prefixing. If a message slips through without the prefix, it will render. The tag and prefix must be applied consistently in both Python and TypeScript agents, which adds a maintenance burden across language boundaries.

Rendering artifacts requires agent cooperation

Agent Chat UI supports a side panel for artifacts, but it is not automatic. The UI reads thread.meta.artifact from the stream context. Your LangGraph server must populate that metadata field with a component and a context bag. The README provides a useArtifact hook that returns an Artifact component and an open state setter. Your agent code decides what context to send. The example shows a Writer component that displays a title, description, and content. This is a clever way to move beyond plain text chat, but it means your graph must be written with this UI in mind. The artifact protocol is not a LangGraph standard; it is a convention this UI expects. If you switch to a different chat front end, your artifact logic will not carry over. That is a lock-in consideration, though the MIT license means you can fork and adapt the hook.

Production authentication is the weak spot

The README is candid about the development versus production gap. In development, the browser talks directly to the LangGraph server, and each user supplies their own LangSmith API key. That does not scale to a public deployment. The recommended fix is an API passthrough package called langgraph-nextjs-api-passthrough. It proxies requests from the Next.js server to your LangGraph server, attaching your LangSmith API key server-side so end users never see it. The README calls this the quickest way to productionize. That is a real dependency on a separate package, which may lag behind LangGraph API changes. The README also mentions a second option. Before committing, you need to read the passthrough package's docs and confirm it supports your LangGraph deployment type.

Limitations and when it is the wrong tool

Agent Chat UI assumes your LangGraph server exposes a messages key in its state. If your graph uses a different state key, the UI will not work without modification. The README gives no configuration for renaming that key. The UI also assumes a LangGraph server with a compatible API. It is not a generic LLM chat front end. For a graph that does heavy tool use or requires custom UI controls beyond the artifact side panel, you will likely need to extend the React components. The project has no recent releases listed, only a default branch with active pushes. That means you are tracking main, and behavior can change under you. The hosted site and the npx command are conveniences, but they point at whatever the latest commit is. If you need a stable chat UI for a production product, this is a starting point, not a finished component. You should budget time to fork, pin, and test against your specific LangGraph version.

Alternatives and what makes this one different

The obvious alternative is to build a chat UI directly against the LangGraph SDK, or to use LangGraph's own platform-provided chat interface if your deployment includes one. The difference in approach is that Agent Chat UI is a separate, reusable Next.js app that you can host anywhere, and it decouples the front end from the graph runtime. Another alternative is a generic chatbot UI like Chatbot UI or LibreChat, which talk to OpenAI-compatible APIs. Those do not understand LangGraph's run and thread semantics, so you would need an adapter layer. Agent Chat UI is purpose-built for the LangGraph protocol, including streaming events and thread metadata. That closeness is its strength, but also its limitation: it only works with LangGraph, while a generic UI with an adapter could also talk to other backends. If you already live in the LangGraph ecosystem, the tighter integration saves you from writing a custom streaming handler.

Maintenance, license, and upgrade considerations

The project is MIT licensed, which means you can use, modify, and embed it without paying a fee, and you are not required to share your changes. The repository is not archived and received a push in September 2026, so it appears actively maintained. However, the absence of tagged releases is a real operational concern. There is no version number to depend on. Your package manager will track a branch or a commit. For a production deployment, you should pin the exact commit you test against and review diffs before updating. The dependency on langgraph-nextjs-api-passthrough adds a second moving part to track. The README also mentions a video setup guide, which suggests the setup has enough friction that the maintainers felt a walkthrough was necessary. The environment variable configuration is simple, but the production auth path is the part most likely to change as LangGraph evolves.

Editorial conclusion

Adopt Agent Chat UI if you build LangGraph agents in Python or TypeScript and want a quick, hosted or local chat shell without writing your own message list and streaming logic. Skip it if you need deep control over chat UI internals, offline operation, or a production deployment without an API key proxy. Before adopting, verify that your graph state uses a messages key, that your LangGraph server version matches the SDK this UI expects, and that the langgraph-nextjs-api-passthrough package covers your auth needs. The project is MIT licensed and actively pushed, but it has no tagged releases, so pin to a commit hash if you depend on it.

Frequently asked questions

How to use agent chat UI?

Scaffold a project with the create-agent-chat-app command or clone the repository, install dependencies with pnpm, then run pnpm dev and open the local port three thousand. You are then asked for a server address, a graph or assistant identifier, a tracing key if the server is deployed, and one toggle for a specific hosting product.

What server does agent-chat-ui talk to?

Any graph server whose state has a key of the expected name holding the messages. That single field is the entire integration contract, alongside a deployment address and a graph or assistant identifier.

Can agent-chat-ui go to production as configured?

Not in its default shape. The readme says the default connects to your server directly from the client and that this is not possible for production, because every user would need their own key and to configure the graph themselves.

How do I hide a message in agent-chat-ui?

Two ways. A reserved model tag suppresses the streaming events but the message still appears once the call completes. To keep it hidden permanently you rewrite the message identifier with a reserved prefix before storing it in state, and add a second reserved tag. The filtering happens in the interface, so the message stays in your graph state.

Does the agent-chat-ui proxy authenticate its callers?

No, and the readme says so. The recommended third-party proxy attaches your key on the server side so users never need one, but it explicitly does not authenticate the callers of that proxy, and the linked guidance is not visible in the copy of the documentation available here.

Is agent-chat-ui published as a package?

No. The manifest is marked private with a placeholder version, and the repository has no releases or tags. It is distributed as source, a scaffolding command, and a public deployment on a hosting platform.

Official sources

  1. Issues
  2. langchain-ai/agent-chat-ui on GitHub
  3. License: MIT
  4. Project website
  5. README
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/langchain-ai-agent-chat-ui.svg)](https://hysenlabs.com/projects/langchain-ai-agent-chat-ui)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/langchain-ai-agent-chat-ui.svg)](https://hysenlabs.com/projects/langchain-ai-agent-chat-ui)

Was this useful?