Process Orchestrator

Wire equipment into MES transactions, without writing code

The automation layer connecting what the equipment reports to what the MES needs to do and record. Flows are built by connecting nodes on a canvas, run per plant zone, and never reach production without a deliberate deployment.

What Process Orchestrator covers

  • High availability from the start Flows run on redundant pods with automatic failover across zones, so automation keeps running when one node has a problem.
  • Visual, low-code flow builder Build automation on a drag-and-drop canvas using 50+ node types and native MES actions, with no code required for common needs.
  • Event-driven triggers Flows can run manually, on a schedule, when a data value changes, or as a before/after hook inside a Specification, following how your production actually runs.
  • Extend with the TypeScript Plugin SDK For more specific needs, build custom nodes in TypeScript via @vechr/orchestrator-sdk without modifying the core system. Claude AI-powered plugins can also be used to extend what a flow can do.
  • Zero-downtime plugin updates Plugin updates can be distributed across every pod without stopping flows in progress. Executions already under way finish on the old version, while new executions use the latest.
  • Structured, localized configuration Every node has a typed, translatable configuration form rather than raw JSON, with special protection for sensitive fields such as passwords.
  • Safe deployment control Every flow passes through Draft, Validate, Simulate, and Deploy, so a flow never runs in production merely because a configuration changed.
  • Built-in observability and tracing Watch the health of each zone, execution metrics, and detailed step traces, so a flow can be understood and debugged without guessing at what happened.

Nothing reaches production by accident

A flow does not start running just because it has been finished. Every flow passes through four stages, and deployment to production is always a deliberate act.

StageWhat it means
DraftThe flow is still editable and is not running in any environment. This is the starting state for every new flow.
ValidateThe flow's structure is checked for problems before it is run.
SimulateThe flow runs against sample input to check every step without touching production data.
DeployA deliberate deployment. Only at this stage does the flow start running against the production process.

Plugin updates are distributed across every pod without stopping executions in progress. Runs already under way finish on the previous version.

The Process Orchestrator canvas with nodes wiring equipment events to MES actions

Run per zone, not just per plant

  • Execution scoped per zone Flows run in a defined zone, so automation can sit close to the process that needs it, including in large plants and multi-site environments.
  • Automatic failover Flows run on redundant pods and can fail over when one node has a problem, targeting a failover of around 30 seconds.
  • Drafted by AI, confirmed by a person Describe the automation in plain language and the AI assistant can draft a flow by wiring up the nodes it needs. A person still reviews it before the flow is deployed.
  • Observable down to every step Zone health, execution metrics, and step-by-step traces are available to help find problems without inferring them from the end result.

Frequently Asked Questions

What automation teams usually ask before trusting a production process to a flow.

Can an unfinished flow affect production?

No. A flow only runs after a deliberate deployment, and it passes validation and simulation first. Setting a status to Active on its own does not make a flow run in production.

Do we need a developer to build a flow?

For normal needs, no. Flows can be built on a drag-and-drop canvas with 50+ node types and native MES actions. Where you need specific behaviour, the TypeScript Plugin SDK allows custom nodes without modifying the core system.

What happens to a running flow when a plugin is updated?

Executions already running finish on the previous plugin version. New executions use the latest one, so an update needs no downtime and no process switches version mid-execution.

Keep reading