Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 85 additions & 6 deletions content/Cloud/agents.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ graph TD
A5[Agent]
A6[Slack]
A7[Discord]
A8[Telegram]
end

subgraph Destinations
Expand All @@ -47,6 +48,7 @@ graph TD
A5 --> Agent
A6 --> Agent
A7 --> Agent
A8 --> Agent

Agent --> B1
Agent --> B2
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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.

Expand All @@ -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.

Comment on lines 159 to 160
Copy link
Contributor

@coderabbitai coderabbitai bot Aug 18, 2025

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.

-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.
+After an email is received, the platform will enqueue processing and your agent will handle the message asynchronously. Any replies will be delivered via the configured destination(s).
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
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.
After an email is received, the platform will enqueue processing and your agent will handle the message asynchronously. Any replies will be delivered via the configured destination(s).
🤖 Prompt for AI Agents
In content/Cloud/agents.mdx around lines 159-160, the paragraph stating "The
response from the API will contain an informational message..." is incorrect
under the Email Source section because email sources are not invoked via API;
remove this paragraph or relocate and reword it to a section that describes
API-invoked sources (e.g., an HTTP/API source) if that behavior is intended for
other source types, or replace it with a clear statement that email sources are
triggered via inbound email and do not return an API Location header.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good one

Copy link
Contributor

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

#### 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.

Expand Down Expand Up @@ -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.

Expand All @@ -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.

Expand All @@ -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 `no-reply@agentuity.run`:

<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 `no-reply@agentuity.run`
- **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.
Expand Down
4 changes: 0 additions & 4 deletions content/Guides/.agent-io.mdx

This file was deleted.

103 changes: 103 additions & 0 deletions content/Guides/agent-io.mdx
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
14 changes: 13 additions & 1 deletion content/Guides/key-value.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -194,4 +194,16 @@ Track your key-value storage usage through the Cloud Console:

<ThemeImage baseName="keyvalue-detail" alt="Key Value Storage Detail View" />

For more complex data relationships or query needs, consider combining storage types or using external databases through your agent.
For more complex data relationships or query needs, consider combining storage types or using external databases through your agent.

## Storage Types Overview

<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/rT9eCMRztpI"
title="How to Give Your AI Agents Persistent Memory"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
14 changes: 13 additions & 1 deletion content/Guides/object-storage.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -390,4 +390,16 @@ Track your object storage usage through the Cloud Console:
3. Monitor provider information and creation dates
4. Use [agent telemetry](/Guides/agent-telemetry) to track storage operations

For structured data with complex queries, consider using object storage to store data exports while maintaining indexes in key-value or vector storage.
For structured data with complex queries, consider using object storage to store data exports while maintaining indexes in key-value or vector storage.

## Storage Types Overview

<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/rT9eCMRztpI"
title="How to Give Your AI Agents Persistent Memory"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
12 changes: 12 additions & 0 deletions content/Guides/vector-db.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -204,3 +204,15 @@ Vector storage serves as long-term memory for agents, enabling them to:
- Build and maintain agent-specific knowledge repositories

For more information on memory patterns, see the [Key-Value Storage guide](/Guides/key-value) for short-term memory or explore [Agent Communication](/Guides/agent-communication) for sharing knowledge between agents.

## Storage Types Overview

<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/rT9eCMRztpI"
title="How to Give Your AI Agents Persistent Memory"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
16 changes: 13 additions & 3 deletions content/Guides/what-is-an-agent.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,16 @@ Agents demands a new paradigm. Agents aren't focused on low latency, they are f

Learn more details about the differences in today's cloud computing paradigm and the [Agent-Native Cloud](/Guides/agent-native-cloud).

----

If you're a software engineer and you need to build agents, you need to think like an [Agent Builder](/Guides/agent-engineering).
If you're a software engineer and you need to build agents, you need to think like an [Agent Builder](/Guides/agent-engineering).

## Video Overview

<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/ZuvpaGqgLL4"
title="AI agents, explained"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>
12 changes: 12 additions & 0 deletions content/Introduction/getting-started.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -103,3 +103,15 @@ If you're using an Agentic Code Editor such as [Cursor](https://www.cursor.com),
/>
</Cards>

## Video Tutorial

<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/Z9QAdFO2LYE"
title="Building your first AI agent"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowFullScreen
></iframe>

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.
Binary file added public/images/agent-io-email-destination-dark.png
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.
Binary file added public/images/agent-io-slack-source-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/agent-io-slack-source-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/agent-io-telegram-source-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/images/agent-io-telegram-source-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.