Rensei docs
Nodes

Foundational Nodes

11 config-source nodes: agent, llm-model, kit, and others.

Foundational nodes are configuration-source nodes: they produce typed reference objects that wire into agent.invoke or agent.dispatch as input ports, but they have no runtime side effects of their own. Every foundational node except wait is a pure configuration emitter - it resolves a reference at publish time and passes it downstream.

Think of them as named, typed configuration slots. Separating configuration from execution lets you:

  • Reuse the same agent definition or model profile across multiple dispatch nodes
  • Swap a model or credential in one place and have every downstream node pick up the change
  • Build platform templates that users customize by replacing foundational nodes without editing action node configs

Composition pattern

Foundational nodes work in two ways:

Fan-in via the agent composer node (recommended for SDLC-style templates):

[agent-definition] ──┐
[llm-model]         ─┤
[kit-provider]      ─┤→ [agent] ──→ [agent.invoke: composition port]
[credential-provider]─┤
[capacity-pool]     ─┘
[capability.memory] ─/

Direct slot wiring (for one-off or override patterns):

[agent-definition] ──→ [agent.invoke: definition port]
[llm-model]         ──→ [agent.invoke: model port]

agent

The Agent Composer node. Fan-ins up to seven foundational ref inputs and emits a single composed AgentDispatchRef on its output port. Wire this to the composition port of agent.invoke or agent.dispatch.

Input ports

PortTypeRequiredDescription
triggerobjectnoTrigger envelope - passes trigger data into the dispatch context
definitionAgentDefinitionRefyesFrom an agent-definition node
modelModelRefyesFrom an llm-model node
kitsKitRef[]noFrom one or more kit-provider nodes (multi-edge fan-in)
credentialsCredentialRef[]noFrom one or more credential-provider nodes
capacityPoolCapacityPoolRefyesFrom a capacity-pool node
capabilitiesCapabilityRef[]noFrom capability.* nodes (multi-edge fan-in)

Output port - output (AgentDispatchRef): the fully composed dispatch reference.


agent-definition

Points at an agent_cards row and optionally applies inline overrides. Emits an AgentDefinitionRef for wiring into the agent composer or directly to agent.invoke's definition port.

Config

FieldTypeRequiredDescription
cardIdstring (UUID)yesThe agent card to use. Resolved at dispatch time using the x-resource-kind: agent-profile picker.
overrides.skillsstring[]noReplacement or additive skill IDs merged with the card baseline
overrides.partialsstring[]noReplacement or additive partial refs merged with the card baseline

Output port - output (AgentDefinitionRef): { cardId, overrides? }


llm-model

Selects a model profile from the org catalog and optionally overrides per-call parameters. Emits a ModelRef.

Config

FieldTypeRequiredDescription
providerstringyesclaude (Anthropic), codex (OpenAI), or gemini (Google)
modelstringyesCatalog model ID (e.g. claude-opus-4-8, gpt-5.4, gemini-2.5-pro)
config.max_tokensnumbernoOverride max output tokens (1-200,000)
config.temperaturenumbernoOverride sampling temperature (0.0-2.0)
config.top_pnumbernoOverride nucleus sampling probability (0.0-1.0)
config.stop_sequencesstring[]noOverride stop sequences

Output port - model (ModelRef)


kit-provider

Selects one or more donmai kits to attach to the agent. Emits a KitRef[]. Multiple kit-provider nodes can fan-in to the kits port of the agent composer - the executor concatenates them.

Config

FieldTypeRequiredDescription
kitsarrayyesOne or more kit selections
kits[].kitIdstringyesKit identifier (e.g. rensei-labs/pm-kit@1.0.0). Uses x-resource-kind: toolkit picker.
kits[].versionstringyesPinned version. Use "latest" to track the installed version.

Output port - kits (KitRef[])


credential-provider

Points at a credential stored in the org's credential vault. Emits a CredentialRef that the dispatcher resolves to env vars at dispatch time. Multiple credential-provider nodes can fan-in to the credentials port of the agent composer.

Config - credential picker (uses x-resource-kind: credential); select from connected org credentials.

Output port - output (CredentialRef)


capacity-pool

Points at an execution provider pool (the configuration that determines which sandbox the agent runs in). Required input for the agent composer and for agent.invoke's capacityPool slot.

Config - pool picker (uses x-resource-kind: capacity-pool); select from configured pools.

Output port - output (CapacityPoolRef)


sandbox-provider

Points at a specific sandbox provider (e2b, Vercel Sandbox, Docker, etc.) directly, bypassing the capacity pool routing layer. Use this when you need to pin a workflow to a specific sandbox type rather than letting the pool selector choose.

Config - sandbox provider picker.

Output port - output (SandboxRef)


Capability nodes

Capability nodes configure optional agent intelligence layers. Wire their outputs to the capabilities array port of the agent composer. Multiple capability nodes fan-in to build the full capability set for the agent dispatch.

capability.memory

Enables persistent memory for the agent. The agent can recall prior observations at session start and store durable facts as it works.

Config

FieldTypeRequiredDefaultDescription
scopestringyesprojectMemory scope: project (common case), org (tenant-wide), or session (hermetic)
namespacestringno-Optional logical namespace (e.g. "engineering")
usagePartialstringnoBuilt-in defaultPrompt guidance injected into the agent's system prompt

Output port - capability (MemoryCapabilityRef)


capability.a2a

Enables agent-to-agent (A2A) communication. The agent can discover and call other registered agents via the A2A registry.

Output port - capability (A2ACapabilityRef)


capability.architecture

Enables architectural intelligence. The agent gets access to the knowledge graph and can query architectural context, code structure, and decision provenance.

Output port - capability (ArchitectureCapabilityRef)


capability.code-intel

Coming soon - currently a no-op at dispatch. The node, its typed port, and config validation are shipped, but the platform code-intel subsystem (repository map, symbol search, duplicate detection, type-usage scans) does not exist yet. The dispatch resolver validates the ref shape and then returns a stub resolution; agent.invoke logs a warning for the stubbed capability. Wire it now and the agent gains nothing until the subsystem ships.

Declares code intelligence for the agent. Requires a repo (code-intel is repo-scoped) and accepts an optional ref commit/branch pin.

Output port - capability (CodeIntelCapabilityRef)


wait

Pauses the workflow until a resume condition is met. Unlike the gate node (which is human-driven), wait supports timer, webhook, and signal-based resumption. The wait node is foundational because it is side-effect-free - it does not call any provider; it only suspends and resumes the execution flow.

Resume modes

ModeConfig fieldsWhen it resumes
timeIntervalamount, unitAfter the specified duration elapses
specificTimeat (ISO 8601) or cronAt the specified wall-clock time or on next cron match
webhookwebhookUrl, secretWhen a POST is received at the callback URL
signaleventTypeWhen a CloudEvent matching eventType is received

Config

FieldTypeRequiredDescription
resumestringyesResume mode: timeInterval, specificTime, webhook, or signal
amountnumbernoFor timeInterval: how many units to wait
unitstringnoms, s, m, h, or d
atstringnoFor specificTime: ISO 8601 timestamp
cronstringnoFor specificTime: cron expression (used when at is absent)
webhookUrlstringnoFor webhook: auto-generated if omitted
secretstringnoFor webhook: HMAC secret for signature verification
eventTypestringnoFor signal: CloudEvent type to listen for
timeoutMsnumbernoOptional timeout in milliseconds (0 = no timeout)

Ports: trigger input (optional, passes upstream envelope through) → output (resume payload)

Example: SDLC agent composition

steps:
  - id: def
    type: action
    nodeId: agent-definition
    config:
      cardId: "{{ org.agentCards.devAgent }}"

  - id: model
    type: action
    nodeId: llm-model
    config:
      provider: claude
      model: claude-opus-4-8

  - id: pool
    type: action
    nodeId: capacity-pool
    config: {}  # uses x-resource-kind picker in UI

  - id: mem
    type: action
    nodeId: capability.memory
    config:
      scope: project

  - id: composed
    type: action
    nodeId: agent
    inputs:
      definition: "{{ nodes.def.output }}"
      model: "{{ nodes.model.model }}"
      capacityPool: "{{ nodes.pool.output }}"
      capabilities: ["{{ nodes.mem.capability }}"]

  - id: dispatch
    type: action
    nodeId: agent.invoke
    inputs:
      composition: "{{ nodes.composed.output }}"
      stageEvent: "{{ $trigger.data }}"

On this page