Quick start#
Try the demo#
To see manent at work before installing anything, the demo image runs in one container the server, the web interface, a worker and five hosts reached over SSH, with a few minutes of release history:
git clone https://github.com/manent-deployer/manent.git && cd manent
docker build -f demo/Dockerfile -t manent-demo .
docker run --rm -p 8080:8080 -p 9000:9000 --name manent-demo manent-demo
Open http://localhost:8080 (port 9000 is the demo identity provider, which signs you in as John Doe with no password), then release shop to production in waves (a canary host, then one region at a time, each behind a health gate) and try a broken version, which manent rolls back by itself:
docker exec -it manent-demo manent deploy -f /demo/deploys/shop-1.3.0.yml
docker exec -it manent-demo manent deploy -f /demo/deploys/shop-1.4.0.yml
docker exec -it manent-demo manent logs <id> --level warn
docker exec -it manent-demo manent inventory

The demo has no login and keeps its data inside the container: it is not a configuration for real environments. The steps below build manent and run it on your machine.
Requirements#
- Go 1.27 or later.
go.modpins the 1.27.x toolchain: with an older Go it is downloaded automatically (GOTOOLCHAIN=auto). - No database to install to try manent: by default DBOS uses a SQLite file (
manent.db). Production needs Postgres.
Build#
make build # bin/manent (client) and bin/manent-server
make plugins # optional: external plugins in bin/ (manent-plugin-remote-copy)
First deploy#
-
Check the descriptor.
validatecomputes the step plan and shows the effective deploy, without starting anything:--offlineskips reading the environment configuration (for example from Consul). -
Start a worker. Deploys are run only by a worker.
servestarts the HTTP API on:8080and a worker in the same process: -
Queue the deploy from another terminal with the
manentclient, which by default talks to the local server (http://127.0.0.1:8080). The command waits for the deploy to finish and prints the result:The example descriptor copies the artifact over SSH to
192.168.1.10: adaptartifact.source,deploy.targetsand the secrets to your environment, or use--dry-runto see what would happen without touching the targets. -
Check the status at any time:
The same deploy can be queued through the API, with the descriptor in JSON:
curl -X POST localhost:8080/api/v1/deployments \
-H 'Content-Type: application/json' \
-d @examples/descriptor.json
Next steps#
- Understand what just happened, then build on it: the tutorials, starting from First deploy to a Linux server.
- The ideas behind it: Overview and Deploy types.
- The full descriptor format: Deploy descriptor.
- All commands:
manentclient,manent-serverand HTTP API. - Follow a deploy:
bin/manent logs -f <id>and Observability. - Take manent to production: Installation, Configuration, Scalability and Recovery, shutdown and retention.