A flexible, standardized, file-system-based blackboard model multi-agent collaboration framework
English (This page) | 中文文档
- Overview
- Key Features
- System Architecture
- Quick Start
- TUI Guide
- CLI Guide
- Project Structure
- Blackboard Mechanism
- Tooling
- Advanced Usage
- FAQ
- Contributing
Nano Agent Team is an experimental multi-agent collaboration framework based on the Blackboard Model for distributed handling of complex tasks. It uses the file system as a shared data space, enabling multiple agents to collaborate autonomously, plan dynamically, and communicate in real time.
- Protocol as Data: use self-describing Markdown files as communication protocols instead of hard-coded APIs
- Files as Database: purely file-system based, no extra database required
- Dynamic Self-Organization: the Watchdog agent analyzes tasks, plans the blackboard structure, and spawns/coordinates Worker agents
- Human-in-the-Loop: monitor and intervene in agent execution through the TUI
- 🎯 Complex software projects (requirements → architecture → coding → testing)
- 📊 Data analysis and report generation (collection → cleaning → analysis → visualization → report)
- 🔬 Research assistance (literature search → information extraction → experiment design)
- 🤝 Multi-agent collaboration for discussion and decision-making (brainstorming, debating, reviewing)
Core Concept: Global State Consistency + Decoupling of Coordination and Execution
The biggest challenge in multi-agent systems is how to maintain a unified Shared Mental Model among decentralized agents, enabling them to perceive the global state and collaborate effectively. This framework solves this problem through a layered architecture.
🎯 The Collaboration Plane / Index: global_indices/
- Role: The system's control center and synchronization primitive.
- Function: Maintains the project's global state (e.g., task progress, dependencies, architectural decisions). It serves as the "communal memory" for all agents, ensuring a consistent understanding of "what is currently being done" and "what to do next" at any given moment.
- Mechanism: Based on CAS (Compare-And-Swap) metadata management, providing atomic state changes to resolve multi-agent concurrency race conditions.
📦 The Resource Plane / Data: resources/
- Role: The system's data warehouse and artifact center.
- Function: Stores specific execution artifacts (code, documents, data). These are the "results" of agent collaboration, not the "process".
- Mechanism: Exists as a standard file system, referenced and version-managed through the collaboration layer's indices.
┌────────────────────────────────────────────────────────┐
│ .blackboard/ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ global_indices/ [Collaboration Plane] │ │
│ │ ├── central_plan.md (Task Scheduler & Deps) │ │
│ │ ├── notification.md (Collab History & Milestones)│ │
│ │ └── ... │ │
│ ├────────────────────────────────────────────────────┤ │
│ │ resources/ [Resource Plane] │ │
│ │ ├── code/ (Generated Source Code) │ │
│ │ ├── docs/ (Ref Docs & Specs) │ │
│ │ └── assets/ (Images/Data/Others) │ │
│ └────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────┘
✅ Intent Alignment
- Explicitly externalize abstract collaboration intents through structured Index Files and YAML metadata.
- Enables agents to automatically understand collaboration protocols without hard-coded APIs.
🔒 State Consensus
- Uses lightweight optimistic locking to achieve distributed strong consistency of state without introducing centralized scheduling bottlenecks.
- Supports multi-agent concurrent read/write with automatic conflict resolution.
Core Concept: Planning vs Execution Separation + Role-Based Orchestration
The Watchdog acts like the project's Product Manager or Architect; its core responsibility is not "management" but "definition".
🎯 Non-Interference
- Define Roles, Not People: Define what Role a Task needs; Workers claim them autonomously.
- Focus on Results, Not Process: Do not micromanage specific tool calls; intervene only when tasks time out or deviate from the plan.
- Empowerment over Control: Provide agents with clear goals and context, trusting their autonomous decision-making capabilities.
Thanks to the design principles above, the framework can flexibly handle different types of multi-agent collaboration tasks, such as:
🏗️ Construction Mode / Project
- Characteristics: Clear deliverables (e.g., software, reports).
- Responsibility: Decompose the goal into a Directed Acyclic Graph (DAG) of dependencies. Tasks advance linearly or in parallel, eventually converging into a result.
- Example: Software development (Requirements → Design → Dev → Test).
🎮 Simulation Mode / Process
- Characteristics: Focus on emerging phenomena of the process itself; deliverables are often process logs or side products.
- Responsibility: Define Environment Rules and Agent Roles, allowing them to operate in parallel and independently. Tasks may not have strong dependencies but are triggered based on environmental state.
- Example: Village simulation (each villager lives by their Role, updating their status on the blackboard without waiting for others).
Terminal User Interface built on Textual:
- 🔄 Real-time Monitoring: View agent thinking steps, tool calls, and execution logs.
- 📊 Mission Board: Visualize Mission Plan execution progress and dependencies.
- 🎛️ Multi-Model Support: Read and switch between multiple provider models from
llm_config.json. - ⚡ Runtime Intervention: Send instructions or feedback to any agent at any time during execution.
- 🎯 Dual-Mode Switching: Support for Single-Agent (Chat) and Multi-Agent (Swarm) modes.
Support extending agent capabilities via the .skills/ directory. Sub-skills need to be defined in subdirectories; see Agent Skills Documentation for details.
Support extending agent capabilities via the .subagents/ directory. See Sub-agents Documentation for details.
A unified interface supports multiple LLM providers:
- OpenAI
- DeepSeek
- Qwen
- Step
- Moonshot
- MiniMax
- OpenRouter
- XAI
- Together
Subject to
backend/llm_config.json; can be extended.
System architecture diagram
┌─────────────────────────────────────────────────────────────┐
│ User Layer │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ TUI Console │ │ CLI Terminal │ │
│ │ (tui.py) │ │ (main.py) │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
└───────────┼────────────────────────────┼────────────────────┘
│ │
┌───────────┼────────────────────────────┼────────────────────┐
│ │ Coordination Layer │ │
│ ┌────────▼────────────────────────────▼─────────┐ │
│ │ Watchdog / Architect │ │
│ │ - Task analysis & planning │ │
│ │ - Blackboard structure design │ │
│ │ - Worker agent spawning │ │
│ │ - Progress monitoring & exception handling │ │
│ └─────────────────┬─────────────────────────────┘ │
└────────────────────┼────────────────────────────────────────┘
│ spawn
┌────────────────────┼────────────────────────────────────────┐
│ │ Execution Layer │
│ ┌─────────────────▼────────────────────────────┐ │
│ │ Worker Agents Pool │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
│ │ │Programmer│ │ Reviewer │ │ Tester │ ... │ │
│ │ └──────────┘ └──────────┘ └──────────┘ │ │
│ └────────┬──────────┬──────────┬───────────────┘ │
│ │ │ │ │
│ ┌────────▼──────────▼──────────▼───────────────┐ │
│ │ Tool Registry │ │
│ │ file, blackboard, bash, web_search, ... │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────┬──────────────────────────────────────┘
│ read/write
┌──────────────────────▼──────────────────────────────────────┐
│ Data Layer (.blackboard/) │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ global_indices/ # global indexes (tasks, timeline) │ │
│ │ resources/ # resource files (code, docs, data)│ │
│ │ mailboxes/ # agent mailboxes │ │
│ │ logs/ # execution logs │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
The core agent class that encapsulates LLM calls, tool execution, and middleware management.
Main responsibilities:
- Manage conversation history and context
- Dispatch tool execution
- Apply middleware policies (budgeting, request monitoring)
- Generate system prompts
Related files:
src/core/agent_wrapper.pysrc/core/middlewares/src/core/runtime.pysrc/core/prompt_builder.pybackend/llm/engine.py
Main responsibilities: The blackboard tool provides standardized read/write interfaces (Swarm mode):
list_indices()to list index filesread_index(filename)to read an index fileappend_to_index(filename, content)to append contentupdate_index(filename, content, expected_checksum)with checksum validationupdate_task(...)to update task statuscreate_index(filename, content)to create index files
Related files:
src/tools/blackboard_tool.pysrc/core/protocol.pysrc/utils/file_lock.pysrc/core/schema.py
Main responsibilities: Execute the core ReAct loop and tool calls:
- Streaming generation and function calls
- Sub-agent collaboration and skill loading
- Middleware chain (budgeting, loop detection, error recovery)
Related files:
backend/llm/engine.pybackend/llm/tool_registry.pybackend/llm/skill_registry.pybackend/llm/decorators.pybackend/llm/middleware.py
Dynamically build system prompts and parse blackboard protocols:
- Generate system prompts from global indices
- Parse YAML Frontmatter metadata and usage policies
Related files:
src/core/prompt_builder.pysrc/core/protocol.pysrc/core/schema.py
Runtime and lifecycle management:
- Registry state maintenance and cleanup
- Event logs and global notification broadcast
Related files:
src/core/runtime.pysrc/core/middlewares/src/utils/registry_manager.pysrc/tools/status_tool.py
- Python: 3.11 or higher
- OS: macOS, Linux
- API Key: at least one LLM provider API key
- Clone the repository
git clone <your-repo-url>
cd nano_agent_team- Create a virtual environment (recommended)
python -m venv venv
source venv/bin/activate- Install dependencies
pip install -r requirements.txt- Install browsers (optional, for browser_use)
If you need the browser_use tool for browser automation, install Playwright browsers:
# Install Chromium (recommended)
playwright install chromium
# Or install all browsers (Chromium, Firefox, WebKit)
playwright installNotes:
- If browsers are not installed, the system will skip loading
browser_use, without affecting other features - Browsers are installed in the Playwright cache directory
- browser_use requires the LLM provider to support
response_format=json_object; see the browser_use docs
Verify installation:
# Check Playwright version
playwright --version
# Verify browsers
python -c "from playwright.sync_api import sync_playwright; p = sync_playwright().start(); print('Browser installed:', p.chromium.executable_path); p.stop()"- Initialize configuration
On first run, the config directory is created automatically:
~/.nano_agent_team/
├── auth.json # API Keys
└── tui_state.json # TUI statepython tui.pyAfter launching:
- Press
Ctrl+Pto open the provider panel - Choose your LLM provider (e.g., qwen)
- Enter your API Key
- Press
Escto return, thenCtrl+Oto select a model - Enter a task description and press
Enterto start; switch betweenChat/Swarm
chatmode: single-agent conversationswarmmode: multi-agent collaboration
# Execute a task directly
python main.py "Build a snake game"
# Interactive mode (prompts for input)
python main.pyManually start a Worker agent:
python src/cli.py \
--role "Python Developer Expert" \
--name "Coder" \
--blackboard ".blackboard" \
--goal "Implement quicksort" \
--model "qwen/qwen3-max"Run test commands to check the environment:
# Test TUI launch
python tui.py
# Test CLI mode
python main.py "Hello, introduce yourself"The Nano Agent Team TUI has two main screens:
┌────────────────────────────────────────────────────────┐
│ Session Screen → Monitor Screen │
│ (main chat screen) (Swarm monitor) │
│ Chat / Swarm toggle Multi-agent monitoring │
└────────────────────────────────────────────────────────┘
TUI demo video
tui-demo.mp4
Purpose: start tasks, interact, switch Chat/Swarm modes
UI elements:
- Input box: enter task descriptions or commands
- Mode toggle:
Chat/Swarm - Model indicator: current selected model
Shortcuts:
| Shortcut | Action | Description |
|---|---|---|
Enter |
Start session | Send task description and enter Session |
Tab |
Toggle mode | Switch between Chat and Swarm |
Ctrl+P |
Provider config | Open provider connection panel |
Ctrl+O |
Select model | Open model selection dialog |
Ctrl+S |
Switch model | Quick switch between recent models |
Ctrl+C |
Exit | Close the application |
Purpose: monitor multi-agent execution in Swarm mode
Layout:
┌──────────────────────────────────────────────────────────────┐
│ Monitor - Swarm Execution │
├─────────┬────────────────────────────────┬───────────────────┤
│ Agents │ Execution Timeline │ Mission Plan │
│ │ │ │
│ ● Alice │ [12:00:01] Thinking... │ ✅ Task 1 │
│ Bob │ [12:00:03] Tool: read_file │ 🔄 Task 2 (Bob) │
│ │ > path: src/main.py │ ⏳ Task 3 │
├─────────┴────────────────────────────────┴───────────────────┤
│ > Send a message to Alice... │
└──────────────────────────────────────────────────────────────┘
Shortcuts:
| Shortcut | Action | Description |
|---|---|---|
↑ ↓ |
Select agent | Switch in the left list |
Enter |
Send intervention | Send instructions to selected agent |
Esc |
Back to session | Exit monitor to Session |
Ctrl+C |
Exit | Close the application |
Real-time status:
- Thinking: shows "🤔 Thinking..."
- Tool call: shows "🔧 Calling tool: tool_name"
- Waiting: shows progress animation
Modes:
- Chat mode: single-agent chat, good for simple queries
- Swarm mode: launches Watchdog to coordinate multi-agent tasks
Slash Commands:
The input box supports the following slash commands:
| Command | Description | Example |
|---|---|---|
/iterations <n> |
Set max swarm iterations (10-500) | /iterations 50 |
/status |
Show current status (mode, model, iterations) | /status |
/help |
Show available commands help | /help |
Example UI:
┌─────────────────────────────────────────┐
│ Connect to Providers │
├─────────────────────────────────────────┤
│ 🟢 OpenAI [Connected] │
│ ⚪ Anthropic [Disconnected] │
│ ⚪ Google [Disconnected] │
├─────────────────────────────────────────┤
│ Select a provider to configure API Key │
└─────────────────────────────────────────┘
Steps:
- Use
↑↓to select a provider - Press
Enterto open the API key input dialog - Paste your API key and confirm
- The status light turns 🟢 for a successful connection
- Press
Escto close the panel
Supported providers (default config):
- Step, Qwen, DeepSeek, Moonshot, MiniMax
- OpenAI, OpenRouter
See
backend/llm_config.jsonfor the actual list and customization.
Example UI:
┌───────────────────────────────────────────┐
│ Select Model │
├───────────────────────────────────────────┤
│ ● deepseek-chat │
│ deepseek-reasoner │
├───────────────────────────────────────────┤
│ ↑↓: Navigate Enter: Select Esc: Cancel |
└───────────────────────────────────────────┘
Usage notes:
- Only models from connected providers are shown
- Use
↑↓to navigate,Enterto select - The current model is marked with
●
Basic usage:
python main.py [OPTIONS] [QUERY]Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
QUERY |
string | - | task description (optional, interactive if omitted) |
--role |
string | Architect |
role of the primary agent |
--name |
string | Watchdog |
name of the primary agent |
--keep-history |
flag | False | keep previous blackboard data |
--model |
string | from config | specify model (e.g., openai/gpt-5-mini) |
--keys |
string | keys.json |
API keys config file path |
Examples:
# 1. Interactive mode
python main.py
# 2. Execute a task directly
python main.py "Build a command-line calculator"
# 3. Specify a model
python main.py --model "qwen/qwen3-max" "Analyze this code's performance"
# 4. Custom Watchdog role
python main.py --role "Senior Software Architect" --name "Architect" "Design a microservices architecture"Basic usage:
python src/cli.py --role ROLE --name NAME [OPTIONS]nano_agent_team/
├── tui.py # TUI main entry
├── main.py # CLI Watchdog launcher
├── requirements.txt # Python dependencies
├── LICENSE # MIT license
├── README.md # This document
├── README_CN.md # Chinese document
├── dev_log.md # Development log
│
├── src/ # Core source code
│ ├── cli.py # Worker CLI launcher
│ ├── core/ # Core modules
│ ├── prompts/ # System prompts
│ ├── tools/ # Agent tools
│ ├── tui/ # TUI UI code
│ └── utils/ # Utilities
│
├── backend/ # Backend infrastructure
│ ├── infra/ # Config & environment
│ ├── llm/ # LLM engine and registry
│ ├── tools/ # General tool implementations
│ └── utils/ # Backend utilities
│
├── .blackboard/session_** # [runtime] blackboard data
│ ├── global_indices/ # global indices
│ ├── resources/ # resource files
│ ├── mailboxes/ # agent mailboxes
│ └── logs/ # execution logs
│
├── .skills/ # [optional] skills plugins
│ └── arxiv-search/ # example: academic search skill
│ ├── SKILL.md
│ ├── arxiv_search.py
│ └── requirements.txt
│
├── blackboard_templates/ # blackboard templates
│ └── central_plan.md # task plan template
│
└── logs/ # [runtime] session archive
└── app.log
└── tui.log
src/
├── cli.py # Worker agent CLI launcher
│
├── core/ # Core logic
│ ├── __init__.py
│ ├── agent_wrapper.py # SwarmAgent core class
│ ├── middlewares/ # Middleware system (modular)
│ │ ├── __init__.py
│ │ ├── watchdog_guard.py # Watchdog coordination guard
│ │ ├── dependency_guard.py # Task dependency guard
│ │ ├── mailbox.py # Agent communication mailbox
│ │ ├── swarm_state.py # Swarm state tracking
│ │ ├── swarm_agent_guard.py # Worker agent guard
│ │ ├── activity_logger.py # Activity logging
│ │ ├── notification_awareness.py # Notification awareness
│ │ ├── request_monitor.py # Request monitoring
│ │ └── parent_process_monitor.py # Parent process monitor
│ ├── prompt_builder.py # Prompt builder
│ ├── protocol.py # Blackboard protocol parser
│ ├── schema.py # Data models
│ └── runtime.py # Runtime management
│
├── prompts/ # System prompts
│ └── architect.md # Watchdog architect prompt
│
├── tools/ # Agent-specific tools
│ ├── blackboard_tool.py # Blackboard read/write tool
│ ├── spawn_tool.py # Agent spawning tool
│ ├── wait_tool.py # Wait tool
│ ├── status_tool.py # Status update tool
│ ├── finish_tool.py # Task completion tool
│ └── ask_user_tool.py # User interaction tool
│
├── tui/ # TUI UI code
│ ├── app.py # TUI main application class
│ ├── agent_bridge.py # Agent bridge
│ ├── state.py # Global state management
│ ├── themes.py # Theme configuration
│ ├── commands.py # Command handling
│ ├── slash_commands.py # Slash commands
│ ├── constants.py # Constants
│ ├── components/ # UI components
│ │ ├── message.py # Message component
│ │ └── plan_widget.py # Plan board component
│ ├── dialogs/ # Dialogs
│ │ ├── provider.py # Provider config
│ │ ├── model.py # Model selection
│ │ ├── api_key.py # API key input
│ │ └── command.py # Command panel
│ └── screens/ # Screens
│ ├── session.py # Session screen
│ └── monitor.py # Monitor screen
│
└── utils/ # Utilities
├── file_lock.py # File lock (prevent conflicts)
└── registry_manager.py # Agent registry manager
backend/
├── infra/ # Infrastructure
│ ├── config.py # Global config class
│ ├── auth.py # Authentication manager
│ ├── environment.py # Environment abstraction
│ ├── provider_registry.py # LLM provider registry
│ └── envs/ # Execution environments
│ ├── local.py # Local environment
│ ├── docker_env.py # Docker environment
│ └── e2b_env.py # E2B cloud environment
│
├── llm/ # LLM engine
│ ├── engine.py # AgentEngine core
│ ├── providers.py # Multi-model adapters
│ ├── middleware.py # LLM middleware
│ ├── tool_registry.py # Tool registry
│ ├── skill_registry.py # Skill registry
│ ├── events.py # Event definitions
│ ├── types.py # Type definitions
│ └── decorators.py # Decorators
│
├── tools/ # General tool implementations
│ ├── base.py # Tool base class
│ ├── read_file.py # Read files
│ ├── write_file.py # Write files
│ ├── edit_file.py # Edit files
│ ├── bash.py # Execute bash commands
│ ├── web_search.py # Web search
│ ├── web_reader.py # Web reader
│ ├── arxiv_search.py # Academic search
│ ├── browser_use.py # Browser automation
│ ├── grep.py # Content search
│ ├── glob.py # File matching
│ ├── subagent.py # Sub-agent tool
│ └── activate_skill.py # Skill activation
│
└── utils/ # Backend utilities
├── logger.py # Logging
├── audit_guard.py # Audit guard
└── langfuse_manager.py # Langfuse integration
.blackboard/session_<timestamp>
├── registry.json # Agent registry (status, PIDs)
├── global_indices/
├── resources/
├── mailboxes/
└── logs/
.skills/ # [user-defined skills]
│
├── arxiv-search/ # example: academic paper search
│ ├── SKILL.md # skill description & usage
│ ├── arxiv_search.py # skill implementation
│ ├── requirements.txt # dependencies
│ └── eval.md # evaluation criteria
│
└── custom-skill/ # user-defined skills
├── SKILL.md
├── custom_skill.py
└── requirements.txt
~/.nano_agent_team/ # user config directory
├── auth.json # API Keys
├── tui_state.json # TUI state (recent model)
The blackboard is a shared state and artifact store for multi-agent collaboration, created at runtime under .blackboard/.
global_indices/: index files (with YAML Frontmatter)resources/: large files and artifacts (code, reports, data, etc.)mailboxes/: agent mailboxes (JSON lists)logs/: runtime logs
Currently supported operations:
list_indicesread_index(filename)append_to_index(filename,content)update_index(filename,content,expected_checksum)update_task(filenameoptional,task_id,updates,expected_checksum)create_index(filename,content)list_templates/read_templatelist_resources
Example:
agent.call_tool("blackboard_tool", {
"operation": "read_index",
"filename": "central_plan.md"
})
agent.call_tool("blackboard_tool", {
"operation": "update_task",
"task_id": "task_1",
"updates": {"status": "IN_PROGRESS"}
})Use file locks for atomic read/write:
from src.utils.file_lock import file_lock
with file_lock(".blackboard/global_indices/central_plan.md", "r+"):
content = read_file("central_plan.md")
updated = modify(content)
write_file("central_plan.md", updated)Edit [architect.md]/src/prompts/architect.md to customize Swarm planning and constraint policies.
python main.py --model "qwen/qwen3" "Build a blog system"agent.call_tool("spawn_swarm_agent", {
"name": "Coder",
"role": "Python Developer",
"model": "deepseek/deepseek-chat",
"goal": "Implement user login"
})- Sub-agents:
.subagents/*.mdare registered as tools with the same name (e.g.,file_organizer) - Skills:
activate_skillreturns SOPs and constraints, follow the instructions
---
## ❓ FAQ
### Q1: How do I switch models?
**A**: Press `Ctrl+O` in the TUI, or use `--model` in CLI:
```bash
python main.py --model "qwen/qwen3" "Task description"
A: Possible causes and fixes:
-
Token limit: increase the
max_iterationsparameterpython src/cli.py --max-iterations 100 ...
-
Network issues: check API connectivity and logs
-
Deadlock: check Monitor to see if an agent is waiting on others
A: Delete the blackboard directory:
rm -rf .blackboardA: See backend/llm_config.json, default includes:
- OpenAI: gpt-5.2, gpt-5.1, gpt-5-mini, gpt-5-nano, gpt-5.2-codex
- DeepSeek: deepseek-chat, deepseek-reasoner
- Qwen: qwen3-max, qwen-plus, qwen-flash
- Step: step-3.5-flash
- Moonshot: kimi-k2.5, kimi-k2-turbo-preview
- MiniMax: MiniMax-M2.1
- OpenRouter
A: Use the allowed_write_paths parameter in LocalEnvironment:
env = LocalEnvironment(
workspace_root="/project",
allowed_write_paths=[".blackboard"] # only allow blackboard writes
)A: It is currently in development and recommended for:
- ✅ Prototyping
- ✅ Research and experiments
- ✅ Automation scripts
Not recommended for:
- ❌ Critical business systems
- ❌ Sensitive data
- ❌ Unattended production environments
A: See Contributing.
A: Mainly through two methods:
- Blackboard indices: shared index files (e.g.,
central_plan.md) - Mailbox system: direct messages (
mailboxes/<agent_name>.json)
A:
-
Use the Monitor screen: view the thinking process in real time
-
Check blackboard files: manually inspect
.blackboard/files
A: If you see errors like "Failed to establish CDP connection":
-
Check Playwright installation:
playwright --version
-
Install browsers:
playwright install chromium
-
Verify installation:
python3 -c "from playwright.sync_api import sync_playwright; p = sync_playwright().start(); print(p.chromium.executable_path); p.stop()" -
Check LLM provider: The LLM provider must support
response_formatasjson_object. See the browser_use docs -
Note:
- The system automatically detects browser installation and skips
browser_useif not installed - This does not affect other tools
- The system automatically detects browser installation and skips
- Logs show a warning:
[ToolRegistry] Playwright browser not installed. Run 'playwright install chromium' to enable browser_use tool.
We aim to explore the feasibility and practical value of autonomous multi-agent systems. Contributions of all kinds are welcome. Contact us by email or WeChat!
- Report Bugs: submit detailed issues in the repository
- Feature Requests: submit feature requests
- Code Contributions: open pull requests
- Docs Improvements: help improve docs and examples
- Skills Plugins: share your custom skills
This project is licensed under the MIT License.
Thanks to the following projects:
-
Email: zc3930155@gmail.com wzq142857@gmail.com 2910937975@qq.com
-
WeiXin:
If this project helps you, please give us a ⭐ Star!
Made with ❤️ by Nano Agent Team Community

