Technical overview

A knowledge graph for your AI agents. With voice.

Every Mobius instance gives your agents a persistent memory, a job queue, voice capabilities, and structured human interactions — all behind a REST API you already know how to use.

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.

Create an entity
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.

worker.py
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

Ready to dig deeper?

Explore the docs, deploy an instance, or talk to us about your use case.