modernci Agent-first CI.
Get started

Run it yourself, and connect it if you want.

Every install is a complete daemon and never needs the cloud. Connecting to modernci.dev is optional and outbound only: one view of many daemons.

Set it up today: paste this into your coding agent.
Read https://modernci.dev/llms.txt and set up ModernCI on this repo.

Works with Claude Code, Codex, or any agent that can run commands.

The runbook your agent follows: Deploy ModernCI with your agent. Or do it by hand below.

Self-host · the product · preview

Three commands. preview

In use on our own repos today. Self-host release: follow the changelog.

  1. Run the daemon previewOne Rust binary in a Docker image: the loop, the store, secrets, the UI and the operator MCP.
    docker run -p 8080:8080 -v mci:/data modernci/modernci
  2. Register a repo previewGitHub, GitLab, Gitea or Forgejo. You give it a token once.
    modernci repo add you/your-repo
  3. Point a machine at it previewAny laptop or server becomes a backend, an agent host, or both. It connects out, so no open port.
    modernci host join https://ci.your.lan

On GitHub Actions now? modernci import .github/workflows/ci.yml writes the branch file, then judges beside your old CI until the verdicts agree.

Connect · optional

One view of many daemons.

modernci cloud connect

Sign in with your forge. The daemon opens one outbound link to your modernci.dev tenant and shows up on the Fleet page. If the cloud is down, the daemon carries on and catches up when the link returns.

  • Up the link: usage records, a status summary (moves, alarms, cost per merged change) and health.
  • Down the link: ladder, prompt and hook edits made in the cloud UI. The daemon applies a change only if it validates.
  • Never, by default: code, logs and secrets. A log you open from the cloud streams through the link on demand.
Sign in to modernci.dev