OpenFief Give your AI agents a fief, not the kingdom.

Tasks

Every task target, the single entry point for local work, git hooks and CI.

Generated from Taskfile.yml on every build. The delivery pipeline page explains how they fit together.

check#

TaskWhat it does
task checkFull local pipeline, identical to CI

dco#

TaskWhat it does
task dcoDCO sign-off check (D-5) on the commits in BASE..HEAD, e.g. task dco BASE=origin/main HEAD=HEAD

default#

TaskWhat it does
task defaultList all tasks

e2e#

TaskWhat it does
task e2eEnd-to-end tests (test/e2e) on a local kind or k3d cluster, after task e2e:images; refuses non-local clusters

fmt#

TaskWhat it does
task fmtFormat Go code (gofumpt, goimports) in every Go module

gen#

TaskWhat it does
task genGenerate the operator’s deepcopy code, CRDs (deploy/crds) and Role (deploy/operator) with controller-gen

hooks#

TaskWhat it does
task hooksInstall git hooks (lefthook); hooks only call task targets

lint#

TaskWhat it does
task lintStrict lint (.golangci.yml) of every Go module

merge-driver#

TaskWhat it does
task merge-driverRegister kibi’s merge driver for the .kb files named in .gitattributes

proto#

TaskWhat it does
task protoContract checks (buf lint and format, breaking changes, generated code up to date)

setup#

TaskWhat it does
task setupOne-time setup per clone (pinned tools, kibi, git hooks, kibi merge driver)

test#

TaskWhat it does
task testUnit, replay-integration, envtest and tooling tests (offline once task tools has run)

tools#

TaskWhat it does
task toolsInstall the pinned Go tools into .bin/

vuln#

TaskWhat it does
task vulnVulnerability checks (govulncheck, npm audit)

check#

TaskWhat it does
task check:commitPre-commit pipeline (like check, with kibi on staged changes)

ci#

TaskWhat it does
task ci:imagesJSON list of the images CI builds (cmd//Dockerfile, plugins//Dockerfile), e.g. task ci:images PREFIX=ghcr.io/owner/openfief

demo#

TaskWhat it does
task demo:downDelete every resource of the demo ENV and its DNS records; needs CONFIRM=<ENV>, e.g. task demo:down ENV=demo CONFIRM=demo
task demo:planWhat task demo:up would create in Hetzner Cloud and the monthly cost against DEMO_BUDGET_EUR, without changing anything, e.g. task demo:plan ENV=demo
task demo:recreateDelete and create the demo machine ENV again from the current cloud-init; needs CONFIRM=<ENV>, e.g. task demo:recreate ENV=demo CONFIRM=demo
task demo:statusShow the demo machine ENV and the monthly cost of all OpenFief resources in the project, e.g. task demo:status ENV=demo
task demo:upCreate the demo machine ENV in Hetzner Cloud, or what is missing of it, within DEMO_BUDGET_EUR, and point its DNS name at it (HCLOUD_TOKEN, optional CLOUDFLARE_API_TOKEN), e.g. task demo:up ENV=demo
task demo:validateBuild the demo’s GitOps manifests (deploy/demo) offline and check that every image is pinned by digest

deploy#

TaskWhat it does
task deploy:demoPublish deploy/demo/openfief, pinned to the signed digests of TAG, as the signed artifact Flux on the demo follows (CI only; needs cosign and a GHCR login), e.g. task deploy:demo TAG=sha-1a2b3c4 REPO=owner/openfief

dns#

TaskWhat it does
task dns:sitePoint <DEMO_DOMAIN> (A and AAAA) and www (CNAME) at GitHub Pages, DNS-only, with the verification TXT when GITHUB_PAGES_CHALLENGE is set; changes only records commented managed-by=openfief-site and deletes the retired managed-by=openfief-docs record (CLOUDFLARE_API_TOKEN), e.g. task dns:site
task dns:site:planWhat task dns:site would change in the website’s DNS records at <DEMO_DOMAIN> and www.<DEMO_DOMAIN>, without changing anything (CLOUDFLARE_API_TOKEN), e.g. task dns:site:plan

docs#

TaskWhat it does
task docs:buildBuild the docs site into site/public; fails on a broken link, a diagram that doesn’t render or a stale reference
task docs:checkID checks for the design documents
task docs:freshStaleness gate over a pushed range: covered code changed only with its docs pages or a Docs-Unchanged trailer, e.g. task docs:fresh BASE=origin/main
task docs:fresh:commitStaleness gate for the commit being written (commit-msg hook), e.g. task docs:fresh:commit MSG=.git/COMMIT_EDITMSG
task docs:genGenerate the docs site’s reference and status pages into site/.gen (docs/dev/docs.md)
task docs:refsFail if a docs page names a kibi entity or a task that doesn’t exist
task docs:servePreview the docs site at http://localhost:1313/openfief/ (run task docs:build first for diagrams and generated pages)

e2e#

TaskWhat it does
task e2e:imagesBuild the core, operator, egress-proxy and demo-seed images from this checkout (Docker) and load them into the local e2e cluster, e.g. task e2e:images CLUSTER=k3d
task e2e:k3s-imageThe k3s image the k3d e2e cluster runs: the demo machine’s pinned K3S_VERSION (CI passes it to k3d)

fmt#

TaskWhat it does
task fmt:checkFail if Go code is not formatted

gen#

TaskWhat it does
task gen:checkFail if generated code or manifests differ from what task gen writes

image#

TaskWhat it does
task image:signKeyless cosign signature of a pushed image (CI only, D-17), e.g. task image:sign IMAGE=ghcr.io/owner/openfief/x@sha256:…

kibi#

TaskWhat it does
task kibi:checkValidate the whole requirements knowledge base
task kibi:doctorDiagnose the kibi setup
task kibi:installInstall the pinned kibi packages (npm ci)
task kibi:reportRequirement health report in kibi-report/ (the docs site publishes it at /requirements/)
task kibi:searchSearch requirements, e.g. task kibi:search – egress proxy
task kibi:stagedkibi checks on staged changes (what the pre-commit hook runs)
task kibi:statusShow kibi branch and knowledge-base status
task kibi:syncCompile this branch’s knowledge base (hooks run it after checkout, merge and rebase; CI sets KIBI_BRANCH)

lint#

TaskWhat it does
task lint:ciLint the GitHub Actions workflows (actionlint, offline)

plugins#

TaskWhat it does
task plugins:labelsWrite each first-party plugin’s manifest label (D-42) into plugins/<name>/Dockerfile from its manifest.json
task plugins:labels:checkFail if a plugin’s Dockerfile label, or a demo Plugin’s spec.manifest, differs from plugins/<name>/manifest.json

proto#

TaskWhat it does
task proto:breakingFail on breaking contract changes against a base revision (PROTO_BASE or DOCS_BASE, default HEAD), e.g. PROTO_BASE=origin/main task proto:breaking
task proto:checkFail if sdk/go/gen or gen/openapi is not what proto:gen generates
task proto:genGenerate the Go code for the contracts into sdk/go/gen and the read API’s OpenAPI into gen/openapi (pinned local plugins, no remote BSR)
task proto:lintLint and format-check the protobuf contracts (buf, STANDARD rules)

release#

TaskWhat it does
task release:assetsPackage the CRDs and bootstrap install from deploy/, and the docs site as of this version, into dist/
task release:checkValidate a release version for its channel, e.g. task release:check CHANNEL=beta VERSION=2026.11.0-beta.1
task release:notesRelease notes from Conventional Commits since the previous release, e.g. task release:notes VERSION=2026.11.0
task release:publishTag the release and, for stable, publish the GitHub release (CI only, after the dry run)

setup#

TaskWhat it does
task setup:ciCI setup (pinned tools, kibi, this branch’s knowledge base); no git hooks

test#

TaskWhat it does
task test:pgPostgreSQL integration tests on a disposable server (OPENFIEF_PG_DSN, or local PostgreSQL binaries), e.g. task test:pg – -run TestAppend

trustroot#

TaskWhat it does
task trustroot:updateRefresh the operator’s bundled Sigstore trust root (D-56) through TUF; review the diff and commit it

Generated from the repository at build time; it cannot go stale.