Skip to main content


Airy allows its users to process messaging data from a variety of sources, which are integrated via source providers. Users connect sources via channels. Once the channel is connected, Airy Core ingests source data and transforms them into conversations, contacts, and messages.

This document aims to provide a high-level overview of the Airy Core technical vocabulary. It provides definitions of the most important terms used both in the code and in the rest of the documentation.

Our Avro schemas provide a machine readable up-to-date version of our backend data model. If you are looking for details like null constraints and such, the Avro schemas folder is the right place. Furthermore, it is worth underlining that the Avro data model and glossary do not correspond exactly. The former is the exact machine representation of the data we store and the latter is a conceptual artifact we created to discuss and solve problems.


A component is a Helm Chart (a package of Kubernetes resources) that represents a functional unit in an Airy instance.


A channel represents a connection between a source and the Airy Core Platform.


A contact represents the source participant. A conversation exists only if it has at least one message from a contact.


Not the same as users. Contacts are source participants whereas users are the actual users interacting with the airy platform.


A conversation is the logical aggregation of messages (at least one) from exactly one contact.


A message wraps the data that is being transferred from and to the source with metadata. By definition, the data is source dependent. It can be plain text, or rich media like videos or sound, images, or templates.

  • id uuid

Unique message id for deduplication.

  • headers string map

    Optional headers:

    • postback.payload string postback payloads used for source automations
    • postback.referral string facebook specific referral identifier
  • fromContact boolean

Indicates whether the message was sent by a contact or not.

  • conversationId uuid

  • channelId uuid

  • content string Immutable string version of the ingested content.

  • offset long sequence number of message within a conversation

  • source string source that ingested the message facebook, google, sms_twilio etc.

  • deliveryState string

    One of:

    • pending message to be sent out
    • delivered message has been sent to source or has arrived at Airy
    • failed message sending has terminally failed
  • sentAt timestamp

  • updatedAt timestamp null for messages that are inserted first time


Header data contains information that is important for downstream processing and therefore cannot be separated from the message (as opposed to metadat). It also includes the message preview and tags that are useful for use cases like routing and automations.


Metadata is optional data attached to a subject such as a conversation, channel or a message. Have a look at this page for an in-depth explanation.


A tag is a special use case of metadata, which is used to tag conversations. As the use case of tagging conversations is so common, Airy Core provides specialized endpoints and filters for tagging conversations.


Large language model

A type of artificial intelligence model designed to understand and generate human-like text based on vast amounts of data. It's trained on diverse internet text to predict the next word in a sequence, enabling it to answer questions, generate content, and assist with various tasks. Airy allows a plug-able interface into different LLMs.

Vector database

A high-dimensional database store which is suitable for persistent storage for natural language processing or images. The data is represented as vectors and retrieval is based on similarity, allowing for efficient similarity searches and context creation. Vector databases are very convenient for storing vector representations of streaming data that can be queried and add context to questions that are sent to LLMs, in real time.


The ability of a an Airy component to react and simulate human-like conversations and automate specific tasks, in real time. It aims to provide users with immediate, consistent responses, reducing the need for human intervention in customer support, inquiries, and other conversational scenarios.


A source represents a system that generates messaging data that a user wants to process with Airy Core.


Source providers are API platforms that allow Airy Core to connect to one or more of their sources typically via a webhook. E.g. Twilio is a source provider for the Twilio SMS and WhatsApp sources.


Third party open-source packages that can be installed alongside Airy, in the same Kubernetes cluster, to provide a more robust and powerful application development environment. These Apps can vary from databases (ex. PostgreSQL or Redis) to LLM implementations and vector databases (ex. Llama2 or FAISS).


The whole Airy platform is based on Kafka and real-time streaming of messages. In the context of streams feature that Airy supports, a stream is the process of joining two or multiple Kafka topics, combining the data and creating an outout topic where the result of the streaming operation will be stored. It is based on KSQL.


A user represents one authorized agent in Airy Core, which is different from a Contact


Pre-defined messages that can be enhanced with user defined data.