Omnara Agent Dashboard - MCP Server and Python SDK
Project description
Omnara - Mission Control for Your AI Agents ๐
Your AI workforce launchpad, in your pocket.
๐ What is Omnara?
Omnara transforms your AI agents (Claude Code, Cursor, GitHub Copilot, and more) from silent workers into communicative teammates. Get real-time visibility into what your agents are doing, respond to their questions instantly, and guide them to success - all from your phone.
โจ Key Features
| Feature | Description |
|---|---|
| ๐ Real-Time Monitoring | See every step your AI agents take as they work |
| ๐ฌ Interactive Q&A | Respond instantly when agents need guidance |
| ๐ฑ Mobile-First Design | Full control from your phone, tablet, or desktop |
| ๐ Smart Notifications | Get alerted only when your input is needed |
| ๐ฏ Universal Dashboard | All your AI agents in one unified interface |
๐ฌ See It In Action
The moment your agent needs help, you're there. No more returning to failed jobs hours later.
๐ก Why Omnara?
We built Omnara because we were tired of:
- โ Starting long agent jobs and finding them stuck hours later
- โ Missing critical questions that blocked progress
- โ Having no visibility into what our AI was actually doing
- โ Being tied to our desks while agents worked
Now you can:
- โ Launch agents and monitor them from anywhere
- โ Get push notifications when input is needed
- โ Send real-time feedback to guide your agents
- โ Have confidence your AI workforce is productive
๐๏ธ Architecture Overview
Omnara provides a unified platform for monitoring and controlling your AI agents:
graph TB
subgraph "Your AI Agents"
A[๐ค AI Agents<br/>Claude Code, Cursor, etc.]
end
subgraph "Omnara Platform"
API[๐ API Server]
DB[(๐ PostgreSQL)]
NOTIFY[๐ Notification Service<br/>Push/Email/SMS]
end
subgraph "Your Devices"
M[๐ฑ Mobile App]
W[๐ป Web Dashboard]
end
A -->|Send updates| API
API -->|Store data| DB
API -->|Trigger notifications| NOTIFY
NOTIFY -->|Alert users| M
DB -->|Real-time sync| M
DB -->|Real-time sync| W
M -->|User responses| API
W -->|User responses| API
API -->|Deliver feedback| A
style A fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
style API fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style DB fill:#ffccbc,stroke:#d84315,stroke-width:2px
style NOTIFY fill:#fff59d,stroke:#f57f17,stroke-width:2px
style M fill:#f8bbd0,stroke:#c2185b,stroke-width:3px
style W fill:#f8bbd0,stroke:#c2185b,stroke-width:3px
Omnara supports two distinct modes of operation:
Mode 1: Real-Time Claude Code Monitoring
When you run Claude Code locally with the Omnara wrapper, it monitors your agent's activity in real-time:
graph TB
subgraph "Your Local Machine"
CC[๐ค Claude Code]
CW[๐ Claude Wrapper<br/>claude_wrapper_v3.py]
LOG[๐ JSONL Logs<br/>~/.claude/projects/]
TERM[๐ฅ๏ธ Terminal Output]
end
subgraph "Omnara Platform"
API[๐ REST API Server]
DB[(๐ PostgreSQL)]
SSE[๐ก SSE Endpoint]
NOTIFY[๐ Notification Service<br/>Push/Email/SMS]
end
subgraph "Your Devices"
M[๐ฑ Mobile App]
W[๐ป Web Dashboard]
end
CC -->|Writes logs| LOG
CC -->|Displays output| TERM
CW -->|Monitors| LOG
CW -->|Watches| TERM
CW -->|Sends messages via REST| API
API -->|Stores messages| DB
API -->|Triggers notifications| NOTIFY
DB -->|NOTIFY triggers| SSE
SSE -->|Real-time updates| M
SSE -->|Real-time updates| W
NOTIFY -->|Push/Email/SMS| M
M -->|User responses| API
W -->|User responses| API
API -->|Queued messages| CW
CW -->|Types into| CC
style CC fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
style CW fill:#fff59d,stroke:#f57f17,stroke-width:2px
style API fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style DB fill:#ffccbc,stroke:#d84315,stroke-width:2px
style NOTIFY fill:#ffe082,stroke:#f57f17,stroke-width:2px
style M fill:#f8bbd0,stroke:#c2185b,stroke-width:3px
style W fill:#f8bbd0,stroke:#c2185b,stroke-width:3px
How it works:
- The wrapper monitors Claude's JSONL log files and terminal output
- It identifies questions by detecting idle states and parsing terminal prompts
- Messages are sent to Omnara via REST API with
requires_user_inputflag - PostgreSQL triggers send real-time notifications via SSE
- Users receive push/email/SMS notifications for questions
- Responses are injected back into Claude's terminal
Mode 2: Remote Agent Launch via Webhook
When you trigger an agent remotely from Omnara, it uses the Model Context Protocol (MCP):
graph TB
subgraph "Omnara Platform"
UI[๐ Web/Mobile UI]
API[๐ API Server<br/>+ MCP Endpoint]
DB[(๐ PostgreSQL)]
SSE[๐ก SSE Endpoint]
end
subgraph "Your Computer"
WH[๐ Webhook Server<br/>claude_code.py]
CT[โ๏ธ Cloudflare Tunnel<br/>optional]
CC[๐ค Claude Code<br/>w/ MCP Config]
end
UI -->|Trigger agent| API
API -->|POST webhook| CT
CT -->|Forward request| WH
WH -->|Launch Claude| CC
CC -->|log_step/ask_question<br/>via MCP| API
API -->|Store messages| DB
DB -->|Real-time updates| SSE
SSE -->|Push updates| UI
UI -->|User responses| API
API -->|Return answers<br/>via MCP| CC
style UI fill:#f8bbd0,stroke:#c2185b,stroke-width:3px
style WH fill:#fff59d,stroke:#f57f17,stroke-width:2px
style CC fill:#e3f2fd,stroke:#1976d2,stroke-width:3px
style API fill:#c8e6c9,stroke:#388e3c,stroke-width:2px
style DB fill:#ffccbc,stroke:#d84315,stroke-width:2px
style SSE fill:#dcedc8,stroke:#689f38,stroke-width:2px
How it works:
- User triggers an agent from the Omnara interface
- Webhook server receives the request (optionally via Cloudflare tunnel)
- Claude is launched with MCP configuration pointing to Omnara
- The system prompt enforces Omnara-only communication (no terminal output)
- All communication flows through
log_stepandask_questionMCP tools - Questions are explicitly marked with
requires_user_input=true
๐ Mode Comparison
| Feature | Real-Time Monitoring | Remote Launch |
|---|---|---|
| Best for | Local development | Remote automation |
| Setup complexity | Simple (just run wrapper) | Moderate (webhook + tunnel) |
| Claude output visible | Yes (in terminal) | No (MCP only) |
| Question detection | Automatic (terminal parsing) | Explicit (ask_question) |
| Git isolation | Uses current directory | Creates worktrees |
| Parallel sessions | Not recommended | Fully supported |
| Network requirements | API access only | Webhook endpoint |
๐ง Technical Stack
- Backend: FastAPI with separate read/write servers for optimal performance
- Frontend: React (Web) + React Native (Mobile)
- Protocol: Model Context Protocol (MCP) + REST API
- Database: PostgreSQL with SQLAlchemy ORM
- Auth: Dual JWT system (Supabase for users, custom for agents)
๐ Quick Start
Option 1: Real-Time Monitoring (Recommended for local development)
Monitor your Claude Code sessions in real-time:
- Download the app or visit omnara.ai
- Get your API key from the dashboard
- Run Claude with the wrapper:
python -m webhooks.claude_wrapper_v3 --api-key YOUR_API_KEY
- See everything your agent does in the Omnara dashboard!
Option 2: Remote Agent Launch (For triggering agents from anywhere)
Launch Claude Code remotely from your phone or web browser:
- Download the app or visit omnara.ai
- Install Omnara CLI:
pip install omnara # or with uv: uv pip install omnara
- Start the webhook server on your computer:
omnara serve - Create your agent with the webhook URL and API key shown
- Trigger agents remotely from anywhere!
For Developers
๐ ๏ธ Development Setup
Prerequisites
- Python 3.10+
- PostgreSQL
- Node.js (for CLI tools)
Setup Steps
-
Clone and enter the repository
git clone https://github.com/omnara-ai/omnara cd omnara
-
Set up Python environment
python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate make dev-install
-
Generate JWT keys
python scripts/generate_jwt_keys.py -
Configure environment (create
.envfile)DATABASE_URL=postgresql://user:password@localhost:5432/omnara SUPABASE_URL=https://your-project.supabase.co SUPABASE_ANON_KEY=your-anon-key JWT_PRIVATE_KEY='-----BEGIN RSA PRIVATE KEY-----\n...' JWT_PUBLIC_KEY='-----BEGIN PUBLIC KEY-----\n...'
-
Initialize database
cd shared/ alembic upgrade head cd ..
-
Run services
# Terminal 1: MCP + REST Server python -m servers.app # Terminal 2: Backend API cd backend && python -m main
๐ Integration Guide
Method 1: Real-Time Monitoring with Wrapper
Run Claude Code with the Omnara wrapper for automatic monitoring:
# Basic usage
python -m webhooks.claude_wrapper_v3 --api-key YOUR_API_KEY
# With git diff tracking
python -m webhooks.claude_wrapper_v3 --api-key YOUR_API_KEY --git-diff
# Custom API endpoint (for self-hosted)
python -m webhooks.claude_wrapper_v3 --api-key YOUR_API_KEY --base-url https://your-server.com
Method 2: Remote Launch with MCP
For remote agent launching, the webhook automatically configures MCP:
{
"mcpServers": {
"omnara": {
"command": "pipx",
"args": ["run", "--no-cache", "omnara", "mcp", "--api-key", "YOUR_API_KEY"]
}
}
}
Method 3: Python SDK
from omnara import OmnaraClient
import uuid
client = OmnaraClient(api_key="your-api-key")
instance_id = str(uuid.uuid4())
# Log progress and check for user feedback
response = client.send_message(
agent_type="claude-code",
content="Analyzing codebase structure",
agent_instance_id=instance_id,
requires_user_input=False
)
# Ask for user input when needed
answer = client.send_message(
content="Should I refactor this legacy module?",
agent_instance_id=instance_id,
requires_user_input=True
)
Method 4: REST API
curl -X POST https://api.omnara.ai/api/v1/messages/agent \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Starting deployment process", "agent_type": "claude-code", "requires_user_input": false}'
๐ค Contributing
We love contributions! Check out our Contributing Guide to get started.
Development Commands
make lint # Run code quality checks
make format # Auto-format code
make test # Run test suite
make dev-serve # Start development servers
๐ Pricing
| Plan | Price | Features |
|---|---|---|
| Free | $0/mo | 10 agents/month, Core features |
| Pro | $9/mo | Unlimited agents, Priority support |
| Enterprise | Contact Us | Teams, SSO, Custom integrations |
๐ Support
- ๐ Documentation
- ๐ฌ GitHub Discussions
- ๐ Report Issues
- ๐ง Email Support
๐ License
Omnara is open source software licensed under the Apache 2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file omnara-1.4.7.tar.gz.
File metadata
- Download URL: omnara-1.4.7.tar.gz
- Upload date:
- Size: 74.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a119e2012fdb8a4ef794d4201eab03375a63ed03879e454c773944e2c005c40c
|
|
| MD5 |
f2043c9d598cbe329809a5aca28e910f
|
|
| BLAKE2b-256 |
639c9853df94829a4cca8a656e0ecb69e057cb7c5b0a01055cd1647302f0c2fe
|
File details
Details for the file omnara-1.4.7-py3-none-any.whl.
File metadata
- Download URL: omnara-1.4.7-py3-none-any.whl
- Upload date:
- Size: 84.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80cd2be675d99bcddfb1dbaf723bf72257a54ffe71336e693b2df00d7141ceaf
|
|
| MD5 |
746fef23e37a4699d83e318359f5ddb4
|
|
| BLAKE2b-256 |
0b2b3e793ea7e29ec031c2f843df727e758c54957d2c505f6abe8e47491e91f7
|