greentic-start
greentic-start is the lifecycle runner for Greentic demo/app-pack execution.
It exposes lifecycle orchestration as a library (greentic_start::run_from_env) and a thin CLI binary.
Ownership
greentic-startowns lifecycle execution (start/up/stop/restart).greentic-operator(including Wizard) owns UX and planning, then delegates lifecycle execution togreentic-start.- Details:
docs/ownership.md.
CLI Surface
Primary commands:
greentic-start startgreentic-start restartgreentic-start stop
Primary runtime inputs:
--config <path>to point at the demo config--tenant <name>--team <name>--nats,--cloudflared,--ngrok--log-dir,--verbose,--quiet
Startup Contract
greentic-start performs startup-time launch gating for bundles that declare
greentic.static-routes.v1.
- Bundles with no static routes behave as before.
- Bundles with static routes fail before service boot if launch mode cannot
expose public HTTP, cannot support hosted assets, or cannot resolve
PUBLIC_BASE_URL. - Resolved startup values are passed forward through child-process env vars and
persisted runtime metadata (
startup_contract.json).
Extension pack roles
- Core platform packs: runtime-critical packs such as messaging, events, oauth, telemetry, secrets, and state integrations.
- Optional extension packs: packs exposing hooks, contracts, capabilities, subscriptions, or other feature extensions for app packs/components.
greentic-start now classifies these roles explicitly so lifecycle boot can reason about platform services separately from optional extensions.
i18n
- Source catalog:
i18n/en.json. - Translator helper:
tools/i18n.sh(defaults toLANGS=all,BATCH_SIZE=200).
CI and Releases
Local validation:
Release flow:
- Bump
versioninCargo.toml. - Create and push tag
vX.Y.Z(must matchCargo.toml). - Push tag to trigger
.github/workflows/publish.yml.
Required secrets:
CARGO_REGISTRY_TOKENfor crates.io publish.
Security
See SECURITY.md for vulnerability reporting and supported version policy.