Architecture Overview
Orient is a self-hosted AI agent platform. Everything runs on your infrastructure — no cloud dependency, no data leaving your control.
System Architecture
┌──────────────────────────────────────────────────────┐
│ Your Machine │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │
│ │ WhatsApp │ │ Slack │ │ CLI │ │
│ │ Connector │ │ Connector │ │ Interface │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬──────┘ │
│ │ │ │ │
│ └────────┬────────┴────────┬────────┘ │
│ │ │ │
│ ┌──────▼───────┐ ┌─────▼──────┐ │
│ │ Message │ │ Agent │ │
│ │ Router │ │ Engine │ │
│ └──────┬───────┘ └─────┬──────┘ │
│ │ │ │
│ ┌──────▼────────────────▼──────┐ │
│ │ Tool Executor │ │
│ │ (MCP Servers, Integrations) │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ┌──────────────▼───────────────┐ │
│ │ SQLite Database │ │
│ │ (messages, config, state) │ │
│ └──────────────────────────────┘ │
└──────────────────────────────────────────────────────┘
Data Flow
- Message arrives — from WhatsApp, Slack, CLI, or any connected platform
- Router dispatches — identifies the user, platform, and conversation context
- Agent processes — the configured agent picks up the message, loads relevant context (memory, integrations, previous conversations)
- Tools execute — the agent calls tools as needed (calendar, Jira, file operations, MCP servers)
- Response sent — the result flows back to the originating platform
Key Components
Message Connectors
Each platform has a dedicated connector that handles authentication, message format conversion, and delivery. Connectors are stateless — all state lives in the database.
- WhatsApp — uses the WhatsApp Web multi-device protocol
- Slack — uses the Slack Bolt framework with Socket Mode
- CLI — direct terminal interface for development and power users
- MCP — Model Context Protocol for IDE integration
Agent Engine
The agent engine manages conversation flow, context windows, and tool calling. Each agent can be configured independently with:
- Custom system prompts
- Specific tool permissions
- Platform-specific behaviors
- Memory and context settings
Tool Executor
Tools are organized as MCP (Model Context Protocol) servers. This means Orient's tools are compatible with any MCP client, and you can connect external MCP servers to extend functionality.
Built-in tool categories:
- Scheduling — create, update, delete scheduled messages and reminders
- Calendar — Google Calendar integration for events and availability
- Jira — ticket management, sprint queries, updates
- Mini-Apps — generate and host lightweight web applications
- File operations — read, write, and manage files
- Webhooks — receive and process external events
Database
Orient uses SQLite for all persistent storage:
- Conversation history
- Agent configuration
- Scheduled messages
- Integration credentials (encrypted)
- Feature flags
- Webhook configurations
SQLite was chosen for simplicity — no external database server needed. The entire database is a single file on your machine.
Self-Hosted Deployment
Orient can be installed with a single command:
curl -fsSL https://orient.bot/install.sh | bash
orient start
This starts:
- Orient server — the main application
- Dashboard — web UI at
localhost:4098
For Docker-based deployments, see the docker/ directory in the repository.
No external services are required. All AI inference uses your configured LLM provider (OpenAI, Anthropic, etc.) with your own API keys.
No Cloud Dependency
Orient has zero cloud dependencies:
- No telemetry or analytics
- No license server
- No remote configuration
- No automatic updates
- All data stays on your machine
The only external calls are to your configured LLM provider, and those are made directly from your infrastructure.