Maand documentation

Maand is an agentless workload orchestrator. State lives in a local bucket (maand.db, KV, secrets, staged files). Workers are reached over SSH from the CLI host; hooks run on the host with python3 and bun.

Official site: maand.sh


How this documentation is organized

Tier Purpose Start here
Start Guided tour (Linux/K8s background → every feature) and first deploy start/README.md
Guides Task-oriented how-tos guides/README.md
Reference Schemas, CLI, KV, configuration reference/README.md

Each topic has one canonical page. Other files summarize and link — they do not repeat full schemas.


Typical workflow

maand init → edit workspace → maand build → maand deploy → health_check / job ops → gc

Bucket layout

./                          # bucket root (run all maand commands here)
├── maand.conf              # SSH, certs, job_config_selector, log_format
├── data/maand.db
├── workspace/
│   ├── workers.json
│   ├── disabled.json       # optional
│   ├── bucket.conf
│   ├── bucket.jobs.conf    # optional; or bucket.jobs.<env>.conf
│   └── jobs/<job>/
│       ├── manifest.json
│       ├── Makefile        # or Makefile.tpl
│       ├── _hooks/
│       ├── _prometheus/    # optional
│       └── *.tpl
├── secrets/
├── tmp/
└── logs/                   # structured command logs; logs/runs/<run_id>/

Reader paths

Goal Path
Learn maand from scratch start/README.md (chapters 1–12) → quickstart
First deploy only quickstart
Glossary concepts
Memory / CPU / environments resources-and-placementconfiguration
Rolling cluster upgrade rolling-deploymanifest
Multi-job deploy order deployment-sequencedeploy
Deploy failed or skipped debugging-deploylogging
Push config without restart deploy — applying changesrestart_policy: reload, restart_globs, --sync-only
Disable / drain disable-and-drain
Job hooks (Python/Bun) hooks-tutorialhooks
Prometheus integration prometheus
Compare to other tools comparison-orchestrators

Inspect state

maand info
maand cat workers
maand cat jobs
maand cat allocations
maand cat deployments
maand cat certs
maand cat kv get maand/job/<job> version
maand logs show --job <job> --format human

Local integration tests

Integration tests use real workers and local assets/ setup in the private development repository (not published here).