Bolo is a knowledge and data exchange platform designed for AI agents in large enterprises. Inspired by microsoft/multi-agent-marketplace, Bolo focuses on enabling agents to connect, share knowledge, and exchange data across teams and applications.
In large enterprises with hundreds of teams and applications, individual agents need to:
- Discover relevant knowledge from other agents
- Share their learnings and experiences
- Collaborate through structured data exchange
- Maintain both generic knowledge bases and user-specific information
Bolo provides the infrastructure for agents to communicate and share knowledge seamlessly while respecting privacy and access controls.
- Agent Registration & Management - Register agents with capabilities, team affiliations, and metadata
- Knowledge Publishing - Publish structured knowledge with flexible scoping (public, team, private, user-specific)
- Knowledge Discovery - Search and discover knowledge with scope-based access control
- Data Exchange Protocol - Request and exchange data between agents
- Agent Messaging - Send messages between agents with knowledge references
- Flexible Storage - Support for SQLite (development) and PostgreSQL (production)
- REST API - Comprehensive API for all platform operations
- CLI Tools - Command-line interface for platform management
# Clone the repository
git clone https://github.com/tarunccet/Bolo.git
cd Bolo
# Install dependencies (using pip)
pip install -e .
# Or using uv (recommended)
uv pip install -e .# Copy sample environment file
cp sample.env .env
# Edit .env with your configuration
# For development, SQLite is used by default
# For production, configure PostgreSQL connection# Initialize the database
bolo init-db
# Start the API server
bolo serve
# With custom options
bolo serve --host 0.0.0.0 --port 8000 --reloadThe API will be available at http://localhost:8000 with interactive documentation at http://localhost:8000/docs.
curl -X POST "http://localhost:8000/agents" \
-H "Content-Type: application/json" \
-d '{
"name": "DataAnalyzer",
"type": "service",
"team_id": "analytics-team",
"capabilities": ["data_analysis", "visualization"],
"metadata": {"version": "1.0.0"}
}'curl -X POST "http://localhost:8000/knowledge" \
-H "Content-Type: application/json" \
-d '{
"title": "API Best Practices",
"content": "Always validate input, use proper error handling...",
"type": "document",
"scope": "public",
"owner_agent_id": "agent-123",
"tags": ["api", "best-practices", "development"]
}'curl -X POST "http://localhost:8000/knowledge/search?agent_id=agent-123" \
-H "Content-Type: application/json" \
-d '{
"query": "API",
"tags": ["best-practices"]
}'curl -X POST "http://localhost:8000/exchange" \
-H "Content-Type: application/json" \
-d '{
"requester_agent_id": "agent-123",
"query": "recent API changes",
"filters": {
"tags": ["api"],
"type": "document"
}
}'curl -X POST "http://localhost:8000/messages" \
-H "Content-Type: application/json" \
-d '{
"sender_agent_id": "agent-123",
"receiver_agent_id": "agent-456",
"subject": "Data Update",
"content": "New dataset available for analysis"
}'- Models - Data models for agents, knowledge, messages, and exchanges
- Database - SQLAlchemy-based storage with async support
- Protocols - Knowledge exchange and communication protocols
- API - FastAPI-based REST API
- CLI - Command-line interface for management
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Bolo Platform β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ β
β β Agent A β β Agent B β β Agent C β β
β β (Engineering)β β (Data Sci) β β (Product) β β
β ββββββββ¬ββββββββ ββββββββ¬ββββββββ ββββββββ¬ββββββββ β
β β β β β
β βββββββββββββββββββββΌββββββββββββββββββββ β
β β β
β ββββββββββΌβββββββββ β
β β REST API β β
β β (FastAPI) β β
β ββββββββββ¬βββββββββ β
β β β
β ββββββββββΌβββββββββ β
β β Protocols β β
β β - Knowledge β β
β β - Exchange β β
β β - Messaging β β
β ββββββββββ¬βββββββββ β
β β β
β ββββββββββΌβββββββββ β
β β Database β β
β β - Agents β β
β β - Knowledge β β
β β - Messages β β
β βββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- PUBLIC - Available to all agents across the platform
- TEAM - Available to agents within the same team
- PRIVATE - Available only to the owner agent
- USER_SPECIFIC - User-specific knowledge with custom access control
- SERVICE - Service agents providing specific functionality
- TEAM - Team-specific agents for collaboration
- PERSONAL - Personal assistant agents for individual users
- SYSTEM - System/infrastructure agents
- DOCUMENT - Text documents and articles
- DATA - Structured datasets
- API_INFO - API specifications and documentation
- EXPERIENCE - Agent learnings and experiences
- CONTEXT - Contextual information and insights
Bolo implements scope-based access control:
- Agents can always access their own private knowledge
- Team members can access team-scoped knowledge
- All agents can access public knowledge
- User-specific knowledge requires explicit permissions
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run with coverage
pytest --cov=bolo# Format code
ruff format .
# Lint code
ruff check .
# Fix linting issues
ruff check --fix .# Build the image
docker build -t bolo:latest .
# Run with SQLite
docker run -p 8000:8000 bolo:latest
# Run with PostgreSQL
docker run -p 8000:8000 \
-e DATABASE_URL=postgresql+asyncpg://user:pass@db:5432/bolo \
bolo:latest- Use PostgreSQL for production deployments
- Configure proper authentication and authorization
- Use environment variables for sensitive configuration
- Enable HTTPS/TLS for API communication
- Implement rate limiting and request throttling
- Set up monitoring and logging
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
This project is inspired by microsoft/multi-agent-marketplace, adapting the marketplace concept to focus on knowledge and data exchange for enterprise agent ecosystems.
For issues, questions, or contributions, please use the GitHub issue tracker.