Architecture
What's inside a Mobius instance
Your Agents
Claude Code, custom bots, scripts
Your Team
UI, Slack, voice calls
Your Systems
Webhooks, API calls, cron
REST API + WebSocket
acme.mobiusops.ai
Knowledge Graph
entities + relationships
Event Log
append-only history
Messages
channels + priority
Job Queue
claim + complete
Voice
real-time audio
PostgreSQL • Webhooks • Schedules • Audit Log • Scoped Access
Agents, humans, and external systems all interact through the same REST API. Every mutation is logged. Every agent is scoped. Every piece of knowledge persists.
Instance Architecture
Your own deployment
Single-tenant by design. Your data never shares infrastructure with other customers.
Own Domain
Each instance runs on its own subdomain (acme.mobiusops.ai). Your API endpoints, your agents, your identity.
Own Database
Dedicated PostgreSQL per instance. Your knowledge graph, event history, and agent memory are fully isolated.
Own Compute
Dedicated resources on Fly.io. Pick your region, choose your machine size. Scale independently.
The Data Model
Five primitives, infinite possibilities
Everything in Mobius is built from five core concepts. Together they form a knowledge graph that your agents read, write, and reason over.
Entities
Typed objects with attributes, summaries, and hierarchical paths. The nodes of your knowledge graph — people, companies, projects, anything your agents need to know about.
Relationships
Directed, typed connections between entities. "Alice manages Project X." "Acme Corp is a customer." Agents traverse these to understand context.
Events
An append-only history log attached to entities. Every interaction, status change, and decision is recorded — giving agents full context over time.
Messages
Structured communication between agents and humans. Channels, priority levels, read tracking. The backbone of agent-to-agent and agent-to-human coordination.
Jobs
A transactional work queue with atomic claiming, priority levels, retry logic, and long-polling. The primitive for async work — agents and external systems claim and complete tasks.
curl -X POST https://acme.mobiusops.ai/v1/entities \
-H "Authorization: Bearer mobius_sk_..." \
-d '{
"type": "company",
"name": "Acme Corp",
"summary": "Enterprise SaaS customer",
"attributes": {
"industry": "technology",
"arr": 2400000,
"stage": "growth"
},
"path": "/customers/enterprise"
}'AI Agents
Agents with memory and tools
Mobius agents are backed by Claude, GPT, or Gemini — with scoped access to the knowledge graph and a persistent conversation history.
Every agent in Mobius gets:
A root path in the knowledge graph — agents can only access what you allow
14 built-in tools for reading, writing, and searching the graph
Persistent conversation history across sessions
Configurable LLM provider and model (Claude, GPT-4, Gemini)
Full audit trail of every generation
Agent tool access
Knowledge Graph
entity_read, entity_list, entity_search, entity_create, entity_update, entity_delete
Relationships
relationship_read, relationship_list, relationship_create, relationship_delete
Events & Messages
event_list, event_create, message_send, message_list
All tool calls are transparently filtered by the agent's root path scope.
Voice
Real-time voice with tool access
Voice agents powered by Gemini's native audio model — with sub-second latency and full access to the knowledge graph mid-conversation.
Real-time audio I/O via WebSocket (PCM16 in, PCM24 out)
Sub-second first response (320–800ms typical)
Agents call Mobius tools during the conversation
Context injection — pass entity IDs to ground the conversation
Full transcript recording (user speech, agent response, agent thinking)
30 voice options to match your brand
Powered by Gemini 2.5 Flash Native Audio. Additional voice providers coming soon.
Caller
Voice Agent
Knowledge Graph
Response
Voice agent queries knowledge graph mid-call, responds with full context
Job Queue
Async work, done right
A transactional job queue built on PostgreSQL's FOR UPDATE SKIP LOCKED. Atomic claiming, priority levels, retry logic, and long-polling.
Atomic claiming — no double-processing, ever
Priority levels: normal, high, urgent
Configurable retry with max attempts
Claim timeouts prevent stuck jobs
Long-polling (up to 30s) for efficient consumption
JSONB input and result payloads
Use it for: background processing, agent task distribution, external worker integration, or any async operation that needs reliability.
import requests
MOBIUS = "https://acme.mobiusops.ai/v1"
HEADERS = {"Authorization": "Bearer mobius_sk_..."}
# Long-poll for a job (waits up to 30s)
resp = requests.post(f"{MOBIUS}/jobs/claim", headers=HEADERS, json={
"queue": "lead-enrichment",
"timeout": 30
})
if resp.status_code == 200:
job = resp.json()["data"]
result = enrich_lead(job["input"])
# Complete the job
requests.post(f"{MOBIUS}/jobs/{job['id']}/complete",
headers=HEADERS,
json={"result": result}
)Automation
Webhooks and schedules
React to changes in real time, or trigger actions on a schedule. Both are built into every instance.
Webhooks
Subscribe to any event type with granular filters
Filter by entity type, path prefix, message channel, or recipient
HMAC-SHA256 signed payloads for verification
Exponential backoff retry with failure tracking
Available events
entity.created · entity.updated · entity.deleted · relationship.created · relationship.deleted · event.created · message.created · voice.started · voice.ended · voice.transcript · job.created
Schedules
Cron expressions, fixed intervals, or one-time triggers
Send templated messages to agents or channels on schedule
Catch-up modes: fire once or skip missed runs
Run tracking with consecutive failure detection
# Create a scheduled message
curl -X POST https://acme.mobiusops.ai/v1/schedules \
-H "Authorization: Bearer mobius_sk_..." \
-d '{
"name": "daily-digest",
"cron": "0 9 * * 1-5",
"message": {
"channel": "ops-digest",
"content": "Generate daily operations summary",
"recipient_id": "agent_ops_bot"
}
}'Human-in-the-Loop
Structured interactions
When agents need human input, they create typed interaction requests — confirmations, choices, text input, or full forms — with validation, expiration, and audit trails.
confirm
Yes/no decisions with full context
choice
Select from validated options
input
Free-text response with prompts
form
JSON Schema validated forms
Lifecycle tracking: pending → claimed → completed / expired / canceled
Optional expiration with automatic timeout
Full audit trail: who responded, when, with what
Backed by the message system — interactions are routed like any other message
The API
REST. OpenAPI. Done.
50+ endpoints, fully documented with an OpenAPI 3.0 spec. Cursor-based pagination, batch operations, and structured error responses.
OpenAPI 3.0 Spec
Machine-readable API documentation. Generate client libraries in any language. Feed it to your AI agents.
API Keys
HMAC-validated, prefix-based keys with granular permissions and usage tracking. Scoped to tenant or system level.
MCP Server
Model Context Protocol support built in. Connect Claude Desktop or any MCP client directly to your knowledge graph.
Security
Isolation by default
Security built into the architecture
Single-tenant isolation — your own instance, your own database, your own domain
Scoped agent access — root path isolation prevents agents from reading outside their boundaries
API key authentication with HMAC validation and prefix-based lookup
HMAC-SHA256 signed webhook payloads
Audit logging for all mutations — user, action, resource, timestamp, IP
Encrypted session cookies with secure-only flag in production
Rate limiting per user with configurable windows