greentic-dev is a passthrough wrapper over upstream CLIs, plus a launcher wizard.
When invoked as greentic-dev-dev, delegated commands resolve to development binaries. For example, greentic-dev-dev pack ... runs greentic-pack-dev, while greentic-dev pack ... runs greentic-pack.
flow ...delegates directly togreentic-flow(including--help).
component ...delegates directly togreentic-component(including--help).
pack ...delegates togreentic-pack.pack run ...delegates togreentic-runner-cli.
gui ...delegates togreentic-gui.secrets ...wrapsgreentic-secretsconvenience flows.mcp doctor ...uses the built-in MCP provider metadata inspector.mcp --compose ...delegates togreentic-mcp compose ....- other non-
doctormcpinvocations delegate directly togreentic-mcp.
cbor <file>.cbordecodes a CBOR payload and prints pretty JSON.
greentic-dev coveragegreentic-dev coverage --skip-run
Behavior:
- ensures
cargo-llvm-covandcargo-nextestare installed when the run is not skipped - ensures
llvm-tools-previewis available throughrustup - creates
target/coveragewhen missing - fails with Codex-oriented instructions if
coverage-policy.jsonis missing - writes the report to
target/coverage/coverage.json - validates the report against the global floor, per-file defaults, exclusions, and overrides in
coverage-policy.json - exits non-zero when setup fails, the coverage run fails, or the policy is violated
--skip-runreuses an existingtarget/coverage/coverage.jsonfile and only evaluates policy compliance
greentic-dev installgreentic-dev install --tenant <TENANT> --token <TOKEN-or-env:VAR>greentic-dev install --tenant <TENANT> --token <TOKEN-or-env:VAR> --bin-dir <DIR>greentic-dev install --tenant <TENANT> --token <TOKEN-or-env:VAR> --docs-dir <DIR>greentic-dev install --tenant <TENANT> --locale <BCP47>greentic-dev install tools
Behavior:
- bare
installprints guidance for bootstrap, customer-approved, and tenant install paths install toolsinstalls development/bootstrap tools from the canonical Greentic tool catalogueinstall tools --latestforce-refreshes development/bootstrap tools- when
--tenantis present, the command prompts for a hidden token if--tokenis omitted in an interactive terminal - when
--tenantis present in a non-interactive context,--tokenis required - when
--tenantis present,greentic-devmay bootstrap public Greentic tools first - when a tenant token is available, the command also installs tenant-authorized binaries and docs
--localeselects translated manifest/doc values when available; exact locale is preferred, then language-only fallback (nl-NL->nl)- customer-approved pinned toolchain releases are installed with
gtc install
Commercial install contract:
- tenant manifests are first resolved from the
greentic-biz/customers-toolsGitHub release taggedlatest, using the asset<tenant>.json - if no matching GitHub release asset is available, tenant manifests fall back to
oci://ghcr.io/greentic-biz/customers-tools/<tenant>:latest - tenant manifests may include expanded tool/doc entries or GitHub-hosted manifest references
- tenant manifests may also use the simple OCI payload shape:
- tools:
{ id, targets } - docs:
{ url, file_name }
- tools:
- commercial binaries and docs must come from GitHub-hosted URLs
- supported target
osvalues arelinux,macos, andwindows - supported target
archvalues arex86_64andaarch64 - Linux/macOS archives are expected as
.tar.gz; Windows archives are expected as.zip .tgzis also accepted for gzip-compressed tarballs
Schema contract:
- tenant manifests should include
$schemapointing totenant-tools.schema.json - tool manifests should include
$schemapointing totool.schema.json - doc manifests should include
$schemapointing todoc.schema.json schema_versionis currently"1"greentic-devcurrently consumes these schema-decorated manifests but does not perform JSON Schema validation before install- tool/doc manifests may include
i18nmaps keyed by locale such asnlornl-NL
Doc manifest notes:
- docs use
source.type = "download" - docs include
download_file_nameas part of the manifest contract - docs use
default_relative_pathfor the installed path under the docs root default_relative_pathmust remain within the docs directory; path traversal is rejected- localized doc entries may override
title,source.url,download_file_name, anddefault_relative_path - simple doc entries use
file_name, which installs directly under the docs root
Default install locations:
- binaries:
$CARGO_HOME/binor~/.cargo/bin - docs:
~/.greentic/install/docs - state:
~/.greentic/install/state.json
greentic-dev release generate --release 1.0.5 --from latestgreentic-dev release generate --release 1.0.5 --token env:GHCR_TOKENgreentic-dev release publish --release 1.0.5 --from latestgreentic-dev release publish --manifest dist/toolchains/gtc-1.0.5.json --tag stablegreentic-dev release publish --release 1.0.5 --from latest --tag rcgreentic-dev release publish --release 1.0.5 --from latest --forcegreentic-dev release view --release 1.0.5greentic-dev release view --tag stablegreentic-dev release latest --token env:GHCR_TOKEN --forcegreentic-dev release promote --release 1.0.5 --tag stable
Behavior:
release generatecreates a pinneddist/toolchains/gtc-<release>.jsonmanifest from the canonical Greentic tool catalogue- generated filenames include the source channel:
--from stablewritesgtc-<release>.json,--from devwritesgtc-dev-<release>.json, and other channels writegtc-<channel>-<release>.json --from devalso writes development binary names in the generated manifest, such asgreentic-flow-devandgreentic-component-dev--fromresolves a source manifest/tag for metadata or version constraints; the package/bin list still comes from the canonical catalogue- if the source manifest does not exist yet,
release generatebootstraps it at<repo>:<from>when GHCR credentials are available release generate --dry-runshows the generated release manifest and reports the bootstrap it would perform without pushingrelease publishgenerates the pinned manifest and pushes it asghcr.io/greenticai/greentic-versions/gtc:<release>release publish --manifest <FILE>publishes that local manifest asgtc:<manifest.version>without regenerating itrelease publish --manifest <FILE> --release <release>publishes the local manifest under the explicit release and uses that value in the pushed manifest- publishing an existing release tag fails unless
--forceis set release publish --tag <tag>also moves that tag to the published release manifestrelease view --release <release>orrelease view --tag <tag>downloads the selected manifest and prints it as pretty JSONrelease latestpublishesgtc:latestwith every catalogue package using*-devbins and"version": "latest"release promote --release <release> --tag <tag>moves a tag to an existing release without regenerating the manifest--token <TOKEN>and--token env:<VAR>authenticate GHCR operations; when omitted, release commands useGHCR_TOKEN, thenGITHUB_TOKEN- rollback is represented by promoting an older release to the desired tag
- tag names are not restricted; examples include
stable,rc,demo, and customer-specific channel names - release commands do not install local tools
OCI contract:
- toolchain manifests are pushed as OCI artifacts with one JSON layer
- layer media type:
application/vnd.greentic.toolchain.manifest.v1+json - default repository:
ghcr.io/greenticai/greentic-versions/gtc
greentic-dev wizardgreentic-dev wizard --dry-rungreentic-dev wizard --answers <FILE>greentic-dev wizard --answers <FILE> --dry-rungreentic-dev wizard validate --answers <FILE>greentic-dev wizard apply --answers <FILE>
Behavior:
wizardis interactive and prompts for launcher action:- pack path -> delegates to
greentic-pack wizard - bundle path -> delegates to
greentic-bundle wizard
- pack path -> delegates to
wizard --answers <FILE>loads a launcherAnswerDocumentand executes it directly.wizard --answers <FILE>also accepts directgreentic-bundle/greentic-packAnswerDocuments and wraps them into launcher delegation automatically.- If the launcher answers include
answers.delegate_answer_document, the delegated wizard is replayed via its ownwizard apply --answers <FILE>path instead of opening an inner interactive menu. --dry-runbuilds/renders plan without delegated execution.wizard --answers <FILE> --dry-runbuilds plan fromAnswerDocumentwithout delegated execution.validatebuilds plan fromAnswerDocumentwithout delegated execution.applybuilds and executes delegation fromAnswerDocument.--emit-answers <FILE>during interactive execution is captured through a delegated answers file and then written back as a launcher AnswerDocument envelope.--emit-answers <FILE>during dry-run / validate writes the launcher AnswerDocument locally because no delegated wizard executes.wizard runandwizard replayare removed.
Launcher AnswerDocument identity is strict:
wizard_id:greentic-dev.wizard.launcher.mainschema_id:greentic-dev.launcher.main
Other non-launcher IDs are rejected by validate / apply.
- Missing delegated tools are not auto-installed during passthrough commands. Use
greentic-dev install toolsto bootstrap development tools from the canonical catalogue, or--latestto force-refresh. - Environment overrides:
GREENTIC_DEV_BIN_GREENTIC_FLOWGREENTIC_DEV_BIN_GREENTIC_COMPONENTGREENTIC_DEV_BIN_GREENTIC_PACKGREENTIC_DEV_BIN_GREENTIC_RUNNER_CLIGREENTIC_DEV_BIN_GREENTIC_GUIGREENTIC_DEV_BIN_GREENTIC_SECRETSGREENTIC_DEV_BIN_GREENTIC_MCP