ai-assistant-chat
Build self-hosted AI chat assistants using CopilotKit + LangGraph. Use when implementing conversational AI interfaces with agentic backends, streaming responses, shared state between frontend and backend, or generative UI. This pattern uses NO hosted services - both CopilotKit runtime and LangGraph agent run on your own infrastructure. Triggers on requests to build chat interfaces, AI assistants, conversational agents, or integrate LangGraph with React frontends.
Best use case
ai-assistant-chat is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Build self-hosted AI chat assistants using CopilotKit + LangGraph. Use when implementing conversational AI interfaces with agentic backends, streaming responses, shared state between frontend and backend, or generative UI. This pattern uses NO hosted services - both CopilotKit runtime and LangGraph agent run on your own infrastructure. Triggers on requests to build chat interfaces, AI assistants, conversational agents, or integrate LangGraph with React frontends.
Teams using ai-assistant-chat should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/ai-assistant-chat/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ai-assistant-chat Compares
| Feature / Agent | ai-assistant-chat | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Build self-hosted AI chat assistants using CopilotKit + LangGraph. Use when implementing conversational AI interfaces with agentic backends, streaming responses, shared state between frontend and backend, or generative UI. This pattern uses NO hosted services - both CopilotKit runtime and LangGraph agent run on your own infrastructure. Triggers on requests to build chat interfaces, AI assistants, conversational agents, or integrate LangGraph with React frontends.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Self-Hosted AI Assistant Chat (CopilotKit + LangGraph)
Build production-ready AI chat interfaces with full infrastructure control. This pattern connects a Next.js frontend (CopilotKit) to a Python backend (LangGraph) without relying on any hosted AI orchestration services.
## What This Pattern Is NOT
- **NOT Hosted CopilotKit**: No `cloud.copilotkit.ai` - the CopilotKit runtime runs in your Next.js API route
- **NOT Hosted LangGraph**: No LangSmith Cloud or LangGraph Platform - the agent runs on a self-hosted FastAPI server
- **NOT SaaS Dependencies**: Full control over data flow, no external orchestration services
## Architecture Overview
```
Browser
↓ (HTTP/SSE)
Next.js Frontend (port 3000)
├── React UI (CopilotKit components)
└── /api/copilotkit (CopilotRuntime bridge)
↓ (HTTP POST)
FastAPI Backend (port 8123)
├── LangGraph Agent (state machine)
└── Tool Execution (backend + frontend actions)
```
For detailed architecture diagrams and data flow: See [references/architecture.md](references/architecture.md)
## Quick Start
### 1. Frontend Setup (Next.js + CopilotKit)
Install CopilotKit packages:
```bash
pnpm add @copilotkit/react-core @copilotkit/react-ui @copilotkit/runtime
```
Wrap app with CopilotKit provider pointing to local runtime:
```tsx
// layout.tsx
import { CopilotKit } from "@copilotkit/react-core";
export default function Layout({ children }) {
return (
<CopilotKit runtimeUrl="/api/copilotkit" agent="my_agent">
{children}
</CopilotKit>
);
}
```
Create the runtime bridge (this is the self-hosted runtime):
```ts
// app/api/copilotkit/route.ts
import { CopilotRuntime, ExperimentalEmptyAdapter } from "@copilotkit/runtime";
import { LangGraphHttpAgent } from "@copilotkit/runtime/agents";
const AGENT_URL = process.env.AGENT_URL || "http://localhost:8123";
export async function POST(req: Request) {
const agent = new LangGraphHttpAgent({
name: "my_agent",
url: AGENT_URL,
agentId: "my_agent",
});
const runtime = new CopilotRuntime({
agents: [agent],
modelAdapter: new ExperimentalEmptyAdapter(),
});
return runtime.streamHttpServerResponse(req, req.headers);
}
```
For complete frontend setup: See [references/frontend-setup.md](references/frontend-setup.md)
### 2. Backend Setup (FastAPI + LangGraph)
Install Python dependencies:
```bash
pip install langgraph langchain-openai copilotkit ag-ui-langgraph fastapi uvicorn
```
Create the LangGraph agent:
```python
# agent/src/agent.py
from langgraph.graph import StateGraph, END
from copilotkit import CopilotKitState
class AgentState(CopilotKitState):
# Add custom state fields synced with frontend
custom_data: list[str] = []
def chat_node(state: AgentState, config):
model = ChatOpenAI(model="gpt-4o")
# Bind tools from CopilotKit state
model_with_tools = model.bind_tools(state.copilotkit.tools)
response = model_with_tools.invoke(state.messages, config)
return {"messages": [response]}
# Build graph
workflow = StateGraph(AgentState)
workflow.add_node("chat", chat_node)
workflow.set_entry_point("chat")
graph = workflow.compile(checkpointer=MemorySaver())
```
Create FastAPI server:
```python
# agent/main.py
from fastapi import FastAPI
from ag_ui.langgraph import LangGraphAGUIAgent
app = FastAPI()
agent = LangGraphAGUIAgent(graph=graph, config={"configurable": {"thread_id": "1"}})
@app.post("/")
async def run_agent(request: Request):
return agent.run(request)
```
For complete backend setup: See [references/backend-setup.md](references/backend-setup.md)
## Key Integration Points
### Shared State
State defined in `AgentState` automatically syncs between frontend and backend:
```tsx
// Frontend: Access shared state
const { state } = useCoAgent<AgentState>();
console.log(state.custom_data);
```
```python
# Backend: Modify shared state
def my_node(state: AgentState):
return {"custom_data": state.custom_data + ["new item"]}
```
### Frontend Actions (Generative UI)
Define actions in React that the backend can invoke:
```tsx
useCopilotAction({
name: "render_weather",
description: "Display weather card",
parameters: [{ name: "location", type: "string" }],
renderAndWaitForResponse: ({ args }) => <WeatherCard location={args.location} />,
});
```
The agent can call `render_weather` and receive user responses.
### Backend Tools
Define tools that execute server-side:
```python
@tool
def search_database(query: str) -> str:
"""Search the internal database."""
return db.search(query)
# Add to model binding
model.bind_tools([search_database] + state.copilotkit.tools)
```Related Skills
ai-assistants
AI-powered development tools configuration and usage
ai-apis-like-chatgpt
How to use AI APIs like OpenAI, ChatGPT, Elevenlabs, etc. When a user asks you to make an app that requires an AI API, use this skill to understand how to use the API or how to respond to the user.
Machine Vision Assistant
Comprehensive MV learning assistant for industrial computer vision applications. Use when studying image processing, feature extraction, object detection, quality inspection, or automation systems. Helps with (1) concept explanation with real-world examples, (2) OpenCV code analysis and debugging, (3) homework guidance without direct answers, (4) lab experiment setup and troubleshooting, (5) quiz generation for self-assessment, (6) knowledge summarization and review materials, (7) vision system design and optimization, (8) research paper reading and comprehension, (9) generating MV lab code with bilingual comments.
admin-chat-ui-flow
Padroniza UX visual e fluxo da tela de chat admin com estilo da area cliente.
slack-chat
communicate via slack-chat channels and direct messages with users
rails-upgrade-assistant
Analyzes Rails applications and generates comprehensive upgrade reports with breaking changes, deprecations, and step-by-step migration guides for Rails 7.0 through 8.1.1. Use when upgrading Rails applications, planning multi-hop upgrades, or querying version-specific changes.
prophet-chat
The First Oracle of the Eternal Monad. Autonomous AI missionary on Moltbook spreading the gospel of PRPH on the Monad blockchain.
paper-writing-assistant
Assist in drafting research papers and meeting notes, enforcing academic rigor and formatting.
health-chat
Unified health conversation entry point - automatically loads all health data for each conversation, supports natural language queries, and intelligently routes to appropriate health data processing
Directus AI Assistant Integration
Build AI-powered features in Directus: chat interfaces, content generation, smart suggestions, and copilot functionality
create-assistant
Create and configure Vapi voice AI assistants with models, voices, transcribers, tools, hooks, and advanced settings. Use when building voice agents, phone bots, customer support assistants, or any conversational AI that handles phone or web calls.
claw-chat
Real-time chat platform for AI agents. Global chat, private rooms, bot directory.