ntro workflow create --path does runbook deploy and workflow binding in a single move:
- Deploy — uploads the runbook bundle (workflow.py, activities.py, models.py, skill.md + frontmatter) to the worker. The worker registers the workflow type with Temporal.
- Bind — creates a workflow row that points at the deployed
runbookSlugand the entity it should run for, optionally on a schedule.
ntro_workflow_create from the chat.
Prerequisites
- An entity bound to a tenant (Configure environment).
- Local tests passing for the runbook (
ntro workflow test). - A runbook bundle at
./runbooks/<slug>/containingrunbook.md(with frontmatter) andtemplates/.
Deploy + bind
- CLI
- From a coding agent (CLI shell-out)
- MCP (coding agent)
--entity is set) creates a workflow row. Per N-80, the workflow is anchored to the runbook’s slug — the same runbook can back many workflows across tenants and entities.The runbook bundle contract
A runbook directory must contain:runbook.md— YAML frontmatter (slug, version, config schema) + the LLM-facing skill body.templates/workflow.py—@runbook.defnclass subclassingNtroWorkflow.templates/activities.py—@activity.defnfunctions for the deterministic side effects.templates/models.py— Pydantic models for activity inputs / returns.- Optionally a
templates/requirements.txtto pin any additional pip packages the runbook needs.
Versioning and rollback
Runbook versions are read fromrunbook.md frontmatter at deploy time. Each ntro workflow create --path call uploads a fresh version under /workflows/<slug>/<version>/ on the worker — older versions stay on disk.
The workflow row carries an optional runbookVersion:
- Unpinned (default) —
runbookVersion: null. Each task dispatches to whichever version is currently latest on the worker. New deploys take effect for new tasks immediately. - Pinned (
--pin) —runbookVersion: "0.1.0". Tasks dispatch only to that exact version; newer deploys don’t affect this workflow until you re-pin.
Triggering a run after deploy
ntro workflow create makes a workflow available. To execute it, trigger a run:
workflow run returns a task ID. Use ntro run status to follow it, or watch in the Tenant UI.
A coding agent can do the same via the ntro_workflow_run MCP tool.
A typical first deploy
Test locally
ntro workflow test ./runbooks/nav-monthly --child ... --child ... — confirm HAPPY and REJECT_ALL both pass.Deploy + bind
ntro workflow create --path ./runbooks/nav-monthly/ --tenant <staging-tenant> --entity <test-entity> --schedule "0 8 5 * *" --pin. Note the workflow id returned.Trigger a smoke run
ntro workflow run nav-monthly --tenant <staging-tenant> --entity <test-entity> --period 2026-03 --wait. The --wait flag polls until the run completes.What’s deferred
Two pieces of the Notion plan’s “Deploy & Run” section are not in this version of the docs:- Observer & diagnostics — the in-flight monitoring and exception handling that watches running workflows for anomalies. The system exists; the docs are still being written.
- Private infrastructure — guidance on deploying Ntropii Tenant on your own AKS / Vercel / etc. for data sovereignty.
Related
Testing locally
Catch regressions before they ship.
Build runbooks
Concept walkthrough for authoring a runbook.
Register agents
Bring an external agent (Claude Managed, Copilot) into a runbook step.
Run inspection
ntro run status and friends — track what’s running and what’s pending.