Quick Start
Let's build a streaming chat UI with @threadplane/chat in 5 minutes.
Angular 20+ project with an agent provider configured. See Agent Installation if you need help.
The provider steps below assume a running LangGraph server at http://localhost:2024. If you don't have one, jump to Run with no backend โ mockAgent() drives the UI with canned messages so you can see <chat> render before wiring a real agent.
Evaluating? No license needed โ the chat runs without a token (with a one-time advisory console warning). Shipping commercially? See Installation for license activation.
marked is the markdown renderer used for assistant messages.
injectAgent() returns the singleton wired up in Step 2 โ no extra provider needed here. To host several <chat> surfaces that share a backend URL but target different graphs, re-provide provideAgent({...}) in a component's providers: [] array; Angular's hierarchical DI scopes that override to the subtree. See the Multiple agents note in Installation for the full pattern.
That's it โ no Tailwind setup, no PostCSS config, no global stylesheet import. The chat ships with its own design tokens and component-scoped styles.
#Run with no backend
No LangGraph server yet? Bind <chat> to mockAgent() from @threadplane/chat. It implements the same Agent contract with canned messages, so the UI renders exactly as it will against a real agent โ only the responses are static.
With mockAgent() you can drop both provideAgent() calls โ the agent is constructed directly in the component, no DI wiring or apiUrl required. Swap it for injectAgent() once your backend is up.
#What's Next
Embedded, popup, or sidebar.
Customize colors, fonts, and shapes.
Full primitive and composition reference.
Bake in your license at build time and swap the mock for a real adapter โ see Installation step 2 for build-time license injection and Agent deployment for the backend.