## What does this PR do? Corrects scaffolded template instructions so generated projects match their actual package scripts and runtime requirements. The updates remove stale duplicate setup steps, fix provider environment examples, align Python version and uv guidance, and document that the threads template npm run dev starts its Docker Compose infrastructure. ## Related PRs and Issues - Companion Intelligence CLI PR: https://github.com/CopilotKit/Intelligence/pull/160 ## Checklist - [x] I have read the Contribution Guide - [x] If the PR changes or adds functionality, I have updated the relevant documentation - [ ] Allow edits by maintainers is checked
CopilotKit + LangGraph (Python)
A starter template for building AI agents using LangGraph (Python) and CopilotKit, with optional CopilotKit Intelligence for durable conversation threads.
Architecture
This project is a monorepo with three services:
| Service | Port | Description |
|---|---|---|
Frontend (apps/app) |
3000 | Vite + React app with CopilotKit chat UI |
BFF (apps/bff) |
4000 | Hono server running the CopilotKit runtime |
Agent (apps/agent) |
8123 | Python LangGraph agent |
When threads are enabled, additional infrastructure runs via Docker Compose:
| Service | Port | Description |
|---|---|---|
| PostgreSQL | 5432 | Thread and event storage |
| Redis | 6379 | Session/cache |
| Intelligence | 4201, 4401 | All-in-one CopilotKit Intelligence container (app-api on 4201, realtime-gateway on 4401, plus thread-culler and db-migrations, under s6-overlay). |
Prerequisites
- Node.js 18+
- Python 3.12+
- npm 10+
- OpenAI API Key
- Docker (for threads/intelligence support)
Getting Started
- Install dependencies:
npm install
- Set up environment variables:
cp .env.example .env
Edit .env and add your OpenAI API key.
- Get a license key (if you don't already have one):
copilotkit license -n my-project
This authenticates you and issues a COPILOTKIT_LICENSE_TOKEN. Add it to your .env.
- Start all services:
npm run dev
This starts Docker Compose infrastructure first, then starts the frontend, BFF, and agent concurrently.
The infrastructure step pulls ghcr.io/copilotkit/intelligence/composite — a single container that runs app-api, realtime-gateway, thread-culler, and the db-migrations oneshot together under s6-overlay supervision. The per-service images remain available at ghcr.io/copilotkit/intelligence/{app-api,realtime-gateway,thread-culler,db-migrations} if you'd rather run them separately.
You can also run each piece directly:
npm run dev:infra
npm run dev:app
npm run dev:bff
npm run dev:agent
After infrastructure is already running, use the app, BFF, and agent commands directly when you only need to restart one service.
Removing Threads
To strip out threads/intelligence and use this as a plain CopilotKit + LangGraph demo:
Frontend
- Delete
apps/app/src/components/threads-drawer/(the entire directory) - Revert
apps/app/src/App.tsxto remove theThreadsDrawercomponent and the thread-aware layout wrapper. The app should go back to:
import { CopilotChat, CopilotKitProvider } from "@copilotkit/react-core/v2";
import { ExampleLayout } from "@/components/example-layout";
import { ExampleCanvas } from "@/components/example-canvas";
import { useGenerativeUIExamples, useExampleSuggestions } from "@/hooks";
import { ThemeProvider } from "@/hooks/use-theme";
function HomePage() {
useGenerativeUIExamples();
useExampleSuggestions();
return (
<ExampleLayout
chatContent={
<CopilotChat input={{ disclaimer: () => null, className: "pb-6" }} />
}
appContent={<ExampleCanvas />}
/>
);
}
export default function App() {
return (
<ThemeProvider>
<CopilotKitProvider runtimeUrl="/api/copilotkit">
<HomePage />
</CopilotKitProvider>
</ThemeProvider>
);
}
BFF
- In
apps/bff/src/server.ts, remove theCopilotKitIntelligenceimport and configuration block. Change theCopilotRuntimeoptions:- Remove
intelligence - Remove
identifyUser - Remove
licenseToken
- Remove
- Switch the endpoint back to the non-v2 API if desired (or keep v2 without intelligence — both work)
Infrastructure
- Delete
docker-compose.ymlanddocker/init-db/ - Remove the
INTELLIGENCE_*variables from.env/.env.exampleif you are no longer using CopilotKit Intelligence
Summary of files to touch
| Action | Path |
|---|---|
| Delete | apps/app/src/components/threads-drawer/ |
| Edit | apps/app/src/App.tsx |
| Edit | apps/bff/src/server.ts |
| Delete | docker-compose.yml |
| Delete | docker/init-db/ |
| Edit | .env.example |
Documentation
License
MIT