Self-hosted, OpenAI-compatible AI gateway for private RAG, natural-language data access, and tool-calling agents.
# ORBIT ### Open Retrieval-Based Inference Toolkit
Connect your data (files, databases, APIs, and MCP tools) to any local or cloud LLM. Exposes a unified endpoint for your apps, with built-in authentication and observability.
β‘ Try Live Sandbox β’ Quick start β’ Watch the demo β’ Tutorial β’ Documentation
Ask database questions in plain language, in any language.
ORBIT picks a reviewed query template, runs its parameterized query, and charts the result in chat.
π Try the SQL Database query demo live β
Upload PDFs, spreadsheets, and images, then query them together with context preserved across the conversation.
π Try the multimodal agent demo live β
Architecture
Authenticate and route REST, OpenAI-compatible, MCP, A2A, or message-queue requests to models, private data, and tools.
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.
ORBIT is actively maintained. See the release history, changelog, and commit history.
Capabilities
| Capability | Included | | :--- | :--- | | Model gateway | 41 configured inference backends and 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, file encryption, and cloud secret managers. | | Operations | Admin UI, health checks, metrics, audit logs, per-request token and estimated-cost tracking, spend analytics, circuit breakers, datasource pooling, and hot adapter reloads. |
Browse all adapters Β· See provider configuration Β· Read the configuration reference
β Finding ORBIT useful? Star the repository to help other developers discover it and support continued investment in new model, datasource, and agent integrations.
π Quick Start
Install ORBIT
Option 1 (Preferred): Stable release tarball
Prerequisites: Linux or macOS, Python 3.12+, and an internet connection for downloading dependencies.
Download and install the latest stable release:
curl -L https://github.com/schmitech/orbit/releases/download/v2.15.3/orbit-2.15.3.tar.gz -o orbit-2.15.3.tar.gz
tar -xzf orbit-2.15.3.tar.gz
cd orbit-2.15.3
./install/setup.sh --profile default
./bin/orbit.sh start
ORBIT starts on http://localhost:3000. For Windows, follow the Windows installation guide.
ORBIT is highly configurable. The main server settings live in ./config/config.yaml; inference providers, adapters, models, data sources, and other capabilities are configured in the other files under ./config/.
See the server management guide for commands to start, stop, restart, pause, and monitor ORBIT.
To use the optional ORBIT chatbot web interface, install and run orbitchat from your host machine:
npm install -g orbitchat
ORBITADAPTERKEYS='{"simple-chat":"default-key"}' orbitchat
Then open http://localhost:5173 in your browser.
See the OrbitChat project and documentation for configuration, custom adapters, authentication, and advanced usage.
Option 2: Docker
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 OPENAIAPIKEY=sk-...
docker pull schmitech/orbit-openai:latest docker run -d --name orbit -p 5173:5173 -p 3000:3000 \ -e OPENAIAPIKEY \ -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 GOOGLEAPIKEY=...
docker pull schmitech/orbit-gemini:latest docker run -d --name orbit -p 5173:5173 -p 3000:3000 \ -e GOOGLEAPIKEY \ -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 |
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?"}]}'
Admin Panel at http://localhost:3000/admin (default credentials: username admin, password admin123, set via auth.defaultadmin_password in config.yaml β change this immediately after first login).
For custom Docker deployments, follow Docker guide.
Continue with the tutorial's fastest path: verify your installation, then create your first chat with a persona, API key, and OrbitChat.
Before you go further, read this: adapters β not the server code β are what define what ORBIT can actually do (retrieval sources, models, voice, file/multimodal handling, and more). They're configured entirely in YAML under config/adapters/ and registered in config/adapters.yaml. See the Adapter overview to understand this system before customizing your deployment.
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 β |
Talk to a real-time voice assistant grounded in your data
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
Connect filesystem, Slack, Postgres, GitHub, Jira, and other MCP servers without adding an agent framework.
π Try the MCP tool calling demo live β
Real-Time Business & Revenue Intelligence (MCP Tool Calling)
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 β
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 | | Add voice | Real-time voice (speech-to-speech) Β· Audio services & STT/TTS adapters | | Run in production | Authentication Β· Usage and cost tracking Β· Rate limiting Β· Fault tolerance | | Use a client | ORBIT Chat Β· Node.js SDK Β· API key and Python examples |
See the full documentation index for architecture deep-dives, vector store setup, security hardening, and every other guide under docs/.
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.