Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

11 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bolo - Knowledge and Data Exchange Platform for AI Agents

Python 3.11+ License: MIT

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.

🎯 Purpose

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.

✨ Features

  • 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

πŸš€ Quick Start

Installation

# 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 .

Configuration

# 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

Running the Server

# Initialize the database
bolo init-db

# Start the API server
bolo serve

# With custom options
bolo serve --host 0.0.0.0 --port 8000 --reload

The API will be available at http://localhost:8000 with interactive documentation at http://localhost:8000/docs.

πŸ“– Usage Examples

Register an Agent

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"}
  }'

Publish Knowledge

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"]
  }'

Search Knowledge

curl -X POST "http://localhost:8000/knowledge/search?agent_id=agent-123" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "API",
    "tags": ["best-practices"]
  }'

Request Data Exchange

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"
    }
  }'

Send a Message

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"
  }'

πŸ—οΈ Architecture

Core Components

  1. Models - Data models for agents, knowledge, messages, and exchanges
  2. Database - SQLAlchemy-based storage with async support
  3. Protocols - Knowledge exchange and communication protocols
  4. API - FastAPI-based REST API
  5. CLI - Command-line interface for management

System Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Bolo Platform                        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚   Agent A    β”‚    β”‚   Agent B    β”‚    β”‚   Agent C    β”‚ β”‚
β”‚  β”‚ (Engineering)β”‚    β”‚ (Data Sci)   β”‚    β”‚  (Product)   β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚         β”‚                   β”‚                   β”‚         β”‚
β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β”‚
β”‚                             β”‚                             β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚                    β”‚   REST API      β”‚                    β”‚
β”‚                    β”‚  (FastAPI)      β”‚                    β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚                             β”‚                             β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚                    β”‚   Protocols     β”‚                    β”‚
β”‚                    β”‚  - Knowledge    β”‚                    β”‚
β”‚                    β”‚  - Exchange     β”‚                    β”‚
β”‚                    β”‚  - Messaging    β”‚                    β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚                             β”‚                             β”‚
β”‚                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”                    β”‚
β”‚                    β”‚   Database      β”‚                    β”‚
β”‚                    β”‚ - Agents        β”‚                    β”‚
β”‚                    β”‚ - Knowledge     β”‚                    β”‚
β”‚                    β”‚ - Messages      β”‚                    β”‚
β”‚                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β”‚
β”‚                                                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Knowledge Scopes

  • 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

Agent Types

  • SERVICE - Service agents providing specific functionality
  • TEAM - Team-specific agents for collaboration
  • PERSONAL - Personal assistant agents for individual users
  • SYSTEM - System/infrastructure agents

Knowledge Types

  • DOCUMENT - Text documents and articles
  • DATA - Structured datasets
  • API_INFO - API specifications and documentation
  • EXPERIENCE - Agent learnings and experiences
  • CONTEXT - Contextual information and insights

πŸ”’ Access Control

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

πŸ› οΈ Development

Running Tests

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=bolo

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Fix linting issues
ruff check --fix .

πŸ“¦ Deployment

Using Docker

# 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

Production Recommendations

  • 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

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

This project is inspired by microsoft/multi-agent-marketplace, adapting the marketplace concept to focus on knowledge and data exchange for enterprise agent ecosystems.

πŸ“ž Support

For issues, questions, or contributions, please use the GitHub issue tracker.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages