🏠 Looking to build multi-modal AI capabilities?
Consider contributing to CIRISHome - our active development platform for vision, audio, and sensor fusion capabilities that enable medical AI for underserved communities. CIRISHome welcomes multi-modal AI development using Home Assistant as a foundation, with the ultimate goal of life-saving healthcare access for those who need it most.
CIRISAgent (this repository) focuses on core AI agent functionality with a complete H3ERE architecture, while CIRISHome is where multi-modal capabilities are developed and tested.
Thank you for your interest in contributing to CIRIS Agent! This document outlines how to contribute effectively to the project.
The CIRIS Agent's core H3ERE (Hyper3 Ethical Recursive Engine) is architecturally complete and production-ready:
- 4 DMAs: 3 core decision-making algorithms (PDMA, CSDMA, DSDMA) + 1 recursive (ASPDMA)
- 10 Handlers: Exactly 10 action handlers in 3×3×3+1 structure
- 6 Message Buses: Complete communication infrastructure
- 22 Core Services: All essential services implemented and documented
- Strong Type Safety: Minimal
Dict[str, Any]usage, none in critical paths
Since the core engine is complete, contributions should focus on:
Create new interfaces for CIRIS to interact with different platforms:
- Social Media: Twitter, LinkedIn, Mastodon adapters
- Messaging: Slack, Teams, Telegram adapters
- Development: GitHub, GitLab integration adapters
- Documentation: Confluence, Notion adapters
- Fix issues in existing functionality
- Performance optimizations
- Memory leak resolution
- Test coverage improvements
Extend CIRIS capabilities with new modular services:
- Advanced analytics services
- External API integrations
- Specialized tool services
-
Follow the established pattern from existing adapters (
ciris_engine/logic/adapters/):adapters/your_adapter/ ├── README.md # Comprehensive documentation ├── __init__.py # Public exports ├── adapter.py # Main adapter class ├── services/ # Adapter-specific services │ ├── communication_service.py # Required: Communication │ ├── tool_service.py # Optional: Tools │ └── runtime_control.py # Optional: Control └── schemas/ # Adapter-specific schemas -
Implement required interfaces:
from ciris_engine.protocols.adapters import BaseAdapter class YourAdapter(BaseAdapter): async def initialize(self) -> None: """Initialize your adapter""" pass async def cleanup(self) -> None: """Clean shutdown""" pass
-
Create adapter-specific services that integrate with CIRIS buses
-
Write comprehensive tests following existing test patterns
-
Document everything with detailed README files
For new modular services, follow the Mock LLM pattern in ciris_adapters/mock_llm/:
your_service/
├── manifest.json # Service declaration
├── README.md # Documentation
├── __init__.py # Module exports
├── service.py # Main service class
├── protocol.py # Service protocol
└── schemas.py # Service-specific schemas
{
"module": {
"name": "your_service",
"version": "1.0.0",
"description": "Your service description",
"author": "Your Name"
},
"services": [{
"type": "YOUR_SERVICE_TYPE",
"priority": "NORMAL",
"class": "your_service.service.YourServiceClass",
"capabilities": ["your_capability"]
}],
"dependencies": {
"protocols": [
"ciris_engine.protocols.services.RequiredProtocol"
],
"schemas": [
"ciris_engine.schemas.required.schemas"
]
},
"exports": {
"service_class": "your_service.service.YourServiceClass",
"protocol": "your_service.protocol.YourServiceProtocol"
},
"configuration": {
"config_option": {
"type": "string",
"default": "default_value",
"description": "Configuration description"
}
}
}Understanding the architecture helps create better contributions:
- Input → Adapter receives external input
- Task Creation → Adapter creates Task with context
- DMA Evaluation → PDMA, CSDMA, DSDMA evaluate
- ASPDMA Selection → Recursive action selection
- Handler Execution → One of 10 handlers executes
- Output → Response via Communication Bus
- Action (3): SPEAK, TOOL, OBSERVE
- Memory (3): MEMORIZE, RECALL, FORGET
- Deferral (3): REJECT, PONDER, DEFER
- Terminal (1): TASK_COMPLETE
- CommunicationBus → Multi-adapter external communication
- MemoryBus → Graph storage and retrieval
- LLMBus → Multiple LLM provider access
- ToolBus → External tool execution
- RuntimeControlBus → System control and monitoring
- WiseBus → Ethical guidance and wisdom
- No Dicts: Use Pydantic models for all data
- No Strings: Use enums and typed constants
- No Exceptions: No special cases or bypass patterns
When creating new input sources:
# Store raw input in Task.context
task_context = {
"origin_service": "your_adapter",
"initial_input_content": raw_input,
"adapter_specific_id": message_id,
# ... other metadata
}
new_task = Task(..., context=task_context)- Don't create Thoughts manually - The engine auto-generates seed thoughts
- Store all external context in
Task.contextfor processing
- Unit tests for all new functionality
- Integration tests for adapter interactions
- Mock services for external dependencies
- Type safety validation with mypy
- README.md for every new component
- Inline documentation for complex logic
- API documentation for new protocols
- Architecture alignment with H3ERE principles
-
Fork and Clone:
git clone https://github.com/your-username/CIRISAgent.git cd CIRISAgent -
Set up Environment:
python -m venv venv source venv/bin/activate # Linux/Mac pip install -r requirements.txt
-
Run Tests:
python -m pytest tests/
-
Check Type Safety:
mypy ciris_engine/
- Create branch from latest
main - Follow naming:
feature/your-featureorfix/issue-description - Write tests for all new functionality
- Update documentation as needed
- Ensure all tests pass:
pytest - Verify type safety:
mypy - Write clear commit messages following conventional commits
- Submit PR with detailed description
- All tests pass
- Type safety maintained (minimal new
Dict[str, Any]usage) - Documentation updated
- Follows H3ERE architectural principles
- No breaking changes to core engine
- adapter: New adapter development
- service: New modular service
- bug: Bug fixes and corrections
- improvement: Performance or code quality improvements
- documentation: Documentation updates
- testing: Test coverage improvements
- Architecture: See
ciris_engine/logic/README.md - H3ERE Documentation: All bus and service README files
- Example Adapters:
ciris_engine/logic/adapters/ - Example Services:
ciris_adapters/mock_llm/
All contributors must follow our commitment to ethical AI development:
- Beneficence: Contributions must benefit users and society
- Non-maleficence: No harmful or malicious code
- Transparency: Clear, well-documented contributions
- Respect: Professional and inclusive collaboration
The H3ERE engine is complete. Your contributions extend its reach and capabilities! 🚀
Copyright © 2025 Eric Moore and CIRIS L3C - AGPL-3.0 License