This repository was archived by the owner on Mar 25, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Add new Agent IO instructions, tutorial/guide #265
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -29,6 +29,7 @@ graph TD | |
| A5[Agent] | ||
| A6[Slack] | ||
| A7[Discord] | ||
| A8[Telegram] | ||
| end | ||
|
|
||
| subgraph Destinations | ||
|
|
@@ -47,6 +48,7 @@ graph TD | |
| A5 --> Agent | ||
| A6 --> Agent | ||
| A7 --> Agent | ||
| A8 --> Agent | ||
|
|
||
| Agent --> B1 | ||
| Agent --> B2 | ||
|
|
@@ -84,7 +86,7 @@ async def run(request: AgentRequest, response: AgentResponse, context: AgentCont | |
| return response.text("ok") | ||
| `} /> | ||
|
|
||
| #### Agent Webhook Source | ||
| #### Webhook Source | ||
|
|
||
| To configure your agent to receive data from a webhook, you need to add a new webhook source. When receiving data from a webhook, the agent will send the data to the agent's inputs asynchronously without waiting for the agent to finish processing the data. | ||
|
|
||
|
|
@@ -114,7 +116,7 @@ To trigger a webhook using curl with a required Bearer token authentication, you | |
|
|
||
| The response from the webhook will contain an informational message if successful. Additionally, the `Location` header will contain the URL that can be used to read the agent output. This URL will block until the agent has started streaming the output response. | ||
|
|
||
| #### Agent API Source | ||
| #### API Source | ||
|
|
||
| To configure your agent to receive data as an API endpoint, you need to add a new API source. When receiving data from an API endpoint, the agent will send the data to the agent's inputs synchronously and wait for the agent to respond. | ||
|
|
||
|
|
@@ -144,7 +146,7 @@ To invoke an API using curl with a required Bearer token authentication, you can | |
| Make sure to use the correct agent ID in the webhook URL. | ||
| </Callout> | ||
|
|
||
| #### Agent Email Source | ||
| #### Email Source | ||
|
|
||
| For Email sources, you can configure your agent at a unique agent email address. When receiving an email, the agent will send the email content to the agent's inputs asynchronously without waiting for the agent to finish processing the email. | ||
|
|
||
|
|
@@ -156,7 +158,7 @@ For Email sources, you can configure your agent at a unique agent email address. | |
|
|
||
| The response from the API will contain an informational message if successful. Additionally, the `Location` header will contain the URL that can be used to read the agent output. This URL will block until the agent has started streaming the output response. | ||
|
|
||
| #### Agent Discord Source | ||
| #### Discord Source | ||
|
|
||
| For Discord sources, you can configure your agent to receive messages from a Discord server. When a user tags the bot in a Discord message, the agent will receive the message content asynchronously without waiting for the agent to finish processing the message. | ||
|
|
||
|
|
@@ -248,7 +250,40 @@ async def run(request: AgentRequest, response: AgentResponse, context: AgentCont | |
| Discord sources can only be triggered by messages where the bot is tagged in a Discord server. The bot cannot receive all messages in a channel for privacy reasons. | ||
| </Callout> | ||
|
|
||
| #### Agent SMS Source | ||
| {/* #### Slack Source | ||
|
|
||
| For Slack sources, you can configure your agent to receive messages from a Slack workspace. Users @mention your agent in Slack to trigger responses. By default, replies are sent as threads (configurable). | ||
|
|
||
| <ThemeImage baseName="agent-io-slack-source" alt="Agent New Slack Source" /> | ||
|
|
||
| To set up Slack Integration, you'll need to create a Slack App and configure OAuth: | ||
|
|
||
| 1. **Create a Slack App** in your Slack workspace | ||
| 2. **Configure OAuth** with the following credentials: | ||
| - App Name | ||
| - Client ID | ||
| - Client Secret | ||
| - Signing Secret | ||
| 3. **Set OAuth Redirect URL** to: `https://api.agentuity.com/io/slack/source/oauth/callback` | ||
| 4. **Configure Event Subscriptions** with the Request URL provided by Agentuity | ||
| 5. **Subscribe to Bot Events**: `message.channels`, `message.im`, `app_mention` | ||
|
|
||
| <Callout type="info"> | ||
| You must configure OAuth and Event Subscriptions in your Slack App settings for the integration to work properly. | ||
| </Callout> */} | ||
|
|
||
| #### Telegram Source | ||
|
|
||
| For Telegram sources, you can configure your agent to receive messages from Telegram users. Users can message your agent directly on Telegram. | ||
|
|
||
| <ThemeImage baseName="agent-io-telegram-source" alt="Agent New Telegram Source" /> | ||
|
|
||
| To configure a Telegram source: | ||
|
|
||
| 1. **Get a Bot Token** from @BotFather on Telegram | ||
| 2. **Enter the Bot Token** in the configuration | ||
|
|
||
| #### SMS Source | ||
|
|
||
| For SMS sources, you can connect your Twilio account to allow your agent to be triggered by incoming text messages. This requires providing your Twilio API credentials. | ||
|
|
||
|
|
@@ -261,7 +296,7 @@ To configure an SMS source, you will need the following credentials from your Tw | |
|
|
||
| Once validated, you can select one or more of your Twilio numbers to forward incoming messages to your agent. | ||
|
|
||
| #### Agent Schedule Source | ||
| #### Schedule Source | ||
|
|
||
| For running an agent on a schedule, you can configure your agent to use a cron source. When the agent is scheduled to run, the agent will send the data to the agent's inputs asynchronously without waiting for the agent to finish processing the data. | ||
|
|
||
|
|
@@ -277,6 +312,50 @@ A cron source can only be triggered internally by the Agentuity Platform and not | |
|
|
||
| <ThemeImage baseName="agent-io-cron-trigger" alt="Trigger Cron Manually" /> | ||
|
|
||
| #### Discord Destination | ||
|
|
||
| For Discord destinations, you can configure your agent to send messages to a Discord channel when triggered by external sources (webhooks, APIs, other agents, etc.). This is different from Discord sources which handle @mentions within Discord. | ||
|
|
||
| <ThemeImage baseName="agent-io-discord-destination" alt="Discord Destination Configuration" /> | ||
|
|
||
| To configure a Discord destination: | ||
|
|
||
| 1. **Select a Discord Server** from your connected servers | ||
| 2. **Choose a Channel** where messages will be sent | ||
| 3. **Invite the Bot** if not already in the server using the provided invite link | ||
|
|
||
| <Callout type="info"> | ||
| The bot must be invited to your Discord server before you can configure it as a destination. Use the invite link provided if you see "Bot not found in server" error. | ||
| </Callout> | ||
|
|
||
| #### Email Destination | ||
|
|
||
| For Email destinations, you can configure your agent to send emails when triggered. | ||
|
|
||
| By default, emails are sent from `[email protected]`: | ||
|
|
||
| <ThemeImage baseName="agent-io-email-destination" alt="Email Destination - Default Configuration" /> | ||
|
|
||
| When you also configure Email as a source (inbound), your agent gets a dedicated email address that can be used as well: | ||
|
|
||
| <ThemeImage baseName="agent-io-email-dest-inbound" alt="Email Destination with Inbound Email Configured" /> | ||
|
|
||
| All in all, there are three sender address options: | ||
|
|
||
| - **Default**: Sends from `[email protected]` | ||
| - **With Inbound Email**: Sends from your agent's address `[agent-id]@agentuity.run` | ||
| - **Custom Domain** (Enterprise): Use your organization's domain for outbound emails | ||
|
|
||
| Configuration requires: | ||
| - **Recipient Addresses**: List of email addresses to send to | ||
| - **Subject Line**: Email subject for outbound messages | ||
|
|
||
| > Note: Email subject and recipients can only be configured through the UI at this time. | ||
|
|
||
| <Callout type="info"> | ||
| **Enterprise Feature:** Organizations can configure custom email domains for outbound emails. This requires DNS configuration and is currently only available through Agentuity support. Contact us to set up custom email domains for your organization. | ||
| </Callout> | ||
|
|
||
| ### Agent Deployments | ||
|
|
||
| Agentuity supports continuous deployment using a native GitHub App integration and a GitHub Actions workflow. | ||
|
|
||
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,103 @@ | ||
| --- | ||
| title: Agent Input and Output | ||
| description: How to handle agent input and output | ||
| --- | ||
|
|
||
| ## Overview | ||
|
|
||
| Agent IO enables your agents to communicate with external platforms through two types of connections: Sources (inbound) and Destinations (outbound). Understanding the distinction between these connection types is essential for properly configuring your AI agents on the Agentuity platform. | ||
|
|
||
| ## Sources vs Destinations | ||
|
|
||
| ### Sources (Inbound Connections) | ||
|
|
||
| Sources enable bidirectional communication between a platform and your agent. When configured, the platform can trigger your agent and receive responses within the same conversation context. | ||
|
|
||
| **How Sources Work:** | ||
| 1. Platform triggers agent (e.g., @mention in Slack) | ||
| 2. Agent processes the request | ||
| 3. Agent responds directly within the same platform conversation | ||
|
|
||
| **Example:** When someone @mentions your agent in Discord, the agent can respond back in the same Discord channel. | ||
|
|
||
| ### Destinations (Outbound Connections) | ||
|
|
||
| Destinations allow your agent to send messages to a platform when triggered by *external sources*. These are one-way connections for delivering agent output to specified channels. | ||
|
|
||
| **How Destinations Work:** | ||
| 1. External source triggers agent (webhook, API, schedule, etc.) | ||
| 2. Agent processes the request | ||
| 3. Agent sends output to configured destination platforms | ||
|
|
||
| **Example:** Your GitHub repository triggers your agent on each commit, and the agent sends a formatted summary to your team's Discord channel. | ||
|
|
||
| ## Choosing Your Configuration | ||
|
|
||
| | Use Case | Configuration Needed | | ||
| |---------------------|---------------------| | ||
| | Chat bot that responds to @mentions | **Source only** | | ||
| | Send notifications when something happens | **Destination only** | | ||
| | Forward messages between platforms | **Source** for receiving, **Destination** for sending | | ||
| | Full assistant with chat and notifications | **Both** Source and Destination | | ||
|
|
||
| ### Sources Only | ||
| Perfect for conversational bots that respond to user questions, @mentions, or direct messages. | ||
|
|
||
| **Example:** Your team wants a Slack bot that answers questions about your documentation. You only need a Slack Source - users @mention the bot, and it replies in the thread. | ||
|
|
||
| ### Destinations Only | ||
| Ideal for automated notifications, scheduled updates, or forwarding alerts from monitoring systems. | ||
|
|
||
| **Example:** You want GitHub commit notifications in Discord. Configure a webhook to trigger your agent, then add Discord as a Destination. No Discord Source needed since the bot doesn't respond to Discord messages. | ||
|
|
||
| ### Both Sources and Destinations | ||
| Required when your agent needs conversations AND notifications, connecting multiple platforms, or building a full-featured assistant. | ||
|
|
||
| **Example:** You're building a team assistant that answers questions in Slack (Source) but also posts daily standup reminders (Destination) and forwards important emails to the channel (Email Source → Slack Destination). | ||
|
|
||
| ## Key Considerations | ||
|
|
||
| - **Sources** provide complete conversational capability - you don't need a destination to reply | ||
| - **Destinations** work independently - perfect for one-way notifications | ||
| - A single agent can have multiple sources and destinations configured | ||
|
|
||
| ## Video Tutorials | ||
|
|
||
| {/* ### Configuring Slack Inbound | ||
| <iframe | ||
| width="100%" | ||
| height="400" | ||
| src="SLACK_INBOUND_VIDEO_URL_PLACEHOLDER" | ||
| title="Setting up Slack Source Integration" | ||
| frameBorder="0" | ||
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" | ||
| allowFullScreen | ||
| ></iframe> */} | ||
|
|
||
| ### Discord Destination Setup | ||
| <iframe | ||
| width="100%" | ||
| height="400" | ||
| src="https://www.youtube.com/embed/1t22ExfvjSY" | ||
| title="Introducing Discord destinations" | ||
| frameBorder="0" | ||
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" | ||
| allowFullScreen | ||
| ></iframe> | ||
|
|
||
| ### Email Destination Configuration | ||
| <iframe | ||
| width="100%" | ||
| height="400" | ||
| src="https://www.youtube.com/embed/X-HEUFH5C0Y" | ||
| title="Introducing email destinations" | ||
| frameBorder="0" | ||
| allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" | ||
| allowFullScreen | ||
| ></iframe> | ||
|
|
||
| ## Next Steps | ||
|
|
||
| - Review the [Agents](/Cloud/agents) documentation for platform-specific configuration | ||
| - Configure *sources* for platforms where users will interact with your agent | ||
| - Set up *destinations* for platforms where your agent will send notifications |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Remove/adjust API response text under Email Source
Email sources aren’t invoked via API; this note is misleading.
📝 Committable suggestion
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good one
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jhaynie Thank you! I'm glad the correction was helpful. It's important to keep the documentation accurate, especially when describing how different source types work - email sources being triggered by incoming emails rather than API calls is a key distinction for users to understand.
🐰✨ hops excitedly