CLI reference
The genedata command-line tool: auth, runs, models, deployments.
Two CLI surfaces talk to GeneFlow:
| CLI | Source | Purpose |
|---|---|---|
gfctl | packages/geneflow-python/geneflow/cli.py | GeneFlow-focused; ships with the SDK |
genedata | apps/genedata-cli/ | Whole-platform CLI (auth, datamarts, GeneFlow, ETL) |
This page covers gfctl. For genedata, see the standalone CLI README.
Setup
pip install geneflow
export GENEFLOW_TRACKING_URI=https://api.genedata.io
export GENEDATA_PAT=$(genedata auth token)
export GENEFLOW_TENANT_ID=ACME
Experiments + runs
gfctl experiments list
gfctl experiments create fraud_v3 --description "XGBoost v3 baseline"
gfctl runs list --experiment fraud_v3 --status FINISHED
gfctl runs show run_abc123
gfctl runs cost run_abc123 # $ + tokens + duration
gfctl runs metrics run_abc123 --metric auc # full step series
Model registry
gfctl models list
gfctl models show fraud-detector
gfctl models versions fraud-detector
# Promote v3 → Staging
gfctl models transition fraud-detector 3 Staging --reason "passed eval"
# Compare two versions ($ + metric diffs)
gfctl models compare fraud-detector --a 2 --b 3
Serving
# Deploy
gfctl endpoints create fraud-prod \
--model fraud-detector --version 3 \
--instance cpu-large \
--min-replicas 2 --max-replicas 10
# List + status
gfctl endpoints list
gfctl endpoints show fraud-prod
gfctl endpoints metrics fraud-prod --window 60 # last 60 min
# Rolling update
gfctl endpoints update fraud-prod --version 4 --reason "precision win"
gfctl endpoints update fraud-prod --replicas 5
# Drift
gfctl drift baselines fraud-detector --version 3 # show
gfctl drift check fraud-prod --window 60 # force PSI run
gfctl drift alerts fraud-prod --open # open alerts only
gfctl drift ack 4271 # acknowledge
# Tear down
gfctl endpoints delete fraud-prod
Prompts
gfctl prompts list
gfctl prompts show customer_support
gfctl prompts versions customer_support
gfctl prompts register customer_support --from prompt.md
gfctl prompts transition customer_support 2 Staging --reason "v2 deploy"
gfctl prompts search "polite to angry users" --k 5
Eval
gfctl eval-sets create support-v1 --from eval.json
gfctl eval-sets list
gfctl eval-runs start --set support-v1 --prompt customer_support --version 2 \
--judge llm_as_judge
gfctl eval-runs show run_eval_xyz
Lineage
gfctl lineage upstream run_abc123 --kind feature_group --id user_features_v2
gfctl lineage upstream run_abc123 --kind dataset --id s3://bucket/train.parquet
gfctl lineage downstream --kind feature_group --id user_features_v2
MLflow Projects
gfctl projects run git@github.com:org/repo \
--entry-point train --param alpha=0.1 \
--backend kubernetes --experiment fraud_v3
MLflow import
# Dry run — count entities, don't write
gfctl import-mlflow \
--source https://mlflow.example.com \
--token "$OLD_MLFLOW_TOKEN" \
--prefix "mlflow:" \
--dry-run
# Real import
gfctl import-mlflow \
--source https://mlflow.example.com \
--token "$OLD_MLFLOW_TOKEN" \
--prefix "mlflow:"
# Watch progress
gfctl import-mlflow status imp_xyz
Output formats
All list / show commands support --format:
gfctl endpoints list --format json | jq '.[] | select(.status=="READY")'
gfctl endpoints list --format yaml
gfctl endpoints list --format table # default
Exit codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Operation failed (4xx/5xx) |
| 2 | Bad invocation (missing flags / env) |
| 3 | Connection error |
| 4 | Auth error (PAT invalid or scoped wrong) |