---
url: >-
  https://adk.nht.io/api/@nhtio/adk/batteries/orchestration/variables/createOrchestration.md
description: >-
  THE battery's single entry point. Everything public is reached through the
  [`Orchestration`](https://adk.nht.io/api/@nhtio/adk/batteries/orchestration/types/interfaces/Orchestration) object it returns, so it is the one place a precondition
  can be enforced for every operation.
---

# Variable: createOrchestration

```ts
const createOrchestration: CreateOrchestration;
```

Defined in: [src/batteries/orchestration/index.ts:388](https://github.com/NHTIO/ADK/blob/v1.20260906.0/src/src/batteries/orchestration/index.ts#L388)

THE battery's single entry point. Everything public is reached through the
[Orchestration](../types/interfaces/Orchestration.md) object it returns, so it is the one place a precondition can be enforced
for every operation.

Construction is async because it eagerly resolves the `@nhtio/encoder` optional peer (throwing
[E\_ORCH\_ENCODER\_REQUIRED](E_ORCH_ENCODER_REQUIRED.md) if absent), registers the orchestration encodables once, loads
every configured evaluator cell (so a missing optional peer surfaces here rather than at
freeze), and validates every registered template (so a misconfigured deployment fails at boot
with a named error rather than at first instantiation).

**You do not need to call `registerOrchestrationEncodables()` yourself if you construct through
this function** — it runs here, before any plan can exist, so `decode()` can rebuild `NodeRef`
and `ParamRef` from that moment on. Call it directly only when you reach the deep subpaths
WITHOUT constructing an `Orchestration`: decoding a persisted plan in a worker that never builds
one, for instance. It is idempotent, so calling it anyway is harmless.

See the module doc for the full rationale and the dependency-precedence rules.

## Param

**config**

The store, tier-C allowlist, optional run-dependency defaults, and optional
consumer-defined plan templates.

## Returns

The assembled [Orchestration](../types/interfaces/Orchestration.md) surface.

## Throws

if `@nhtio/encoder` is not installed.

## Throws

if a configured evaluator cell's optional peer is missing.

## Throws

if a registered template has a blocking validation issue.
