ottom8
Develop

Data types

The handle types that determine which components can connect.

Every input and output handle on a component carries a type. The canvas uses it to decide which connections are valid, and a custom component's inputs/outputs declare it explicitly.

The core types

  • Message — a chat message: text plus metadata like sender and session ID. What flows between Chat Input, a model, and Chat Output.
  • Data — a generic key/value record. The catch-all type for anything that isn't specifically a chat message.
  • DataFrame — a table: rows of records with shared columns, for anything that's naturally tabular (query results, parsed CSV rows, batch LLM output).

Type names in the UI vs. in code

Internally, Data is implemented as a class called JSON, and DataFrame is implemented as a class called Table — you may see those names surface in a type mismatch error. They're the same types described above; the component library just uses the shorter names consistently in the UI.

Role types

A smaller set of types exist specifically to wire capabilities into other components, rather than to carry data:

  • LanguageModel — connects a model component into something that uses it, like an Agent.
  • Tool — connects a tool component into an Agent's Tools input.

Converting between types

The Type Convert component (Processing) converts between Message, Data, and DataFrame explicitly, for the cases where two components you want to connect don't already share a type.

On this page