CIRIS connects to your world through adapters. Each adapter is a self-contained integration that provides tools or communication channels.
Message Bus: Adapters communicate via typed message buses (Tool, Communication, RuntimeControl)
Multi-Adapter: Run CLI + API + Discord + Home Assistant simultaneously in the same process
Type-Safe: All data flows through Pydantic schemas. No untyped dicts, no bypass patterns.
Self-Contained: Each adapter includes its own schemas, protocols, and configuration wizard
Interactive command-line interface. Launch with --adapter cli. Perfect for development, testing, and direct terminal interaction. Supports mock LLM for offline testing.
RESTful HTTP server built with FastAPI. Launch with --adapter api --port 8000. Provides web UI, OAuth2 authentication, and multi-tenant support. Best for service integration.
Full Discord bot integration for community moderation. Launch with --adapter discord --guild-id YOUR_GUILD_ID. Persistent graph storage and real LLM providers with fallback.
Complete multi-modal home automation with 100% local AI processing. Voice control, camera analysis, and smart automation — no cloud required.
Capabilities:
Hardware Stack:
HACS Installation:
https://github.com/CIRISAI/CIRISHomeFull Reddit integration with posting, commenting, and content moderation. Built-in GDPR compliance, AI transparency disclosure, and deletion compliance.
Capabilities:
DSAR/GDPR compliance tools for SQL databases. Privacy schema support, dialect-specific implementations (PostgreSQL, MySQL, SQLite), and structured data access.
Model Context Protocol server. Expose CIRIS tools to MCP-compatible clients.
Connect to external MCP servers for additional tool capabilities.
Weather forecasting via NOAA National Weather Service API.
Geographic routing and directions via OpenStreetMap.
Testing mock that simulates LLM responses without external API calls. Perfect for development, CI/CD pipelines, and offline testing.
Privacy-first metrics collection for CIRISLens observability. Requires explicit user consent. Reports WBD (Wisdom-Based Deferral) and PDMA decision events.
Access to CIRIS-hosted tool integrations. Extensible registry for cloud-based capabilities.
CIRIS adapters are self-contained Python packages. Start from the sample_adapter template and implement your integration.
your_adapter/ ├── manifest.json # Service declaration & metadata ├── adapter.py # Main adapter class ├── service.py # Service implementations ├── protocol.py # Protocol definitions ├── schemas.py # Pydantic data models ├── configurable.py # Configuration wizard └── __init__.py # Package init with Adapter export
TOOL
Provides capabilities. Implement execute_tool() and get_available_tools().
COMMUNICATION
Handles messaging. Implement send_message() and fetch_messages().
{
"name": "your_adapter",
"version": "1.0.0",
"description": "Your adapter description",
"services": [
{
"type": "TOOL",
"capabilities": ["tool:your_adapter:action"]
}
],
"configuration": {
"steps": [
{"step_id": "discover", "type": "discovery"},
{"step_id": "auth", "type": "oauth"},
{"step_id": "settings", "type": "input"},
{"step_id": "confirm", "type": "confirm"}
]
}
}from ciris_engine.logic.adapters.base import Service
from ciris_engine.schemas.adapter import AdapterServiceRegistration
class YourAdapter(Service):
def __init__(self, runtime, context=None):
self.runtime = runtime
self.tool_service = YourToolService(runtime)
def get_services_to_register(self):
return [
AdapterServiceRegistration(
service_type=ServiceType.TOOL,
provider=self.tool_service,
priority=Priority.NORMAL,
capabilities=["tool:your_adapter:action"]
)
]
async def start(self):
await self.tool_service.start()
async def stop(self):
await self.tool_service.stop()
# Required export
Adapter = YourAdapterdiscovery
Auto-detect services on network
oauth
OAuth2 with PKCE flow
select
Multiple-choice selection
input
Manual text/config entry
confirm
Review and approve final configuration
Type-Safe Everything
Use Pydantic schemas for all data structures. No untyped dicts, no exceptions.
No Bypass Patterns
Strict protocol adherence. All communication flows through the message bus.
Self-Contained
All code, schemas, and protocols live in one directory. No external dependencies on other adapters.
Graceful Lifecycle
Proper async start/stop methods. Clean up resources, close connections, cancel tasks.
Ready to build your own adapter?