Self-hosted, container-native CI/CD that understands your pipelines, not just runs them.
OdinRun executes Docker-backed stages triggered by GitHub webhooks or polling triggers, then goes further: it streams real-time CPU & memory telemetry, diagnoses failures with AI (Ollama / OpenAI), and lets you define auto-remediation rules. All observable through a modern React dashboard. No cloud lock-in. No per-seat pricing. Runs entirely on your infrastructure.
| Capability | Feature & How It Works |
|---|---|
| Zero-Config Setup | Launches in seconds with SQLite and in-memory queues, guided by an interactive Web Setup Wizard. |
| Real-time Telemetry | Live streaming CPU & Memory utilization metrics directly from the Docker Engine API per stage. |
| AI Failure Diagnosis | Instant AI-generated root cause analysis using local Ollama models or OpenAI. |
| Auto-Remediation | Define intelligent rules: "If stage X fails with log pattern Y, execute remediation rule Z automatically." |
| GitHub Webhooks & Polling | HMAC-verified webhook handler + background commit polling worker for push & PR triggers. |
| Multi-Repo Management | Group and isolate pipeline runs across multiple repositories with persistent workspace configurations. |
| Resilient Runner Fleet | Atomic run scheduling, automatic 60s claim lease expirations, and self-healing worker loops. |
Prerequisites: Docker Desktop (Compose v2), Node.js 20+
Get started in under 60 seconds without manually editing database or environment configurations:
# 1. Clone the repository
git clone https://github.com/FoldedOdin/OdinRun.git
cd OdinRun
# 2. Copy default environment settings
cp deploy/.env.example deploy/.env
# 3. Start OdinRun
./odinrun startOpen http://localhost:3000 to launch the Setup Wizard. It will guide you through repository onboarding, GitHub PAT setup, and automatic pipeline triggering.
For production scale and high availability:
./odinrun advanced| Service | Port | Description |
|---|---|---|
api |
3001 | REST API, WebSockets, Webhook intake & Fleet Scheduler |
runner |
— | Polls API, prepares workspaces, executes Docker containers |
frontend |
3000 | Real-time React telemetry dashboard |
mongo |
27017 | Primary document store (Advanced Mode) |
redis |
6379 | Distributed event queue (Advanced Mode) |
jaeger |
16686 / 4318 | Distributed tracing (Advanced Mode) |
name: "CI Build & Test"
on:
- push
- pull_request
stages:
- name: install
image: node:20-alpine
run: npm ci
- name: test
image: node:20-alpine
run: npm test
depends_on:
- installFull schema reference → docs/pipeline-schema.md
- GitHub Webhook: Point to
http://your-server:3001/api/webhooks/github(Content type:application/json). - GitHub PAT / App: Provide a Personal Access Token or App key in Settings to enable private repository cloning and automatic commit polling.
All configuration is managed via environment variables (see deploy/.env.example) or the in-app Settings panel.
| Setting / Variable | Default | Description |
|---|---|---|
GITHUB_WEBHOOK_SECRET |
— | HMAC secret matching GitHub webhook configuration |
INTERNAL_API_KEY |
— | Shared auth key between API and Runner fleet |
LLM_PROVIDER |
ollama |
Choice of AI provider (ollama or openai) |
OLLAMA_BASE_URL |
http://localhost:11434 |
Endpoint for local Ollama AI model service |
OLLAMA_MODEL |
llama3 |
Ollama model name for AI failure diagnoses |
OPENAI_API_KEY |
— | API key for OpenAI diagnosis provider |
./odinrun start # Start OdinRun (Simple Mode: SQLite + InMemory)
./odinrun advanced # Start OdinRun (Advanced Mode: Mongo + Redis + Jaeger)
./odinrun stop # Stop all running containers
./odinrun logs # Tail Compose logs across all services
./odinrun doctor # Run diagnostic health checksApache-2.0 — see LICENSE.