🔧 AI Nachrichten Major AI platforms go down in unprecedented simultaneous outage(03.09.2026 um 17:34 Uhr)
🔧 AI Nachrichten ChatGPT, Claude, and Grok Down? Users Report Widespread Outages(03.09.2026 um 19:14 Uhr)
🔧 AI Nachrichten OpenAI Launches GPT-6 Astra, Says We May Have Entered the AGI Era(03.09.2026 um 22:08 Uhr)
🔧 AI Nachrichten Claude Comes to CarPlay as Fifth Major AI Chatbot App(05.09.2026 um 05:31 Uhr)
🔧 AI Nachrichten OpenAI’s GPT-6 Astra Is AGI, Says NVIDIA CEO Jensen Huang(07.09.2026 um 06:31 Uhr)
🔧 AI Nachrichten Blame AI companies for Mac mini and Mac Studio shortage(31.08.2026 um 10:32 Uhr)
🔧 AI Nachrichten Major AI platforms go down in unprecedented simultaneous outage(03.09.2026 um 17:34 Uhr)
🔧 AI Nachrichten ChatGPT, Claude, and Grok Down? Users Report Widespread Outages(03.09.2026 um 19:14 Uhr)
🔧 AI Nachrichten OpenAI Launches GPT-6 Astra, Says We May Have Entered the AGI Era(03.09.2026 um 22:08 Uhr)
🔧 AI Nachrichten Claude Comes to CarPlay as Fifth Major AI Chatbot App(05.09.2026 um 05:31 Uhr)
🔧 AI Nachrichten OpenAI’s GPT-6 Astra Is AGI, Says NVIDIA CEO Jensen Huang(07.09.2026 um 06:31 Uhr)
🔧 AI Nachrichten Blame AI companies for Mac mini and Mac Studio shortage(31.08.2026 um 10:32 Uhr)

🔧 Programmierung 🕛 kürzlich 12 Min Lesezeit
0

Introducing Angular support for CopilotKit: bring any Agent into your app

↗ Quelle (dev.to)
🗣️ Stimme:
📑 Inhaltsübersicht

Angular apps can now run any agent, with the streaming, tool calls, and shared state already handled.



Today we're releasing agent into your Angular app. It's built with Angular's own patterns, standalone components, dependency injection and signals.



You get the building blocks for agent-native apps in Angular: pre-built chat components or a fully headless setup, generative UI, shared state, human-in-the-loop, multimodal attachments, threads and more.



Use the CLI to scaffold a full starter Angular app with a Google ADK agent.




CODE
npx copilotkit@latest init --framework adk-angular





Let's see how to set everything up, then go through each of the pieces and give your agent the context. Quickstart docs are on







How everything fits together



Everything runs on



Your Angular app is the browser half. The runtime is a small Node server that keeps your model credentials off the client. Everything below the AG-UI line is swappable, including running the model locally.







Set up CopilotKit in your Angular app



The CLI scaffolds all three parts for you, including a runtime server with a Google ADK agent, already wired with generative UI and threads.



CODE
npx copilotkit@latest init --framework adk-angular --name my-angular-adk-app





endpoint, which is where your agent runs.



CODE
// src/app/app.config.ts
import { ApplicationConfig, provideZonelessChangeDetection } from "@angular/core";
import { provideCopilotKit, provideCopilotChatConfiguration } from "@copilotkit/angular";

export const AGENT_ID = "default";

export const appConfig: ApplicationConfig = {
providers: [
provideZonelessChangeDetection(),
provideCopilotKit({
runtimeUrl: "http://localhost:8200/api/copilotkit",
}),
// owns the active thread that the threads drawer drives
provideCopilotChatConfiguration({ agentId: AGENT_ID }),
],
};





Now import the stylesheet. It comes with everything the chat needs, so you don't have to write any CSS.



CODE
/* src/styles.css */
@import "@copilotkit/angular/styles.css";





You can drop in the ready-made chat, compose it from smaller pieces, or go fully headless and build your own UI.



CODE
// src/app/app.ts
import { Component } from "@angular/core";
import {
CopilotChat,
CopilotThreadsDrawer,
CopilotChatMessageView,
CopilotChatInput,
} from "@copilotkit/angular";
import { AGENT_ID } from "./app.config";

@Component({
selector: "app-root",
imports: [CopilotChat, CopilotThreadsDrawer, CopilotChatMessageView, CopilotChatInput],
template: `
<!-- pre-built chat component -->
<copilot-chat [agentId]="AGENT_ID" />

<!-- or compose the pieces into your own panel -->
<aside class="copilot-panel">
<copilot-threads-drawer />
<copilot-chat-message-view />
<copilot-chat-input />
</aside>
`
,
})
export class App {
protected readonly AGENT_ID = AGENT_ID;
}





For a fully custom UI, injectAgentStore() gives you the agent's messages and run state as signals, and you render everything yourself. I've covered this in-depth in the shared state section.



The last piece is the runtime.



CODE
// server.ts
import "dotenv/config";
import { createServer } from "node:http";
import { BuiltInAgent, CopilotRuntime } from "@copilotkit/runtime/v2";
import { createCopilotNodeListener } from "@copilotkit/runtime/v2/node";

const runtime = new CopilotRuntime({
agents: {
default: new BuiltInAgent({
model: "openai:gpt-5.5",
prompt: "You are a helpful assistant inside an Angular app.",
}),
},
});

createServer(
createCopilotNodeListener({ runtime, basePath: "/api/copilotkit", cors: true }),
).listen(8200, () => {
console.log("Copilot Runtime on http://localhost:8200/api/copilotkit");
});





The agent is named default on purpose, since that's the AGENT_ID the chat is pointed at.



That's the whole setup. It streams responses, renders tool calls, and keeps conversation state. Read more on the







Generative UI, native in Angular



Generative UI lets the agent build interfaces in real time. That ranges from the agent picking components you already wrote, to assembling them from a catalog you define, to generating a whole surface on its own.



If you are interested, read more on the



You can also use , which is worth a read if you want to see it end to end.









Human-in-the-loop: pause for approval



Some critical actions shouldn't run on their own like deleting a record or sending an email, so it's important to configure human-in-the-loop. It pauses the agent mid-run and waits for your approval before it continues.



The component reads the paused tool call, shows the controls, and calls respond() to unblock the agent. Whatever you pass to respond() becomes the tool result, so the approve and cancel paths send different messages.



CODE
// src/app/delete-confirm.ts
import { Component, inject, input } from "@angular/core";
import type { HumanInTheLoopToolCall } from "@copilotkit/angular";
import { TaskStore } from "./task-store";

@Component({
selector: "app-delete-confirm",
standalone: true,
template: `
@if (toolCall().status === "complete") {
<div class="resolved">{{ toolCall().result }}</div>
} @else {
<div class="confirm">
<p>Delete "{{ toolCall().args.title }}"?</p>
<button class="danger" (click)="approve()">Delete</button>
<button (click)="cancel()">Keep it</button>
</div>
}
`
,
})
export class DeleteConfirm {
private store = inject(TaskStore);
readonly toolCall =
input.required<HumanInTheLoopToolCall<{ id: string; title: string }>>();

approve(): void {
const { id, title } = this.toolCall().args as { id: string; title: string };
this.store.remove(id);
this.toolCall().respond?.(`Deleted "${title}".`);
}

cancel(): void {
this.toolCall().respond?.("User kept the task.");
}
}





Register it as a human-in-the-loop tool. There's no handler here, unlike a frontend tool, because the component is the handler. The outcome depends on what the person clicks.



CODE
// inside a component's constructor (injection context)
import { registerHumanInTheLoop } from "@copilotkit/angular";
import { z } from "zod";
import { DeleteConfirm } from "./delete-confirm";

registerHumanInTheLoop({
name: "delete_task",
description: "Delete a task. Requires user confirmation.",
parameters: z.object({ id: z.string(), title: z.string() }),
component: DeleteConfirm,
});





Now, if you ask the agent to delete something, the agent will stop the run and ask for your confirmation before proceeding.





The snippets use



That's the whole loop. The agent sees your state, changes it through tools, renders UI for the result, and pauses for a person when it matters.







Available today



@copilotkit/angular is open source in the now taking on its ongoing maintenance in collaboration with CopilotKit.






  • , . thanks for reading!



    Follow CopilotKit on and






Vollständiger Original-Bericht
Ausführliche Details, Code-Beispiele & Hersteller-Stellungnahme auf dev.to.
↗ Original-Artikel auf dev.to lesen
Wie bewertest du diesen Beitrag?
1 Klick Feedback
Teilen mit Netzwerk & Team:

Community-Analysen & Experten-Meinungen 0

Verfasse deine eigene Analyse, teile Workarounds oder diskutiere diesen Vorfall im Blog.
Noch keine Community-Analyse verfasst. Markiere einen Textabschnitt oder klicke oben auf Eigene Analyse verfassen“!
Community Pulse: Relevanz-Einschätzung
1 Klick Experten-Votum
🔴 Akute Relevanz 0%
🟡 In Evaluierung 0%
🟢 Keine Auswirkung 0%
Spannende Innovation 0%
Verwandte Story-Cluster & Quellen (Vektor-KI)
Port 8095 Engine
3 Quellen
GPT-6 Astra Release Today? OpenAI’s Next Major AI Model Is Almost Here
1 Quelle
Apple accuses OpenAI of destroying evidence as trade-secrets fight intensifies
1 Quelle
Major AI platforms go down in unprecedented simultaneous outage
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten Introducing Angular support for CopilotKit: bring any Agent into your app

Thematisch verwandte Begriffe: Introducing, Angular, support, CopilotKit · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...