Skip to content

obakeng-develops/mino

Repository files navigation

Mino

Mino keeps your Docker containers running. It watches them, works out why one failed, restarts it within the limits you set, and shows you the whole thing as it happens. Or it stops and asks first. That part is your call.

You log in. Your teammates log in. Everyone sees the same fleet. Owners change things; operators watch and act on incidents but cannot touch the settings.

What it looks like

Mino lives on one page. When a container fails, it tells you what broke, why, and what it would do about it. Then it acts, or waits for your call.

A live incident: mino-demo-web is down, diagnosed, waiting for approval to restart

When everything is healthy, it just says so.

The Now page with every service healthy

Every incident it has handled, grouped by machine.

Incident history grouped by machine, all resolved

And how each container has held up over time.

The Fleet page showing per-container uptime

Requirements

Mino is deliberately small to run. The minimum is one always-on instance and a database — it doesn't matter where you host it (a VPS, Docker Compose, Fly, Kamal, your own box).

  • Run exactly one instance — don't scale it out. Mino is a single process and must not run as multiple replicas or autoscale. Its monitor (the poll loop and the live incident state) is a per-process singleton; a second replica would open duplicate incidents and, in auto-fix, restart the same container twice (see #64). Concretely: don't put it behind a load balancer with more than one replica, and keep the one instance always on (don't scale to zero — the monitor must run continuously). Platform examples: Docker Compose — a single web container, no --scale web=2; Fly — min_machines_running = 1 and fly scale count 1; Kamal — one web host/role.
  • Modest resources. Around 512 MB RAM and one CPU is plenty — it watches and reacts, it doesn't crunch.
  • A PostgreSQL database. Any Postgres works — bundled (Docker Compose ships one), managed, or self-hosted; point DATABASE_URL at it. There is nothing to run to set up the schema — Mino creates and evolves its own tables on startup. (Local dev can use a SQLite DATABASE_URL.)
  • A handful of secrets, generated by ./scripts/gen-secrets.sh: AUTH_SECRET (Mino refuses to start on the built-in default), ENCRYPTION_KEY, INTERNAL_API_KEY, and COOKIE_SECURE=true when served over HTTPS.
  • An LLM key is optional. Without one, Mino still monitors and restarts; it just skips the written diagnosis. Add a provider in Settings when you want it.
  • The executor does not run here. Mino restarts containers on a watched host by installing the agent there — the Mino box itself needs no Docker socket.

Pick a deployment path from the Documentation section below.

Documentation

The docs follow Diátaxis. Pick the door that matches what you need right now.

Learning. New to Mino? Start here.

Doing. You have a goal and want the steps.

Looking up. You need a fact.

Understanding. You want to know why.

Hand the deploy to an agent

The how-to guides are written as plain, ordered steps, so a coding agent (Claude Code, Cursor, and the like) can follow them as well as you can. Point it at the guide you want and let it drive — for example:

Read docs/how-to/deploy-with-docker-compose.md and deploy Mino by following the steps. Check the Requirements section in the README first, and ask me before anything destructive or anything that spends money.

Swap in deploy-with-fly.md or deploy-with-kamal.md for a different target. Whatever it does, it should stand up a single always-on instance — see Requirements.

In a hurry

Run it on your machine in two terminals. No Docker needed.

# backend
python3.13 -m venv .venv && source .venv/bin/activate
pip install -r backend/requirements.txt
AUTH_SECRET=dev-secret ENCRYPTION_KEY=dev-key DATABASE_URL="sqlite:///./oncall.db" \
  uvicorn app.main:app --app-dir backend --host 127.0.0.1 --port 8000

# frontend (new terminal)
cd frontend && npm install && npm run dev

Open http://localhost:5173 and create the owner account. The full walkthrough is in the tutorial.

License

MIT — see LICENSE.

About

Mino keeps your Docker containers running

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors