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:
versionis required.resourcesis a map of named resource entries.agentsis a map of agent definitions.runtimeis opaque todeploy;core/runtimedecodes it strictly.
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:
- wires
resource.Wireablevalues; - builds agent engines and hooks;
- binds
resource.DeploymentBindervalues 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.