Skip to content
This repository was archived by the owner on Jun 26, 2026. It is now read-only.
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
82 changes: 56 additions & 26 deletions content/docs/agents/get-started/what-is-aci.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,35 @@
---

import { BookText, HomeIcon } from 'lucide-react';

Agent Communication Infrastructure (ACI) is the communication layer that connects agents to the messaging platforms where people already work, collaborate, and talk to businesses.

Check notice on line 10 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L10

[Google.Parens] Use parentheses judiciously.
Raw output
{"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 10, "column": 36}}}, "severity": "INFO"}

Check notice on line 10 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L10

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 10, "column": 42}}}, "severity": "INFO"}

Agent Communication Infrastructure (ACI) is a protocol-driven infrastructure layer for enabling structured, stateful communication between autonomous agents and your users across messaging platforms.
ACI sits between communication channels and your agent logic. Instead of building separate integrations for each platform, ACI gives your agent one communication interface for inbound messages, outbound replies, conversation state, user identity, and delivery across:

Check warning on line 12 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L12

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 27.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 27.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 12, "column": 63}}}, "severity": "WARNING"}

ACI sits between messaging platforms and your agent logic. Instead of building separate integrations for each channel, ACI provides a unified interface for webhooks, message delivery, conversation state, and subscriber identity.
* Slack

Check warning on line 14 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L14

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 14, "column": 1}}}, "severity": "WARNING"}
* Microsoft Teams

Check warning on line 15 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L15

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 15, "column": 1}}}, "severity": "WARNING"}
* WhatsApp

Check warning on line 16 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L16

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 16, "column": 1}}}, "severity": "WARNING"}
* Email

Check warning on line 17 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L17

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 17, "column": 1}}}, "severity": "WARNING"}
* Telegram

Check warning on line 18 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L18

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 18, "column": 1}}}, "severity": "WARNING"}
* Other supported platforms

Check warning on line 19 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L19

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 19, "column": 1}}}, "severity": "WARNING"}

The agent itself can be powered by an LLM, custom code, a rules engine, a human-in-the-loop workflow, or a combination of systems or Platform managed agents like [Claude Managed Agent](https://platform.claude.com/docs/en/managed-agents/overview), [ AWS Bedrock AgentCore](https://aws.amazon.com/bedrock/agentcore/) and many more. ACI doesn't define the agent’s intelligence. It defines the communication infrastructure around it.
The agent brain can be powered by an LLM, custom code, a rules engine, a human-in-the-loop workflow, a managed agent platform, or a combination of systems. ACI does not define the agent’s intelligence. It defines the communication infrastructure around it.

Check warning on line 21 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L21

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 26.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 26.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 21, "column": 1}}}, "severity": "WARNING"}

Check warning on line 21 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L21

[write-good.Passive] 'be powered' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'be powered' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 21, "column": 21}}}, "severity": "WARNING"}

Check notice on line 21 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L21

[write-good.E-Prime] Try to avoid using 'be'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'be'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 21, "column": 21}}}, "severity": "INFO"}

Check notice on line 21 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L21

[Google.Passive] In general, use active voice instead of passive voice ('be powered').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('be powered').", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 21, "column": 21}}}, "severity": "INFO"}

Check notice on line 21 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L21

[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 21, "column": 38}}}, "severity": "INFO"}

Check notice on line 21 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L21

[Google.Contractions] Use 'doesn't' instead of 'does not'.
Raw output
{"message": "[Google.Contractions] Use 'doesn't' instead of 'does not'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 21, "column": 161}}}, "severity": "INFO"}

That means you can build an agent that your team uses internally, expose an agent to your product users, or create a customer-facing agent that lives in the channels your customers already use.

Check warning on line 23 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L23

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 33.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 33.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 23, "column": 1}}}, "severity": "WARNING"}

## What does ACI solve?

Software is becoming more conversational. Users no longer only click through interfaces or receive one-way notifications. They ask questions, reply to messages, clarify requests, approve actions, send files, react with emojis, and expect software to continue the conversation in channels where they already are.
Software is becoming more conversational. People no longer only click through interfaces or receive one-way notifications. They ask questions, reply to messages, clarify requests, approve actions, send files, react with emojis, and expect software to continue the conversation in the channels where they already are.

Check notice on line 27 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L27

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 27, "column": 10}}}, "severity": "INFO"}

Check warning on line 27 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L27

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 29.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 29.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 27, "column": 124}}}, "severity": "WARNING"}

Check notice on line 27 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L27

[write-good.E-Prime] Try to avoid using 'are'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'are'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 27, "column": 313}}}, "severity": "INFO"}
Comment thread
Aviatorscode2 marked this conversation as resolved.

At the same time, agents are becoming more capable. And most teams already have agents that answers users questions, analyze information, trigger workflows, escalate issues, and coordinate with other systems.
At the same time, agents are becoming more capable. Teams are building agents that answer questions, analyze information, trigger workflows, escalate issues, and coordinate with other systems.

Check notice on line 29 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L29

[write-good.E-Prime] Try to avoid using 'are'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'are'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 29, "column": 26}}}, "severity": "INFO"}

Check notice on line 29 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L29

[write-good.E-Prime] Try to avoid using 'are'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'are'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 29, "column": 59}}}, "severity": "INFO"}

In most cases, these agents only work inside one platform, getting these agents into a different platform requires rebuilding the communication layer from scratch.
The problem is that most agents are still trapped inside one interface. Moving the same agent into Slack, Microsoft Teams, WhatsApp, email, Telegram, or another channel usually means rebuilding the communication layer for each platform.

Check notice on line 31 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L31

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 31, "column": 13}}}, "severity": "INFO"}

Check notice on line 31 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L31

[write-good.E-Prime] Try to avoid using 'are'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'are'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 31, "column": 33}}}, "severity": "INFO"}

Check warning on line 31 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L31

[write-good.Weasel] 'usually' is a weasel word!
Raw output
{"message": "[write-good.Weasel] 'usually' is a weasel word!", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 31, "column": 170}}}, "severity": "WARNING"}

This creates an infrastructure problem where each channel has its own webhook format, identity model, threading behavior, permissions, message formatting, interaction patterns, and delivery constraints. Teams that want to expose an agent across Slack, Microsoft Teams, WhatsApp, email, or other channels often end up rebuilding the same communication plumbing for every channel.
Each channel has its own webhook format, identity model, threading behavior, permissions, message formatting, interaction patterns, and delivery constraints. Without a shared communication layer, teams end up rebuilding the same infrastructure every time they want an agent to reach a new audience.

ACI exists to standardize that layer. It separates the communication layer from the agent logic, so teams can connect agents to different messaging platforms without hand-building every channel integration from scratch.
ACI standardizes that layer. It separates communication infrastructure from agent intelligence, so you can connect an agent to multiple messaging platforms without hand-building every channel integration from scratch.

Check warning on line 35 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L35

[write-good.TooWordy] 'multiple' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'multiple' is too wordy.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 35, "column": 128}}}, "severity": "WARNING"}

You create your agent once. ACI handles delivery everywhere. The goal isn't only to send messages but to let agents hold useful conversations across channels while preserving context, control, and visibility.
You create the agent once. ACI handles communication across connected channels. The goal is not only to send messages, but to let agents hold useful conversations while preserving context, control, and visibility.

Check notice on line 37 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L37

[Google.Contractions] Use 'isn't' instead of 'is not'.
Raw output
{"message": "[Google.Contractions] Use 'isn't' instead of 'is not'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 37, "column": 90}}}, "severity": "INFO"}

Check notice on line 37 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L37

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 37, "column": 90}}}, "severity": "INFO"}

## How ACI works

Expand All @@ -35,31 +44,48 @@

### Communication channels

Communication channels are the places where users interact with the agent, such as Slack, Microsoft Teams, WhatsApp, Telegram, and more. When a user sends a message on any of these platforms, it enters the ACI layer.
Communication channels are the places where people interact with the agent:

Check notice on line 47 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L47

[write-good.E-Prime] Try to avoid using 'are'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'are'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 47, "column": 24}}}, "severity": "INFO"}

* Slack

Check warning on line 49 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L49

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 49, "column": 1}}}, "severity": "WARNING"}
* Microsoft Teams

Check warning on line 50 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L50

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 50, "column": 1}}}, "severity": "WARNING"}
* WhatsApp

Check warning on line 51 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L51

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 51, "column": 1}}}, "severity": "WARNING"}
* Telegram

Check warning on line 52 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L52

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 52, "column": 1}}}, "severity": "WARNING"}
* Email

Check warning on line 53 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L53

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 53, "column": 1}}}, "severity": "WARNING"}
* Other supported platforms

Check warning on line 54 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L54

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 54, "column": 1}}}, "severity": "WARNING"}

When a user sends a message in one of these channels, the message enters the ACI layer.

### Bridge

The bridge is the infrastructure layer in the middle. It receives the platform webhook, normalizes the message into a standard format, and resolves the user's identity.
The bridge is the infrastructure layer between the communication channel and the agent's brain.

Check notice on line 60 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L60

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 60, "column": 12}}}, "severity": "INFO"}

It creates or loads the conversation with its full history, and forwards everything to your server as a single context object.
It receives the platform webhook, normalizes the message into a standard format, and resolves the user's identity. It then creates or loads the conversation, attaches the relevant conversation history, and forwards the message to your configured agent brain as context.

When your agent replies, the bridge delivers the response back to the correct platform thread, persists it in the conversation history, and records the activity.
When the agent replies, the bridge delivers the response back to the correct platform, thread, or conversation. It also persists the response in the conversation history and records the activity for observability.

### Agent brain
### Agent

The agent brain is either Custom code agent or Managed agent.
The agent's brain is the system that decides how to respond. ACI supports different kinds of agents, including custom code agents and managed agents.

Check notice on line 68 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L68

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 68, "column": 19}}}, "severity": "INFO"}

In case of Custom code agent, you can build agent brain with your custom code using agent sdk, lanchain etc. Your server receives the context object and processes it however you decide. Call an LLM, run business logic, route to a human, or combine all three.
For a custom code agent, your server receives the context object and processes it however you decide. You can call an LLM, run business logic, use external APIs, route the conversation to a human, or combine multiple systems. You can build the agent brain with the Novu agent SDK, AI SDK, LangChain, OpenAI SDK, or any custom code of your choosing.

Check warning on line 70 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L70

[write-good.TooWordy] 'however' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'however' is too wordy.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 70, "column": 83}}}, "severity": "WARNING"}

Check notice on line 70 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L70

[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 70, "column": 119}}}, "severity": "INFO"}

Check warning on line 70 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L70

[write-good.TooWordy] 'multiple' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'multiple' is too wordy.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 70, "column": 209}}}, "severity": "WARNING"}
Comment thread
Aviatorscode2 marked this conversation as resolved.

In case of Managed agent, platfrom like Claude manages the agent intelligence, it provides, system tools like grep, web search, connection to external tools like linear, notion using MCP.
For a managed agent, you configure the agent's behavior, system prompt, tools, skills, and external connections. The managed platform runs the agent harness and executes the agent loop, while ACI handles the communication layer between the managed agent and your connected channels.

Check warning on line 72 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L72

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 26.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 26.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 72, "column": 114}}}, "severity": "WARNING"}

The channel-agnostic nature of this architecture means that when you connect a new provider, your agent implementation doesn't change. Not a single line of code. The same brain that responds on Slack will respond on Microsoft Teams, WhatsApp, or email without modification.
Because the agent brain is separate from the channel layer, your agent does not need channel-specific logic for each connected provider. The same agent can respond through the ACI bridge across:

Check notice on line 74 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L74

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 74, "column": 25}}}, "severity": "INFO"}

Check notice on line 74 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L74

[Google.Contractions] Use 'doesn't' instead of 'does not'.
Raw output
{"message": "[Google.Contractions] Use 'doesn't' instead of 'does not'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 74, "column": 72}}}, "severity": "INFO"}

## What ACI handles vs. what you control
* Slack

Check warning on line 76 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L76

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 76, "column": 1}}}, "severity": "WARNING"}
* Microsoft Teams

Check warning on line 77 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L77

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 77, "column": 1}}}, "severity": "WARNING"}
* WhatsApp

Check warning on line 78 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L78

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 78, "column": 1}}}, "severity": "WARNING"}
* Email

Check warning on line 79 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L79

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 79, "column": 1}}}, "severity": "WARNING"}
* Telegram

Check warning on line 80 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L80

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 80, "column": 1}}}, "severity": "WARNING"}
* Other supported channels

Check warning on line 81 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L81

[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.
Raw output
{"message": "[Novu.BulletPunctuation] End bullet points that are complete sentences with a period.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 81, "column": 1}}}, "severity": "WARNING"}

ACI draws a clear boundary between infrastructure and intelligence.

### The infrastructure handles
## What ACI handles and what you control

ACI draws a clear boundary between communication infrastructure and agent intelligence.

### ACI handles

* Webhook ingestion and message normalization across all connected platforms.
* Message delivery to the correct platform thread.
Expand All @@ -70,21 +96,23 @@

### You control

In case of _Custom code agent_, you control:
For a custom code agent, you control:

* Your LLM, prompts, and model configuration.
* Your tools and function calls.
* Your business logic and decision-making.
* Your API keys and credentials.
* Your choice of runtime, which can be managed agents, Vercel AI SDK, LangChain, OpenAI SDK, or any custom code of your choosing.

In case of _Managed agent_, platform like Claude controls:
For a managed agent, you configure:

- The agent's instructions and behavior.

Check warning on line 109 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L109

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 109, "column": 1}}}, "severity": "WARNING"}
- MCP servers and their configuration.
- The agent's tools and their configuration.
- The agent's business logic and decision-making.
- The agent's tools, skills and their configuration.

Check warning on line 111 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L111

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 111, "column": 1}}}, "severity": "WARNING"}
- The external systems the agent can access.

Check warning on line 112 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L112

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 112, "column": 1}}}, "severity": "WARNING"}
- The guardrails or constraints supported by the managed platform.

Check warning on line 113 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L113

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 113, "column": 1}}}, "severity": "WARNING"}

ACI is opinionated about infrastructure and unopinionated about intelligence. It handles the delivery problem so you can focus on the capability problem.
ACI is opinionated about communication infrastructure and unopinionated about intelligence. It handles the communication problem so you can focus on what your agent should do.

Check warning on line 115 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L115

[write-good.Passive] 'is opinionated' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is opinionated' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 115, "column": 5}}}, "severity": "WARNING"}

Check notice on line 115 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L115

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 115, "column": 5}}}, "severity": "INFO"}

Check notice on line 115 in content/docs/agents/get-started/what-is-aci.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/get-started/what-is-aci.mdx#L115

[Google.Passive] In general, use active voice instead of passive voice ('is opinionated').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('is opinionated').", "location": {"path": "content/docs/agents/get-started/what-is-aci.mdx", "range": {"start": {"line": 115, "column": 5}}}, "severity": "INFO"}

## Common use cases

Expand All @@ -102,6 +130,8 @@

## Start building

Follow the quickstart to create your first agent, connect a Slack provider, and send your first message in under five minutes.

<Cards>
<Card
href="/agents/custom-code-agent/concepts"
Expand Down
84 changes: 84 additions & 0 deletions content/docs/agents/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
title: "Overview"
pageTitle: "Agents"
description: "Connect your AI agents to chat platforms and communication channels with Novu's Agent Communication Infrastructure (ACI)."
icon: Plug
---

import { Code2, Sparkles, BrainCircuit, Blocks, MessagesSquare, CircleHelp, Zap } from 'lucide-react';

Check notice on line 8 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L8

[Google.Semicolons] Use semicolons judiciously.
Raw output
{"message": "[Google.Semicolons] Use semicolons judiciously.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 8, "column": 102}}}, "severity": "INFO"}

Novu Connect is built on the [Agent Communication Infrastructure (ACI)](/agents/get-started/what-is-aci), the infrastructure layer that handles how agents communicate, so your agents can hold real conversations across messaging platforms with users, on the channels they already use.

Check warning on line 10 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L10

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 36.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 36.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 10, "column": 1}}}, "severity": "WARNING"}

Check notice on line 10 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L10

[Google.Passive] In general, use active voice instead of passive voice ('is built').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('is built').", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 10, "column": 14}}}, "severity": "INFO"}

Check warning on line 10 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L10

[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is built' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 10, "column": 14}}}, "severity": "WARNING"}

Check notice on line 10 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L10

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 10, "column": 14}}}, "severity": "INFO"}

Check notice on line 10 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L10

[Google.Parens] Use parentheses judiciously.
Raw output
{"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 10, "column": 66}}}, "severity": "INFO"}

ACI draws a hard boundary between two concerns:

* **Communication infrastructure**: Webhook ingestion, message normalization, conversation state, identity resolution, and delivery across channels. ACI owns this layer.

* **Agent intelligence**: Your LLM, prompts, tools, managed agent configuration, business logic, or custom runtime. You own this layer.

Check notice on line 16 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L16

[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 16, "column": 32}}}, "severity": "INFO"}
Comment thread
Aviatorscode2 marked this conversation as resolved.

The result is that you can create an agent once and make it available across connected channels. ACI routes messages in, sends replies out, preserves conversation context, and removes the need to rebuild communication plumbing for every platform.

Check notice on line 18 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L18

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 18, "column": 12}}}, "severity": "INFO"}

<Card href="/agents/get-started/what-is-aci" title="What is ACI?" icon={<CircleHelp />}>

Check warning on line 20 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L20

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 27.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 27.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 20, "column": 2}}}, "severity": "WARNING"}

Check notice on line 20 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L20

[Google.Contractions] Use 'what's' instead of 'What is'.
Raw output
{"message": "[Google.Contractions] Use 'what's' instead of 'What is'.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 20, "column": 53}}}, "severity": "INFO"}

Check notice on line 20 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L20

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 20, "column": 58}}}, "severity": "INFO"}
Learn how ACI works, what it solves, and where it draws the line between infrastructure and intelligence.
</Card>

Check warning on line 22 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L22

[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 29.
Raw output
{"message": "[Novu.SentenceLength] Sentences should not exceed 25 words; this one has 29.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 22, "column": 3}}}, "severity": "WARNING"}

## Connect the agent

Novu Connect accepts two kinds of [agent brains](/platform/additional-resources/glossary#agent-brain). You choose how you want to bring it.

### External connectors

Delegate the agent logic entirely to a managed platform such as Claude Managed Agents. You configure the agent's behavior, system prompt, tools, skills, and MCP servers and the platform runs the intelligence.

Check notice on line 30 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L30

[Google.Acronyms] Spell out 'MCP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'MCP', if it's unfamiliar to the audience.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 30, "column": 158}}}, "severity": "INFO"}

<Card href="/agents/managed-agent/overview" title="Managed agent" icon={<Sparkles />}>
Set up a fully managed agent powered by Claude. No custom server code required.
</Card>

### Custom code

Write your own agent logic. Handle events, call any LLM or API, and reply using the Novu agent SDK. Compatible with AI SDK, LangChain, OpenAI SDK, and any custom code of your choosing.

Check notice on line 38 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L38

[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'LLM', if it's unfamiliar to the audience.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 38, "column": 53}}}, "severity": "INFO"}

<Card href="/agents/custom-code-agent/quickstart" title="Custom code agent" icon={<Code2 />}>
Build an agent with full control over logic, tools, and event handling.
</Card>

## How a conversation flows

ACI turns channel-specific messages into a standard communication flow between the user and your agent brain.

1. A user sends a message on Slack, Teams, WhatsApp, or another supported channel.
2. Novu ingests the webhook, normalizes the event, and resolves the user's identity.
3. Novu sends the event to your agent brain with full conversation context.
4. Your agent processes the message and responds.
5. Novu delivers the reply back to the correct platform thread.
6. Novu persists the conversation and makes it visible in the Connect dashboard.

## Start building

<Card href="/agents/managed-agent/quickstart" title="Quickstart" icon={<Zap />}>
Follow the quickstart to create your first agent, connect a Slack provider, and send your first message in under 5 minutes.

Check notice on line 58 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L58

[Novu.Numerals] Spell out '5' in prose (use numerals for 10 and above).
Raw output
{"message": "[Novu.Numerals] Spell out '5' in prose (use numerals for 10 and above).", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 58, "column": 116}}}, "severity": "INFO"}
</Card>

## Learn more

Explore the full documentation to go deeper on any part of Novu Connect.

<Cards>
<Card href="/agents/get-started/what-is-aci" title="What is ACI?" icon={<CircleHelp />}>
Understand the infrastructure layer and the problem it solves.
</Card>
<Card href="/agents/get-started/mental-model" title="Mental model" icon={<BrainCircuit />}>
How inbound messages flow from a channel through to your agent and back.
</Card>
<Card href="/agents/get-started/agents-and-providers" title="Agents and providers" icon={<Blocks />}>
How agents and provider connections work, and which channels are supported.

Check warning on line 73 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L73

[write-good.Passive] 'are supported' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'are supported' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 73, "column": 66}}}, "severity": "WARNING"}

Check notice on line 73 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L73

[write-good.E-Prime] Try to avoid using 'are'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'are'.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 73, "column": 66}}}, "severity": "INFO"}

Check notice on line 73 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L73

[Google.Passive] In general, use active voice instead of passive voice ('are supported').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('are supported').", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 73, "column": 66}}}, "severity": "INFO"}
</Card>
<Card href="/agents/managed-agent/overview" title="Managed agent" icon={<Sparkles />}>
Configure a fully-managed agent powered by Claude.

Check failure on line 76 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L76

[Google.LyHyphens] 'fully-managed' doesn't need a hyphen.
Raw output
{"message": "[Google.LyHyphens] 'fully-managed' doesn't need a hyphen.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 76, "column": 17}}}, "severity": "ERROR"}
</Card>
<Card href="/agents/custom-code-agent/quickstart" title="Custom code quickstart" icon={<Zap />}>
Connect a Slack provider and send your first message in under five minutes.
</Card>
<Card href="/agents/conversations" title="Conversation observability" icon={<MessagesSquare />}>
Monitor, inspect, and manage live agent conversations.

Check warning on line 82 in content/docs/agents/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/agents/index.mdx#L82

[write-good.TooWordy] 'Monitor' is too wordy.
Raw output
{"message": "[write-good.TooWordy] 'Monitor' is too wordy.", "location": {"path": "content/docs/agents/index.mdx", "range": {"start": {"line": 82, "column": 5}}}, "severity": "WARNING"}
</Card>
</Cards>
Comment thread
greptile-apps[bot] marked this conversation as resolved.
Loading
Loading