accelero

Open source · Go · Apache-2.0

GitOps for Docker Compose.
Zero downtime.

Accelero watches a git repo holding your docker-compose.yaml, detects drift against what is actually running, and rolls the change out without dropping a request. ArgoCD or Flux, for people who never moved to Kubernetes.

Latest v0.8.5 Single binary No cluster required
deploy.log

you@server:~$ git push origin main

To github.com:you/infra-gitops.git a1c9e02..7f3b184 main -> main

accelero: reconciling my-app

drift detected web: 1.2.2 -> 1.2.3 snapshot saved rollback point captured starting replica web-2 (health: starting) health ok web-2 added to proxy draining web-1 removed stopped web-1

deployed 11.4s · 0 requests dropped

you@server:~$

Git is the source of truth

Everything else is reconciliation. Push, or let Accelero notice on its own.

Declare

Register a stack against a git repo and a compose path. Config and history persist in SQLite, so restarts cost nothing.

Reconcile

Accelero compares desired state in git to the containers actually running. Drift triggers a deploy, or push a webhook and skip the wait.

Roll forward

New replicas come up behind your proxy, pass health checks, then take traffic before the old ones drain.

Or roll back

State is snapshotted before every deploy. A failed rollout restores itself instead of paging you at 2am.

Everything the compose file already says

No agent to install, no cluster to run, no new YAML dialect to learn.

Multi-stack

Independent stacks over a REST API, each with its own repo, credentials, and reconcile interval.

Real compose support

entrypoint, user, dns, cap_add, tmpfs, init, healthchecks, resource limits, and depends_on ordering.

.env interpolation

Full ${VAR}, ${VAR:-default} and ${VAR:?required} resolution before the file is parsed.

Zero-downtime rollout

Rolling replica updates behind Caddy, Traefik, or nginx, with a scripted end-to-end proof in the repo.

Observable

Container logs and stats including live streams, exec, docker events, and Prometheus metrics. No SSH required.

Secure by default

Native TLS, per-stack secrets with at-rest encryption, per-key rate limiting, signed webhooks, append-only audit log.

Running in three commands

From nothing to a reconciling stack.

01 Run it

# docker (recommended)
docker run -d --name accelero \
  -p 8000:8000 \
  -v /var/run/docker.sock:\
/var/run/docker.sock \
  -v accelero-data:/data \
  -e API_KEY=your-key \
  arbianshkodra/accelero

Prefer a binary? Grab it from Releases, export API_KEY, run ./accelero.

02 Point it at a repo

curl -X POST localhost:8000\
/api/v1/stacks \
  -H "X-API-KEY: $API_KEY" \
  -d '{
  "name": "my-app",
  "repo_url": "https://github.com/you/ops",
  "auto_deploy": true,
  "reconcile_interval_seconds": 300
}'

03 Watch it reconcile

# anything drifting?
curl localhost:8000\
/api/v1/stacks/my-app/drift \
  -H "X-API-KEY: $API_KEY"

# or deploy right now
curl -X POST localhost:8000\
/api/v1/stacks/my-app/deploy \
  -H "X-API-KEY: $API_KEY"

Full endpoint list and the zero-downtime walkthrough are in the docs.