Skip to main content
@ade-dev/chat-ui renders an agent conversation for your users. There are no lanes, projects, repos, or worktrees in any prop or any string it can display.
React and React DOM are peers (^18 or ^19). @ade-dev/sdk is an optional peer used for types only.
<AdeChat> is transcript above, composer with the model rail below. No header bar. Changing threadKey opens a different conversation. adaptSdkClient maps a real @ade-dev/sdk client onto the view contract. Any SDK-shaped proxy works — for example a renderer that talks to main over a WebSocket.

Activity labels

Tool names stay in the agent transcript. Your users should see a sentence.
Resolution order: resolve() → exact key → longest wildcard prefix → * → the raw tool name. A bare string labels the running phase only, so a finished chip never keeps saying “Searching…”.

Theming

CSS custom properties only. No Tailwind, no class overrides. createTheme({ accent, background, foreground, muted, danger, success, radius, fontFamily, monoFontFamily, fontSize, space, scheme }) returns the full token set. Light/dark is inferred from background luminance unless you set scheme. Pass disableStyles if you inject the stylesheet yourself.

Standalone components

Every piece is importable without <AdeChat>: Composer rule: submitting during a running turn dispatches onSteer, never a second onSend. A failed send restores the draft.

Next

Runtime

What the sidecar actually is, and what doctor() checks.