Run Open Intelligent UI by CopilotKit locally with Node.js 22+, pnpm 9+, Python 3.12+, and uv.
git clone https://github.com/CopilotKit/OpenIntelligentUI.git
cd OpenIntelligentUI
make setupmake setup installs Node workspace dependencies and creates apps/agent/.env when absent. The agent's development command runs uv sync for Python dependencies.
You can start the agent without shared provider keys and use API keys in the chat header to test and save your own OpenAI and Jev keys for the current browser session. Refreshing clears the keys.
The chat interface asks for visitor keys before sending a message and preserves the draft during setup. To also provide shared credentials for direct API clients, edit apps/agent/.env:
OPENAI_API_KEY=your-provider-key
LLM_MODEL=chat-latest
TYPESAFE_API_KEY=your-typesafe-key
JEV_MODEL=jev-latestThe model factory accepts claude-* names through Anthropic and chat-latest or gpt-* names through OpenAI. To override the default, set a model available to your account in LLM_MODEL and supply its provider key. Shared mode requires the selected answer provider’s key and the Jev key; BYOK requests supply their own pair. Unset LLM_MODEL uses the local default; an empty value or unsupported prefix fails with a configuration error.
Check model availability and access with a real request. This repository does not guarantee that every model name works or implement a separate native GPT-6 API. Never put shared provider keys in public frontend environment variables. See BYOK behavior.
Optional settings belong in apps/app/.env.local or the frontend process environment:
| Variable | Default | Purpose |
|---|---|---|
LANGGRAPH_DEPLOYMENT_URL |
http://localhost:8123 |
Agent URL |
MCP_SERVER_URL |
Unset | Optional MCP integration |
RATE_LIMIT_ENABLED |
false |
Per-IP runtime rate limit |
RATE_LIMIT_WINDOW_MS |
60000 |
Rate-limit window |
RATE_LIMIT_MAX |
40 |
Requests per window |
The root .env.example documents both services' settings; placing variables only in a root .env is not the setup described here.
make devThis starts the frontend, agent, and MCP development processes. Open the app; the agent and frontend health endpoints should return {"status":"ok"}.
- Open the chat interface and confirm the composer is usable. Rendering the chat shell does not require a successful model call.
- Ask a simple factual question; the assistant should be able to answer directly in text.
- Submit “Make a bill splitter with editable total, tip, and number of people.” Check that a generated tool works and rejects invalid input.
- Ask a follow-up with changed assumptions. It should produce a new answer without requiring an earlier output to be patched.
- Try a current-data request. Without a relevant source tool, the assistant should explain the limitation or use clearly labeled inputs, not invent live data.
A health response confirms process availability; only a real prompt tests provider authentication and generation. See Verification and launch for the broader checks.
make dev-app
make dev-agent
make dev-mcp
pnpm test
uv run --directory apps/agent pytest
make lint
make buildRun individual development commands in separate terminals when needed. See Architecture and Product and agent behavior.