Tags have always been how you slice cost in GENI Workflows: label a submission
client=acme, and its compute shows up under that client. The problem was that the label had
to be applied to every single submission. Miss one, and its cost silently falls outside your
report.
From today, tags attach to the workflow as well. Every submission of every version of that workflow inherits them.
Tag at registration
geni workflow create \ --workflow-name wgs-germline --workflow-version v2.1.0 \ --file wgs-germline.zip \ --tag client=acme --tag project=dnabrEvery run of wgs-germline from now on carries client=acme and project=dnabr, whether it
was submitted from the CLI, from CI, or by someone who has never heard of your billing setup.
Change them later
geni workflow update wgs-germline \ --edit-tag client=acme \ --add-tag stage=prod \ --remove-tag projectTags live on the workflow, not the version, so this applies to v1.0.0 and v2.1.0 alike.
Filter by them
geni workflow list --tag client=acme --show-tag stageRepeating --tag narrows the result to workflows carrying all the given tags.
--show-tag adds a tag as a column.
Three rules worth knowing
A submission tag wins. If a submission passes --tag client=other, that value overrides
the workflow’s client for that run. Inheritance is a default, not a lock.
Keys must be registered first. As with submission tags, the key has to exist in the tag
registry, which only an administrator can add to. An unregistered key fails the request with
422.
geni tag create clientRe-uploading a version never clears tags. Only the keys you supply are upserted; anything
you do not mention is left alone. That means pushing v2.2.0 of a workflow does not wipe the
labels you set six months ago. To actually remove one, use geni workflow update --remove-tag, or PATCH /workflows/:name on the API.
Why this matters
The reason to care is cost attribution. Cost data comes from the AWS Cost and Usage Report and the GCP FOCUS billing export — actual billed cost, not an estimate. But a per-client total is only as trustworthy as the tagging behind it, and per-submission tagging depends on every person and every script remembering.
Attaching the label to the workflow moves that decision to the place where it is actually known: when you register the pipeline, you already know which client it belongs to.
Getting it
Requires CLI geni-bioinfo@0.1.34 or later.
npm install -g geni-bioinfoFull details in the tagging guide.