Open Retrieval-Based Inference Toolkit
Connect your data and tools to local or hosted models through one API. Deploy on your own infrastructure.
⭐ Star ORBIT to save it for your next AI project and help others discover it.
An AI gateway, retrieval engine, and agent host in one Apache 2.0 project, with no gated features.
| What you get | |
|---|---|
| Your data, connected | Query files, SQL, NoSQL, vector stores, and APIs through YAML-configured adapters, with hybrid retrieval and reranking. |
| Your choice of models | Use local or hosted models through one OpenAI-compatible API, with automatic model selection and provider fallbacks. |
| Agents that take action | Connect MCP tools, route requests to specialized skills, and coordinate agents through A2A or async messaging. |
| Beyond text chat | Process documents and images, build voice experiences, and generate images, audio, and video. |
| Real-time decisions | Get structured choices, yes/no answers, and scores with probabilities for routing, triage, and moderation. |
| Your infrastructure | Self-host on-premises or in a private cloud, including air-gapped deployments with local models. |
| Security and operations built in | SSO, role-based access, PII detection, moderation, quotas, audit logs, and cost estimates, plus an admin UI for day-to-day management. |
Explore the capability matrix for a detailed comparison with Open WebUI and LiteLLM.
See who ORBIT is for for organization types, needs, relevant features, and pilot ideas.
ORBIT control plane
Monitor resources, manage API keys and users, review audit logs, and configure MCP tools—all in one place.
Chat with your documents and images
Upload files and ask questions in plain language to find answers in your documents and images.
Chat with your data
Ask questions in plain language to explore your connected data, spot trends, and uncover insights.
Real-time AI-powered decisions
Turn context into fast, structured decisions with probabilities for routing requests, triaging tickets, and moderating content.
Connect your agents to MCP tools
Configure MCP servers in one place, then call MCP tools from your ORBIT client.
See other examples
Explore what you can build with ORBIT, from conversations over private data to voice assistants and tool-using agents.
- Talk to a municipal assistant in real time
- Choose AI models and configure model availability per agent
- Render music and play MIDI
- Query SQL data through a real-time voice conversation
- Render Mermaid diagrams in OrbitChat
- Chat with Elasticsearch data using an intent retriever
- Render charts in OrbitChat
See something you’d build with ORBIT? Give the project a ⭐.
Try with Docker
With Docker installed and running, use a prebuilt flavor image to try ORBIT without downloading a tarball or cloning the repo. Each image bundles the ORBIT server, OrbitChat web UI, and document chat for PDFs, Word, Excel, images, and Markdown.
Choose one flavor:
| Flavor | Image | What you need |
|---|---|---|
| Ollama | schmitech/orbit-ollama:latest |
Local inference; no API key. Ollama is bundled. |
| OpenAI | schmitech/orbit-openai:latest |
OPENAI_API_KEY exported in your shell. |
| Gemini | schmitech/orbit-gemini:latest |
GOOGLE_API_KEY exported in your shell. |
| OpenRouter | schmitech/orbit-openrouter:latest |
OPENROUTER_API_KEY exported in your shell. Free models. |
| Cohere | schmitech/orbit-cohere:latest |
COHERE_API_KEY exported in your shell. |
Each image is also published with a version tag (e.g. schmitech/orbit-ollama:2.21.1) if you want to pin to a specific release instead of :latest.
Ollama
docker pull schmitech/orbit-ollama:latest
docker run -d --name orbit \
-p 127.0.0.1:5173:5173 -p 127.0.0.1:3000:3000 \
-v orbit-data:/orbit/data \
-v orbit-models:/orbit/models \
schmitech/orbit-ollama:latestOpenAI
docker pull schmitech/orbit-openai:latest
docker run -d --name orbit \
-p 127.0.0.1:5173:5173 -p 127.0.0.1:3000:3000 \
-e OPENAI_API_KEY \
-v orbit-data:/orbit/data \
schmitech/orbit-openai:latestGemini
docker pull schmitech/orbit-gemini:latest
docker run -d --name orbit \
-p 127.0.0.1:5173:5173 -p 127.0.0.1:3000:3000 \
-e GOOGLE_API_KEY \
-v orbit-data:/orbit/data \
schmitech/orbit-gemini:latestOpenRouter
docker pull schmitech/orbit-openrouter:latest
docker run -d --name orbit \
-p 127.0.0.1:5173:5173 -p 127.0.0.1:3000:3000 \
-e OPENROUTER_API_KEY \
-v orbit-data:/orbit/data \
schmitech/orbit-openrouter:latestCohere
docker pull schmitech/orbit-cohere:latest
docker run -d --name orbit \
-p 127.0.0.1:5173:5173 -p 127.0.0.1:3000:3000 \
-e COHERE_API_KEY \
-v orbit-data:/orbit/data \
schmitech/orbit-cohere:latestOnce startup completes, open OrbitChat to chat or upload a document. The API is available at http://localhost:3000, with the bundled multimodal API key for the document-chat adapter.
View startup progress with docker logs -f orbit. Data persists in orbit-data; the Ollama flavor also stores downloaded models in orbit-models.
To sign in to the admin dashboard, grab the one-time generated admin password from the container log (it's not baked into the image):
docker logs orbit | grep -A3 "one-time admin password"Log in with admin and that password.
See the Docker guide for more details.
Run it locally
Prerequisites: Python 3.12+, an internet connection for downloads, and Ollama installed and running. If needed, run ollama serve in a separate terminal. On Windows, follow the installation guide.
curl -LO https://github.com/schmitech/orbit/releases/download/v2.21.1/orbit-2.21.1.tar.gz
tar -xzf orbit-2.21.1.tar.gz && cd orbit-2.21.1
./install/setup.sh --profile default
ollama pull gemma4:e2b
# Required for file/multimodal adapters:
ollama pull nomic-embed-text
./bin/orbit.sh start
./bin/orbit.sh statusOpen the admin dashboard and sign in with admin / ChangeMe!2026.
For a quick smoke test, the release seed includes default-key mapped to the
simple-chat adapter:
curl -X POST http://localhost:3000/v1/chat \
-H 'Content-Type: application/json' \
-H 'X-API-Key: default-key' \
-H 'X-Session-ID: readme-smoke-test' \
-d '{
"messages": [
{"role": "user", "content": "Say hello in one sentence"}
],
"stream": false
}'Continue with your first chat to create an API key, or use the Docker quick start for containers.
Configure models and data sources
The default setup uses Ollama with the gemma4-e2b-cpu preset, which resolves to gemma4:e2b.
- Server settings:
config/config.yaml. - Providers: Enable a provider in
config/inference.yaml, set its credential in.env, and select it globally or per adapter. - Ollama presets:
config/ollama.yaml. - Data and tools: Configure adapters in
config/adapters.yamlandconfig/adapters/. Start with the adapter guide or intent templates.
See Before you start for installation checks, file retrieval setup, and API-key management.
Chat from a terminal or browser
Use orbit-cli from a terminal (Node.js 20+):
npm install -g @schmitech/orbit-cli@latest
orbit-chat --url http://localhost:3000 --key default-keyOr launch OrbitChat in your browser:
npm install -g orbitchat@latest
cat > orbitchat.yaml <<'EOF'
agentMode:
mode: "single"
defaultAdapterId: "simple-chat"
adapters:
- id: "simple-chat"
EOF
ORBIT_ADAPTER_KEYS='{"simple-chat":"default-key"}' orbitchat --config orbitchat.yaml --openOrbitChat opens at http://localhost:5173. See the example configuration for more options.
| I want to… | Start here |
|---|---|
| Learn ORBIT | Tutorial · First chat · HTTP APIs |
| Connect private data | Files · Vector stores · SQL · Intent templates · Adapter system overview |
| Build agents | MCP tools · Automatic skill routing · A2A · Adapter creation |
| Make real-time decisions | Decision models · Automatic model selection · Triage Rush demo · Sentiment Pulse |
| Run in production | Authentication · Cost tracking · Rate limiting · Fault tolerance |
| Use a client | OrbitChat · Realtime Voice · Node.js SDK · Python API example |
See the documentation index for every guide and architecture deep dive.
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.
ORBIT is licensed under the Apache License 2.0.