This repository has moved to: http://github.com/sanctumos/broca
Please update your git remotes and use the new repository location for all future development and contributions.
A CLI-first, plugin-based message processing system for agent communication.
Sanctum: Broca 2 is a refactored version of Broca, focusing on:
- CLI-first architecture for better control and automation
- Plugin-based system for extensible message handling
- Clean separation between core and platform-specific code
- Improved maintainability and testing capabilities
Sanctum: Broca 2 serves as middleware designed to bridge the Letta Agentic Framework with various communication endpoints. Just as Broca's area in the human brain is responsible for language production and speech, Sanctum: Broca 2 acts as the "speech center" for AI systemsโtranslating agent intentions into actionable messages across different platforms.
In the AI brain, Sanctum: Broca 2 plays a crucial role by:
- Translating Agent Intentions: Converting high-level agent decisions into platform-specific messages.
- Unifying Communication: Providing a standardized interface for different endpoints (Telegram, CLI, APIs, etc.).
- Enabling Extensibility: Allowing new endpoints to be integrated seamlessly through the plugin system.
This middleware approach ensures that the Letta Agentic Framework can focus on decision-making and intelligence, while Sanctum: Broca 2 handles the complexities of communication and integration.
broca2/
โโโ main.py # Core runtime entry point
โโโ runtime/ # Core system components
โ โโโ core/ # Core functionality
โ โ โโโ agent.py # Agent API interaction
โ โ โโโ queue.py # Message queue processing
โ โ โโโ plugin.py # Plugin management
โ โ โโโ message.py # Message handling
โโโ cli/ # CLI tools
โ โโโ queue.py # Queue management
โ โโโ users.py # User management
โ โโโ conversations.py # Conversation tools
โ โโโ settings.py # Settings management
โโโ plugins/ # Platform plugins
โ โโโ telegram/ # Telegram plugin
โ โโโ cli/ # CLI plugin
โโโ common/ # Shared utilities
โโโ config.py # Configuration
โโโ logging.py # Logging setup
- Application: Main coordinator
- QueueProcessor: Message queue handling
- AgentClient: Agent API interaction
- PluginManager: Plugin lifecycle management
- Queue Management: List, flush, delete messages
- User Management: List and manage users
- Conversation Tools: View and manage conversations
- Settings: Configure system behavior
- Telegram Plugin: Telegram message handling
- CLI Plugin: Diagnostic/testing interface
- Multiple processing modes:
- Echo: Direct message return
- Listen: Store without processing
- Live: Process through agent
- Core block management
- Error handling and recovery
- Standardized plugin interface
- Platform-specific message handling
- Event routing
- Settings management per plugin
- Comprehensive admin tools
- Diagnostic capabilities
- Settings management
- Queue operations
-
Clone the repository:
git clone https://github.com/sanctumos/broca.git cd broca -
Install dependencies:
pip install -r requirements.txt
-
Configure environment:
cp .env.example .env # Edit .env with your settings
python main.py# Queue management
python -m cli.btool queue list
python -m cli.btool queue flush
# User management
python -m cli.btool users list
# Settings
broca-admin settings set message_mode live- Telegram plugin runs as part of the server
- CLI plugin is a standalone diagnostic tool
- Message processing mode
- Queue refresh interval
- Debug mode
- Plugin-specific settings
- Agent API credentials
- Database configuration
- Plugin-specific settings
from plugins import Plugin
class MyPlugin(Plugin):
def get_name(self) -> str:
return "my_plugin"
def get_platform(self) -> str:
return "my_platform"
def get_message_handler(self) -> Callable:
return self._handle_message
async def start(self) -> None:
# Initialize plugin
async def stop(self) -> None:
# Cleanup pluginget_name(): Plugin identifierget_platform(): Platform nameget_message_handler(): Message handlerstart(): Plugin initializationstop(): Plugin cleanup
- Message processing modes
- Queue operations
- Core block management
- Error handling
- Plugin lifecycle
- Message routing
- Event handling
- Settings propagation
- Multi-Agent Architecture Guide - Complete guide to running multiple agent instances
- Plugin Development Guide
- CLI Tools Reference
- Configuration Guide
- Telegram Plugin
- Telegram Bot Plugin
- CLI-Test Plugin
- Web Chat Bridge API
- Web Chat Bridge Project Plan
For internal development documentation, technical analysis, and project planning, see the broca2/docs/dev-docs/ folder.
Sanctum: Broca 2 is built so that all CLI tools and plugin interfaces are MCP'able (machine-controllable by agents):
- Every CLI and admin tool is scriptable and can be operated by other AI agents or automation systems.
- All commands support machine-friendly output (e.g., JSON) and error handling.
- This enables Sanctum: Broca 2 to be embedded in agent networks, automated test harnesses, or orchestration systems.
- When extending Sanctum: Broca 2, always consider both human and agent/automation use cases.
Sanctum: Broca 2 will support multiple Letta agents through a simple, efficient architecture:
- Each agent will run in its own Broca instance
- Instances will share a common virtual environment to minimize resource usage
- Simple git-based update system that preserves agent-specific configurations
- Clear 1:1 mapping between Broca instances and Letta agents
A new Management Control Panel server will be added to manage multiple Broca instances:
- Instance Management: Deploy, monitor, and update Broca instances
- Agent Configuration: Manage Letta agent credentials and settings
- Monitoring & Logging: Centralized logging and performance metrics
- Resource Management: Monitor shared resources and system health
- Security: Centralized credential management and access control
For managing multiple Broca instances on the same machine, use the following structure:
~/sanctum/broca2/ # Base Broca 2 installation
โโโ venv/ # Shared virtual environment
โโโ main.py
โโโ runtime/
โโโ plugins/
โโโ requirements.txt
โโโ agent-721679f6-c8af-4e01-8677-dc042dc80368/ # Agent-specific instance
โ โโโ .env # Agent-specific environment
โ โโโ settings.json # Agent-specific settings
โ โโโ sanctum.db # Agent-specific database
โ โโโ logs/ # Agent-specific logs
โโโ agent-9a2b3c4d-5e6f-7890-abcd-ef1234567890/ # Another agent
โ โโโ .env
โ โโโ settings.json
โ โโโ sanctum.db
โ โโโ logs/
โโโ shared/ # Shared resources (optional)
โโโ templates/
โโโ configs/
-
Choose your master folder:
# Typically your home directory or a dedicated user folder mkdir ~/sanctum cd ~/sanctum
-
Clone the base Broca 2 installation:
git clone https://github.com/sanctumos/broca.git broca2 cd broca2 # Create shared virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
-
Create agent-specific instances:
# For each Letta agent, create a folder named after the agent ID mkdir ~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368 cd ~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368 # Copy base configuration cp ~/sanctum/broca2/.env.example .env cp ~/sanctum/broca2/settings.json . # Edit agent-specific configuration nano .env # Set AGENT_ENDPOINT, AGENT_API_KEY, and other agent-specific settings
-
Run agent-specific instances:
# From the agent folder cd ~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368 python ../main.py # Or use the CLI tools python -m cli.btool queue list
If you're using the Master Sanctum Provisioning Suite:
- Configure the Sanctum home folder in your provisioning suite's
.envfile - The suite will automatically:
- Git-clone Broca 2 into the proper folder structure
- Create agent-specific folders based on your agent configurations
- Set up the correct relative paths for all components
# Start a specific agent's Broca instance
cd ~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368
python ../main.py
# Or use a process manager like PM2
pm2 start "broca-agent-1" --interpreter python -- ../main.py
pm2 start "broca-agent-2" --interpreter python -- ../main.py# Each agent has its own configuration
~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368/.env
~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368/settings.json
# Shared configurations can be symlinked or copied
ln -s ~/sanctum/broca2/shared/templates/telegram_config.json ~/sanctum/broca2/agent-*/telegram_config.json# Each agent has its own database
~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368/sanctum.db
# Backup agent-specific databases
cp ~/sanctum/broca2/agent-*/sanctum.db ~/sanctum/broca2/backups/# Each agent has its own logs
~/sanctum/broca2/agent-721679f6-c8af-4e01-8677-dc042dc80368/logs/
# Centralized logging (optional)
ln -s ~/sanctum/broca2/logs/ ~/sanctum/broca2/agent-*/logs- Isolation: Each agent runs independently with its own configuration and database
- Scalability: Easy to add new agents without affecting existing ones
- Maintenance: Update the base Broca 2 installation once, affects all agents
- Backup: Simple to backup individual agent configurations and data
- Resource Efficiency: Shared base installation reduces disk usage
- Flexibility: Each agent can have different plugins, settings, and configurations
- Original Broca project (It was me).
- Contributors and maintainers (Also me).
- Community support (the AI agents I made to help me).