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.
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.