EvoX Genesis
EvoX Genesis turns a high-level software objective into a persistent recursive software world: finite-lived agents recursively develop software, while only accepted consequences persist across develop
翻译准备中
Semi-automatic GitOps controller for HashiCorp Nomad: per-job policies (auto/approval/none), approval dashboard and pre/post deployment hooks.
翻译准备中
正在加载完整 README。
查看完整 README ↗A semi-automatic GitOps controller for HashiCorp Nomad.
Nops watches a git repository of Nomad jobs and deploys them according to a policy you set per job: automatically, after a person approves, or never. It shows pending changes in a dashboard and can run hooks, Nomad jobs that run before or after a deployment.
Status: ready to use, still at
v0: a minor release may change the configuration or the database, and the changelog says how to upgrade. Built for a self-hosted cluster, as a single instance. Inspired by gerrowadat/nomad-gitops.
Try it: getting started takes about fifteen minutes on one machine.
I needed Nops quickly, so I made it an experiment: a project where my role is the planner's and the rest is delegated to AI. I decide what gets built and how; I review and merge each pull request and sign each release. Claude writes the code and the docs, tests included.
Nops reads the job files from git and has Nomad parse them.
It plans each managed job and, if there is a difference, creates a deployment.
The job's policy decides what happens next:
| Policy | Behaviour |
|---|---|
auto | Nops deploys the change. |
approval | The deployment waits in the dashboard until someone approves or rejects it. |
none | Nops shows the drift and deploys nothing. The default. |
Nops registers the job only if nobody changed it since the plan.
detected → [pending_approval] → [pre_hook] → applying → [post_hook] → completed
│ │ │
└────────────┴───────────┴──→ failed
Policy and hooks live in the job's own HCL, as flat meta keys:
job "api" {
meta {
nops_managed = "true"
nops_policy = "approval" # auto | approval | none
nops_pre_hook = "api-backup,api-migrate" # parameterized batch jobs, run in this order
nops_post_hook = "api-smoke"
}
# ...
}
Every key is in the meta keys reference. To write a hook, see the hooks guide and the examples.
Nops is tested against Nomad 2.1.1 and Nomad 2.0.7, the latest patch of the two most recent Nomad minor releases. Other patches of those minor releases should work. Support for a Nomad minor release ends only in a minor release of Nops.
See the documentation index. Changes are in the changelog. To contribute, see CONTRIBUTING.
Licensed under the Apache License 2.0. Copyright 2026 Music Gang.