Agentโ†’Renderโ†’Chat
@ngaf/chat

Production agent chat UI in days, not sprints

The batteries-included Angular chat library. Built on the agent framework, Vercel's json-render spec, and Google's A2UI spec. Every feature included โ€” debug, theming, generative UI, streaming โ€” from day one.

Download the GuideView Docs
Angular 20+Vercel json-renderGoogle A2UIWCAG accessible
Without @ngaf/chat

Every team rebuilds the same chat UI. It takes 4-6 weeks and delays the real agent work.

  • โœ— Message rendering from scratch
  • โœ— Streaming indicators from scratch
  • โœ— Input handling from scratch
  • โœ— Accessibility added as afterthought
  • โœ— Generative UI bolted on later
  • โœ— Debug tooling usually skipped
With @ngaf/chat

Fully featured from day one. No feature backlog.

  • โœ“ Pre-built accessible components
  • โœ“ Vercel json-render spec via @ngaf/render
  • โœ“ Google A2UI spec โ€” 18 built-in components, v0.9 CheckRule validation
  • โœ“ Consumer-extensible action handlers for both specs
  • โœ“ Debug tooling + CSS custom property theming included
  • โœ“ Every feature ships together โ€” not incrementally

Features

Every chat capability, production-ready

Messages

Streaming message display with token-by-token rendering. Markdown support, auto-scroll, and accessible message list.

Input

Chat input with send and interrupt controls. Keyboard shortcuts, disabled state during streaming, accessible labels.

Generative UI

Inline spec rendering in conversation. Vercel json-render specs and Google A2UI surfaces render as native Angular components โ€” 18 built-in A2UI components, v0.9 CheckRule validation, and consumer-extensible action handlers.

Theming

CSS custom property theming that integrates with your design system. Swap colors, fonts, spacing without touching component code.

Debug

Agent state inspector for development. View messages, tool calls, interrupts, and streaming state in real time.

Developer Experience

Full-featured chat in a few lines

Prebuilt Chat
import { agent } from '@ngaf/langgraph';
import { ChatComponent } from '@ngaf/chat';

@Component({
  template: `
    <chat
      [agent]="agent"
      [registry]="registry"
    />
  `,
})
export class MyChatPage {
  protected readonly agent = agent({ apiUrl: 'http://localhost:2024', assistantId: 'chat_agent' });
  registry = inject(RenderRegistry);
}
Custom Theming
chat {
  --chat-bg: #f8f9fc;
  --chat-user-bg: #004090;
  --chat-user-color: #ffffff;
  --chat-assistant-bg: #f0f4ff;
  --chat-font-family: 'Inter', sans-serif;
  --chat-border-radius: 12px;
  --chat-input-border: 1px solid #e4e4e7;
}

Head to Head

Incrementally building chat vs @ngaf/chat

Capability
Build Incrementally
@ngaf/chat
Message rendering
Sprint 1
โœ“Included
Streaming indicators
Sprint 1
โœ“Included
Input handling
Sprint 2
โœ“Included
Accessibility (WCAG)
Sprint 2-3
โœ“Included
Theming / design system
Sprint 3
โœ“Included (CSS custom properties)
Generative UI (json-render)
Sprint 4+
โœ“Included โ€” Vercel json-render spec
Google A2UI spec
Sprint 5+
โœ“18 components, v0.9 validation, extensible handlers
Debug tooling
Often never
โœ“Included
Time to production
4-6 weeks
โœ“Days

Chat Guide

The Enterprise Guide to Agent Chat Interfaces in Angular

Five chapters covering the sprint tax, batteries-included components, theming and design system integration, generative UI with Vercel json-render, Google A2UI support, and debug tooling.

Part of the Cacheplane Angular Agent Framework.

โ†“ Download PDF

Optional โ€” Get notified of updates

The Cacheplane Stack

This library is part of a cohesive three-layer architecture.

Agent

@ngaf/langgraph

The reactive bridge to LangGraph

Explore Agent โ†’
Gen UI

@ngaf/render

Agents that render UI โ€” on open standards

Explore Render โ†’