Skip to the content.

Deployment Assembly Guide

core/deploy assembles one deployment document into shared resources and runnable agents. It knows only the resource protocol; concrete kinds are registered by the application.

Document

version: v1

resources:
  events:
    kind: event.Bus
    impl: memory

  provider:
    kind: inference.Provider
    impl: deepseek
    settings:
      id: deepseek
      profiles:
        - secrets:
            api_key: ${env:DEEPSEEK_API_KEY}

  infer:
    kind: inference.Assembly
    impl: unified
    deps:
      provider: provider

agents:
  assistant:
    card:
      name: Assistant
    engine:
      kind: agent.Engine
      impl: graph
      deps:
        inference: infer
      settings:
        graph: {file: ./graphs/assistant.yaml}

runtime:
  event_bus: events
  sessions:
    idle_timeout: 10m

Top-level fields:

Resource entries

<name>:
  kind: event.Bus
  impl: memory
  deps: {bus: other}
  settings: {literal: object}

settings may be inline content or a whole-subtree {"file": ...} / {"embed": ...} reference. deps bind declared dependency names to resource refs. A ref is either resource or resource/item.

Build and wire

Builder.Build constructs resources in dependency order. Builder.Wire then:

  1. wires resource.Wireable values;
  2. builds agent engines and hooks;
  3. binds resource.DeploymentBinder values with the completed deployment.

Use Builder.Deploy for the convenience of both phases.

reg := resource.NewRegistry()
reg.MustRegister(event.NewFactory())
reg.MustRegister(inference.Factory{})
reg.MustRegister(graphresource.Factory{})

builder := deploy.NewBuilder(reg)
result, err := builder.Deploy(ctx, doc)
if err != nil {
    return err
}
defer result.Close()

Result.Close closes every built resource value in reverse construction order, then closes each bound agent (engine and lifecycle hooks). Agents can also be assembled individually at runtime via the exported deploy.BindAgent — the same path core/runtime uses for its live agent registry (see runtime.md).

Layered configuration

deploy.LoadLayers loads multiple Layer values, merges them in ascending priority order, and returns provenance. The first layer must be complete; later layers may be partial. Runtime settings, resource settings, and agent policy are merged.

See resource.md for the factory protocol.