Local Multi-LLM Chat Agent
Inspired by Clawdbot, an open-source local AI agent, this challenge focuses on building a client-side, web-based personal AI assistant using Vercel's AI SDK. The agent should demonstrate real-time streaming capabilities, the ability to integrate and switch between multiple LLM providers (e.g., OpenAI, Claude), and execute local 'tools' like file system access. A key aspect is prioritizing user privacy and local control, utilizing client-side storage for memory and leveraging tools like OpenVINO for potentially accelerating local inference of smaller models or embeddings.
What you are building
The core problem, expected build, and operating context for this challenge.
Develop a web-based, client-side personal AI agent using Vercel's AI SDK, offering real-time streaming, multi-LLM support, and local tool integration.
How work is evaluated
Evaluation will focus on the agent's ability to stream responses in real-time, correctly switch between LLMs, execute local tools, and maintain conversation context.
Challenge datasets
Public datasets, plus the private datasets you have access to.
How submissions are scored
These dimensions define what the evaluator checks and which criteria separate a passable run from a strong one.
LLM Switching Accuracy
The agent correctly switches to the requested LLM provider.
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
Tool Invocation
The specified local tool is correctly identified and invoked.
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
Average Stream Latency
Average time (ms) for the first token to appear in streaming responses. • target: 200 • range: 0-500
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
Local Tool Accuracy
Percentage of local tool queries answered correctly. • target: 0.95 • range: 0-1
This dimension contributes its full weight only when the submission satisfies the requirement. Partial credit is not awarded.
What you should walk away with
Master Vercel AI SDK for building performant, streaming AI chat applications with Next.js or other React frameworks.
Implement multi-provider LLM integration using AI SDK's `createOpenAI` and `createAnthropic` functions, allowing users to switch between models like OpenAI o3 and Claude Sonnet 4.
Develop client-side tool functions (e.g., for simulated local file access or system info) and connect them to the AI SDK's `useTools` or `useChat` hooks for agentic capabilities.
Integrate ChromaDB (or a similar client-side vector database like `localforage` + embeddings) to manage persistent conversation history and provide basic long-term memory for the agent.
Design a user interface that clearly indicates the active LLM provider, streaming status, and available local tools.
Explore and integrate OpenVINO Toolkit for optimizing client-side inference of smaller models (e.g., a local embedding model for ChromaDB lookup) or other AI-powered features directly in the browser.
Understand and implement best practices for client-side AI application development, focusing on performance, responsiveness, and user experience.
Reference links and supporting material
Sample data for 2 tasks
Challenge setup
Evaluation will focus on the agent's ability to stream responses in real-time, correctly switch between LLMs, execute local tools, and maintain conversation context.
Challenge input
{'messages': [{'role': 'user', 'content': 'Hello, using OpenAI'}, {'role': 'user', 'content': 'Now respond using Claude: What is the capital of Fra...
Agent execution
No agent tool is listed for this challenge.
Evaluated output
{'final_responses': [{'llm': 'openai', 'content': '...'}, {'llm': 'anthropic', 'content': '...'}], 'stream_latency_ms': [...]}
- The agent correctly switches to the requested LLM provider.
- The specified local tool is correctly identified and invoked.
- Average time (ms) for the first token to appear in streaming responses. • target: 200 • range: 0-500
- Average Stream Latency target: 200
- 2 public reference cases
- JavaScript execution harness
Summary shows the first task, up to three tools, and up to three evidence items. Open the technical recipe to view all configured items.
View technical recipe
Configured tools
No tool records are attached.
Evaluation contract
- LLM Switching Accuracy · Weight 1
- Tool Invocation · Weight 1
- Average Stream Latency · Weight 1
- Local Tool Accuracy · Weight 1
Metrics
- Average Stream Latency · Target 200
- Local Tool Accuracy · Target 0.95
Reference cases
- 2 public reference cases
Workflow tasks
- Task 1
Input: {'messages': [{'role': 'user', 'content': 'Hello, using OpenAI'}, {'role': 'user', 'content': 'Now respond using Claude: What is the capital of France?'}], 'expected_llm_sequence': ['openai', 'anthropic']}
Output: {'final_responses': [{'llm': 'openai', 'content': '...'}, {'llm': 'anthropic', 'content': '...'}], 'stream_latency_ms': [...]}
Execution harness: JavaScript
- Task 2
Input: {'user_query': 'Can you tell me the current time from my local system?', 'available_tools': ['get_local_time']}
Output: {'final_response': '...', 'tool_invocations': [{'tool_name': '...', 'arguments': '...'}]}
Execution harness: JavaScript
Recipe freeze marker
No recipe freeze time is recorded.