mirror of
https://github.com/CopilotKit/CopilotKit.git
synced 2026-09-14 16:26:20 +08:00
36020b061f
Two clonable starter templates showing CopilotKit driving a Claude Agent SDK agent over AG-UI, mirroring the langgraph-python showcase (todos canvas, charts, flight cards, dynamic dashboards, HITL, theme, threads drawer). Each agent is a thin, idiomatic layer on the official ag-ui-claude-sdk / @ag-ui/claude-agent-sdk adapters: three backend tools (query_data, search_flights, generate_a2ui) live in per-tool modules and are wired into ClaudeAgentAdapter, while the shared todo board is driven by the adapter's built-in ag_ui_update_state tool. The default model is claude-sonnet-5 and local dev uses a real ANTHROPIC_API_KEY (matching the official AG-UI dojo). Both instances are registered in the _parity manifest so their frontends stay synced with the langgraph-python north-star. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
52 lines
1.6 KiB
YAML
52 lines
1.6 KiB
YAML
# Docker Compose stack for a no-key build + boot smoke.
|
|
#
|
|
# Builds and starts the Next.js frontend + the Claude Agent SDK (FastAPI/uvicorn)
|
|
# agent and checks both are healthy. This does NOT exercise the LLM: the Claude
|
|
# Agent SDK drives Claude via the bundled Claude Code CLI, which can't be mocked
|
|
# — running an actual turn requires a real ANTHROPIC_API_KEY.
|
|
#
|
|
# Usage: docker compose -f docker-compose.test.yml up --build --wait
|
|
services:
|
|
agent:
|
|
build:
|
|
context: ./agent
|
|
dockerfile: ../docker/Dockerfile.agent
|
|
environment:
|
|
# A real key is only needed to run a turn; the build + /health check don't
|
|
# call the LLM. Pass ANTHROPIC_API_KEY in the environment to try a real turn.
|
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-placeholder}
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD",
|
|
"python",
|
|
"-c",
|
|
"import urllib.request; urllib.request.urlopen('http://localhost:8000/health')",
|
|
]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 30
|
|
start_period: 30s
|
|
|
|
app:
|
|
build:
|
|
context: .
|
|
dockerfile: docker/Dockerfile.app
|
|
environment:
|
|
- AGENT_URL=http://agent:8000
|
|
depends_on:
|
|
agent:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test:
|
|
[
|
|
"CMD",
|
|
"node",
|
|
"-e",
|
|
"const http = require('http'); const req = http.get('http://localhost:3000/', (res) => { process.exit(res.statusCode === 200 ? 0 : 1); }); req.on('error', () => process.exit(1)); req.setTimeout(2000, () => { req.destroy(); process.exit(1); });",
|
|
]
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 30
|
|
start_period: 60s
|