Documentation

CLI reference

The fendlemark binary is both the server and the operator's tool. Seven commands. The ones you will use are serve and doctor.

Global flags

FlagDefaultDescription
--config, -c./fendlemark.yamlPath to the configuration file.
--log-levelfrom configdebug, info, warn, error, serene.
--log-formattexttext or json.
--no-colorautoDisable ANSI colour. Also honours NO_COLOR.
--help, -hHelp for any command.

fendlemark init

$ fendlemark init [dir] [--adapters mlflow,argo] [--force]

Writes fendlemark.yaml and a short README into dir (default: current directory). With --adapters, the listed adapters are enabled with placeholder values; otherwise all four are declared and disabled. Refuses to overwrite an existing file without --force.

fendlemark serve

$ fendlemark serve [--listen 127.0.0.1:7411] [--console-dev] [--no-reconcile-on-start]
FlagDescription
--listenOverride server.listen.
--console-devProxy console requests to a Vite dev server on :5173 instead of serving the embedded build.
--no-reconcile-on-startStart serving before the initial reconciliation completes. The console shows an empty lattice that fills in. Useful for very large platforms; discouraged by the Keepers on aesthetic grounds.
--adaptersComma-separated list to enable for this run only, overriding config.

Handles SIGTERM and SIGINT with a graceful shutdown of server.shutdown_grace. Exposes /healthz (process up), /readyz (initial reconciliation complete), and /metrics (Prometheus).

fendlemark adapters

$ fendlemark adapters list
$ fendlemark adapters check [name...] [--timeout 10s] [--json]
$ fendlemark adapters describe <name>

fendlemark lattice

$ fendlemark lattice inspect [--kind run] [--key argo.workflow.name=train-abc12] [--json]
$ fendlemark lattice explain <entity-id>
$ fendlemark lattice stats

fendlemark auth

$ fendlemark auth enrol --user <email> [--role viewer|operator|keeper]
$ fendlemark auth list
$ fendlemark auth revoke --user <email>
$ fendlemark auth recovery --user <email> [--ttl 24h]

Manages Respiratory Identity enrolments. enrol prints a one-time link. recovery issues a time-limited session for a user who cannot currently match (illness, travel, a new office with worse air). Requires auth.mode: respiratory.

fendlemark doctor

$ fendlemark doctor [--fix] [--json]

Validates configuration, resolves environment references, checks every enabled adapter, probes the data directory, tests the listen address, and prints the effective configuration with secrets redacted. Every finding has a code, a sentence, and a suggested change. With --fix, applies the suggestions that are mechanical (renamed keys, deprecated values) and rewrites the file with a backup.

$ fendlemark doctor
fendlemark doctor 0.9.5

config    ok       ./fendlemark.yaml (6 keys set, 41 defaulted)
config    warn     DOC-104 adapters.mlflow.trackingUri is the pre-0.9 spelling; use tracking_uri (fixable)
listen    ok       127.0.0.1:7411 is available
data_dir  ok       ./.fendlemark (writable, 12 KiB)
mlflow    ok       41ms  12 experiments, 1,406 runs visible
argo      ok       88ms  2 namespaces, 37 workflows
auth      info     DOC-201 auth.mode is none; anyone who can reach server.listen can use the console

1 warning, 1 info. Run with --fix to apply 1 fix.

fendlemark version

$ fendlemark version [--json]
fendlemark 0.9.5 (go1.23.2, linux/amd64)
commit:  3e1f9c0
console: embedded, built 2026-09-30
adapters: mlflow argo metaflow kubeflow

Exit codes

CodeMeaning
0Success.
1Usage or configuration error.
2At least one adapter degraded (adapters check, doctor).
3At least one adapter unreachable.
4Authentication subsystem error.
7Reserved. Has never been returned. The Keepers decline to say what it is for.

Environment variables

VariablePurpose
FENDLEMARK_CONFIGSame as --config.
FENDLEMARK_<SECTION>__<KEY>Override any configuration key. See precedence.
MLFLOW_TRACKING_USERNAME, MLFLOW_TRACKING_PASSWORD, MLFLOW_TRACKING_TOKENRead by the mlflow adapter, matching the MLflow client's conventions.
ARGO_TOKENBearer token for Argo Server, if not using a kubeconfig context.
KUBECONFIGStandard. Used by argo (kube_watch) and kubeflow (Katib, Notebooks).
NO_COLORStandard.