agenthub · input.chat
Where a conversation enters the graph. It takes whatever the channel handed the run and turns it into the three shapes the rest of the canvas expects.
Why the node earns its place
Every chat or voice agent starts here, and it exists because the thing that starts a run is not shaped like a conversation. A WhatsApp webhook, a test run from the builder and an SDK call all deliver the message differently — flattened under a node id, nested under inputs, or as a bare string.
This node absorbs that. Downstream nodes never learn there was more than one convention, which is why the same graph runs unchanged whether it was triggered by a person messaging on WhatsApp or by you pressing Test Run.
How it works at run time
text key, or a bare string.text is used as the message object directly.text "is my renewal due?" // simple pipelines
message {role: "user", content: …} // structured workflows
messages [{role: "user", …}] // straight into an LLMWhat you wire
Nothing to wire in.
Configuration
| Key | Type | Default & options | What it does |
|---|---|---|---|
| label | string | default "User Message" | — |
What usually goes wrong
Watch for this
When nothing resolves, text is an empty string and messages is an empty array — not an error. An empty array reaching a model is rejected by the provider, so if a Test Run fails with an invalid-messages complaint, the fault is almost always here rather than at the LLM.
Behaviour & provenance