Model Hotel

Multi-Provider AI Gateway - No personal logs by design. Model autodiscovery, Failover groups, High availability, Android companion app, and more - "Because we h…

LLM Mart
15 views 154 listing impressions
ai

Important

AI-Assisted Project Disclaimer:
Human judgment applied at every stage, particularly around architectural decisions, UX flows, and quality control.

Localised by AI - _expect mistakes_ - translation fixes welcome as PRs against [`web/src/i18n/locales/`](https://github.com/hugalafutro/model-hotel/tree/master/web/src/i18n/locales)!
Made with [OpenCode](https://opencode.ai) + [oh-my-opencode-slim](https://github.com/alvinunreal/oh-my-opencode-slim) & [Claude Code](https://claude.com/claude-code)


Live Demo
Poke around a real instance at mh.site19.ddns.net - rebuilds fresh every 30 minutes

A single OpenAI-compatible endpoint that sits in front of all your LLM providers. Models are auto-discovered the moment you add a provider and optionally on schedule; failover groups form automatically around shared model names and retry transparently when a provider goes down; no prompt data is ever stored.

Dashboard cycling through the Clean SaaS, Cyber Terminal, and Glassmorphism UI styles
Model Hotel Dashboard

Quick Start

git clone https://github.com/hugalafutro/model-hotel.git
cd model-hotel

cp .env.example .env
nano .env          # set a strong MASTER_KEY and POSTGRES_PASSWORD

docker compose up --build -d

For local development, layer the compose.dev.yml override instead. It mounts the Docker socket, turns on DEBUG_LOG, and allows embedding, so use it only in a trusted environment:

# Development only:
docker compose -f docker-compose.yml -f compose.dev.yml up --build -d

To run a prebuilt image instead of building from source, edit docker-compose.yml: comment out the build: block and uncomment one of the image: lines.

On first run the admin token is printed once, in a boxed ADMIN TOKEN block in the startup banner, and never shown again:

docker compose logs app

If you lose it, delete .data/admin-token and restart to generate a new one. The ADMIN_TOKEN environment variable seeds the token on first boot only: once .data/admin-token exists the file wins and the variable is ignored.

Open http://localhost:8081, log in with that token, add your first provider, and start proxying.

High Availability

Run several instances behind one client endpoint with no client-side change: a Front Desk control plane manages the fleet and replicates config to every member, while Traefik load-balances them with health checks and automatic failover. Members share one MASTER_KEY (so encrypted provider keys port across the fleet) and each keeps its own admin token.

Front Desk control plane: provider quota badge strip above four healthy fleet members
Front Desk (HA control app) Dashboard

Full deployment in the High Availability wiki.

Bellhop Companion App

From the project's README.

Comments (0)

Sign in to join the conversation.

No comments yet.

Related tools