Skip to content

schmitech/orbit

ORBIT

ORBIT

Connect private data and internal tools through one OpenAI-compatible API

Connect files, databases, vector stores, models, APIs, and MCP tools. Run locally or in your cloud—with authentication, observability, and governance built in.

GitHub stars Last commit Version 2.11.0 Apache 2.0 license Python 3.12+

Quick start  •  Watch the demo  •  Tutorial  •  Documentation

multimodal.mp4

Upload PDFs, spreadsheets, and images, then query them together with context preserved across the conversation.

Cloning ORBIT? If it looks useful, star the repository. It helps other developers discover the project and signals that we should keep investing in new model, datasource, and agent integrations.


One backend for private AI applications

What ORBIT gives you
Connect anything Query files, SQL, NoSQL, vector stores, Elasticsearch, REST/GraphQL APIs, and MCP tools in natural language across multiple languages.
Use any model Route one API contract across local models such as Ollama, llama.cpp, and vLLM or cloud providers such as OpenAI, Anthropic, Gemini, Bedrock, and Azure.
Operate it safely Ship with API keys, RBAC, SSO, quotas, moderation, fallbacks, metrics, audit logs, and an admin panel instead of assembling them yourself.

ORBIT sits between your applications and the models, data, and tools they need. Define adapters in YAML, expose them through one OpenAI-compatible endpoint, and move from a local prototype to a governed deployment without replacing the architecture.

Where does it fit? ORBIT combines an AI gateway with retrieval and tool execution. It is a backend API rather than just a chat UI, and it includes production controls rather than leaving them to application code. See ORBIT vs. Open WebUI and ORBIT vs. LiteLLM.

🚀 Quick Start

Want to try ORBIT immediately without installing anything? Try the live ORBIT Sandbox.

Otherwise, no clone, no build, no config file to hand-edit. Pull a flavor image and run it — ORBIT, the orbitchat web UI, and a full multimodal document-chat setup (PDF, Word, Excel, images, Markdown) are all inside.

Prerequisites: Docker, 4 GB of free RAM, and 3 GB of disk space.

Option 1: Local / Offline (Ollama)
docker pull schmitech/orbit-ollama:latest
docker run -d --name orbit -p 5173:5173 -p 3000:3000 \
  -v orbit-data:/orbit/data \
  -v orbit-models:/orbit/models \
  schmitech/orbit-ollama:latest

The first run downloads the local chat/vision model (gemma4:e2b, ~7.2 GB) inside the container and will take some time to complete startup depending on your internet connection speed. Once pulled, open http://localhost:5173 and start chatting — upload a PDF, a spreadsheet, or an image and ask about it. No cloud account or API key required.

Model
Chat gemma4:e2b (Ollama)
Vision gemma4:e2b (Ollama)
Embeddings nomic-embed-text (Ollama)
Option 2: OpenAI Hosted Model
export OPENAI_API_KEY=sk-...

docker pull schmitech/orbit-openai:latest
docker run -d --name orbit -p 5173:5173 -p 3000:3000 \
  -e OPENAI_API_KEY \
  -v orbit-data:/orbit/data \
  schmitech/orbit-openai:latest
Model
Chat gpt-5.4-mini (also selectable: gpt-5.4, gpt-5.4-nano)
Vision gpt-5.5
Embeddings text-embedding-3-small
Option 3: Gemini Hosted Model
export GOOGLE_API_KEY=...

docker pull schmitech/orbit-gemini:latest
docker run -d --name orbit -p 5173:5173 -p 3000:3000 \
  -e GOOGLE_API_KEY \
  -v orbit-data:/orbit/data \
  schmitech/orbit-gemini:latest
Model
Chat gemini-3.1-pro-preview (also selectable: gemini-3.6-flash)
Vision gemini-3.6-flash
Embeddings gemini-embedding-2-preview

Tip

These are just the defaults. Change the active model per adapter from the Admin Panel's adapter settings (persists across restarts, stored in the orbit-data volume), or inspect/edit the resolved YAML directly at /orbit/config-runtime/adapters/multimodal.yaml inside the running container (docker exec -it orbit sh) — note that a container restart regenerates this file from the image default, so edits there don't survive a restart on their own.

Note

-e OPENAI_API_KEY (no =value) passes through whatever that variable is already set to in your shell — export it first, don't paste the key inline as -e OPENAI_API_KEY=sk-..., which would leave it sitting in your shell history. Each cloud flavor needs exactly one credential — the same key powers chat, vision, and embeddings, so nothing silently falls back to a different provider. docker pull never needs, receives, or persists a credential; only docker run does.

Port 5173 is the chat UI, 3000 is the OpenAI-compatible API if you want to call ORBIT directly:

curl -X POST http://localhost:3000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: multimodal' \
  -H 'X-Session-ID: local-test' \
  -d '{"messages":[{"role":"user","content":"What can ORBIT connect to?"}]}'

You can also access the Admin Panel at http://localhost:3000/admin (default credentials: username admin, password admin123 — which can be changed inside the admin panel).

Important

These images ship with a default database and API key for first-run convenience. Rotate the default API key/admin password before exposing ORBIT beyond localhost.

For production deployments, ALWAYS use the latest stable release.

You can also follow the Docker guide, tutorial, or Windows guide.


What you can build

Goal ORBIT handles
Chat with private documents Upload PDFs, office documents, spreadsheets, images, and audio; retrieve relevant context across a conversation. Try the tutorial →
Query databases in multiple languages Generate and execute safe queries across SQL, MongoDB, Elasticsearch, and composite datasources. Try the SQL demo →
Build tool-using agents Give models scoped access to MCP servers with bounded, multi-step server-side tool loops. Read the MCP guide →
Offer one governed AI endpoint Route local and cloud models with per-key access, quotas, fallbacks, moderation, metrics, and auditability. Create your first key →
Ask database questions in multiple languages

db-query.mp4

ORBIT generates the query, runs it against the database, and charts the result in chat.

Talk to a real-time voice assistant grounded in your data

dbchat.mp4

Speech-to-speech voice grounded in SQL databases, APIs, or data lakes — interrupt it mid-answer and it stops and responds immediately.

Let the model use internal tools

mcp-tool-demo.mp4

Connect filesystem, Slack, Postgres, GitHub, Jira, and other MCP servers without adding an agent framework.

Real-Time Business & Revenue Intelligence (MCP Tool Calling)

mcp-business.mp4

Multi-step agent reasoning across 9 synthetic MCP tools: CRM health, telemetry seat utilization, P1 support escalations, and churn risk simulation.
👉 Try the Business & Revenue Intelligence MCP demo live →

Operate the gateway

observability.mp4

Monitor health, latency, tokens, sessions, adapters, and logs behind API keys, quotas, and rate limits.

Why ORBIT?

If you need… ORBIT gives you…
More than model routing RAG, structured-data retrieval, web search, and tool execution behind the gateway.
More than a chat interface A backend that works with ORBIT Chat or any client that can call an OpenAI-compatible API.
More than a prototype framework Authentication, RBAC, SSO, quotas, moderation, circuit breakers, fallbacks, metrics, and audit logs.
Private deployment Local inference, encrypted file storage, cloud secret managers, and fully offline operation.
Less orchestration code YAML-defined adapters, datasources, prompts, provider routing, and guardrails.

Capabilities

Capability Included
Model gateway 37+ local and cloud providers, OpenAI-compatible APIs, per-key routing, model switching, retries, and fallbacks.
Retrieval Vector RAG, file and multimodal RAG, SQL, MongoDB, Elasticsearch, REST, GraphQL, web search, and multi-source answers.
Agents and protocols MCP tool calling, bounded multi-step loops, natural-language skill routing, A2A, and asynchronous RabbitMQ requests.
Media Image, video, speech, PDF, Word, Excel, PowerPoint, CSV, and markdown generation.
Security API keys, RBAC, Entra ID and Auth0 SSO, rate limits, quotas, moderation, AES-256-GCM file encryption, and cloud secret managers.
Operations Admin UI, health checks, metrics, audit logs, circuit breakers, datasource pooling, and hot adapter reloads.

Browse all adapters · See provider configuration · Read the configuration reference

Architecture

ORBIT request and integration architecture
Authenticate and route REST, OpenAI-compatible, MCP, A2A, or message-queue requests to models, private data, and tools.

Used in production

dialoga.mp4

Dialoga, a Canadian AI chat product, is built on ORBIT. The hosted service is currently limited to Canadian IP addresses.

ORBIT is actively maintained, Apache 2.0 licensed, and developed in the open. See the release history, changelog, security policy, and commit history.

Clients and documentation

Start here Resource
Learn ORBIT Tutorial · Your first chat · HTTP APIs
Configure adapters Adapter overview · Configuration guide
Connect private data Files · Vector stores · SQL
Build agents MCP tools · Auto skill routing · A2A
Run in production Authentication · Rate limiting · Fault tolerance
Use a client ORBIT Chat · Node.js SDK · API key and Python examples

Contributing

Contributions are welcome: new retrievers and provider integrations, deployment guides, tests, fixes, and documentation. Read CONTRIBUTING.md, pick an open issue, or start a discussion.

Maintained by Remsy Schmilinsky.

License

ORBIT is licensed under the Apache License 2.0.