Skip to content

docs: add AG-UI Channels guide and Slack example (CopilotKit Channels SDK) - #750

Open
mme wants to merge 6 commits into
agno-agi:mainfrom
mme:agui-channels
Open

mme wants to merge 6 commits into
agno-agi:mainfrom
mme:agui-channels

Conversation

@mme

@mme mme commented Aug 13, 2026 •

Copy link
Copy Markdown

Description

Adds an AG-UI Channels guide plus a runnable Slack example. The same Agno agent that serves an AG-UI frontend from AgentOS can also run as a bot in Slack and other messaging platforms through the CopilotKit Channels SDK: the AgentOS server stays unchanged, and a separate Node channel process — connected through CopilotKit Intelligence, which holds the platform credentials — drives the agent through AgnoAgent from @ag-ui/agno.

Changes:

  • New agent-os/interfaces/ag-ui/channels.mdx guide (how it fits together, Slack steps, other platforms, production note).
  • New examples/agent-os/interfaces/agui/slack-channel.mdx runnable example.
  • docs.json navigation entries for both, an AG-UI group, and a row in the AG-UI examples overview table.
  • Cross-link from the AG-UI introduction.

Type of Change

  • New content

Related Issues/PRs (if applicable)

N/A

Checklist

  • Content is accurate and up-to-date
  • All links tested and working
  • Code examples verified (if applicable)
  • Spelling and grammar checked
  • Screenshots updated (if applicable)

Code verification: the TypeScript snippets typecheck against the published @copilotkit/channels, @copilotkit/runtime, and @ag-ui/agno packages; the AgentOS snippet and /agui endpoint match the existing AG-UI introduction. docs.json validated as JSON.

mme and others added 2 commits August 11, 2026 15:11
… SDK)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Slack connects through CopilotKit Intelligence (required by design);
code samples now follow CopilotKit's canonical minimal-channel shape:
no direct Slack adapter, Channel ID + API key from the Intelligence
dashboard, and subscribe-on-mention thread handling.
@Himanshu040604

Copy link
Copy Markdown
Contributor

Thanks for this @mme
We ran the whole page end to end in a real Slack workspace against a live AgentOS, and it works.
few things which can be cleaned up are mentioned below

@Himanshu040604

Copy link
Copy Markdown
Contributor

I pasted the dashboard's actual ID field (channel_…) and the SDK rejected it: it requires a lowercase kebab case channelName. The working value is the channel's Code. Rename the env var to CHANNEL_CODE (matching the CopilotKit docs), also in the slack-channel.mdx

@Himanshu040604

Copy link
Copy Markdown
Contributor

API keys are project scoped , I first used a key from a different project and got a silently dead bot (channel_not_declared, no error anywhere). One line here saying "create the key in the same project as the Channel" would be a good thing to add

@Himanshu040604

Copy link
Copy Markdown
Contributor

The sample agent has no memory a threaded follow ups gets no context because basic.py sets neither db= nor add_history_to_context=True, which undercuts the page's own subscribe flow (in thread it works but bot forgets the previous message in different thread). Adding this will fixes it.

@Himanshu040604

Copy link
Copy Markdown
Contributor

The install as written doesn't typecheck the plain npm install today pulls two different @ag-ui/client copies (via @ag-ui/agno peer vs @copilotkit/channels-core pin) and tsc fails with TS2322 on the agent: field in channel.ts. The CopilotKit agno starter pins exact versions and carries an @ag-ui/* overrides block worth pinning here too.

@Himanshu040604

Copy link
Copy Markdown
Contributor

in here there it says other platforms (Teams, Discord, WhatsApp, Telegram) connect the same easy way as Slack. But CopilotKit's own docs say only Slack works this way today, the others need extra setup on your side. Can you please update this line there

@Himanshu040604

Himanshu040604 commented Sep 1, 2026 •

Copy link
Copy Markdown
Contributor

two small things:

  • When you start channel.ts, it prints nothing you can't tell if it connected or not. please add a line that prints the connection status.
  • when the agent uses a tool, slack shows nothing about it by default. Mention the showToolStatus option

mme added 4 commits September 17, 2026 11:00
- Use CHANNEL_CODE (the Channel's kebab-case Code) and CPK_INTELLIGENCE_API_KEY,
  matching the CopilotKit docs; note that API keys are project scoped
- Give the sample agent a SqliteDb with add_history_to_context so in-thread
  follow-ups keep context (Agno's AG-UI interface runs the latest user message
  against the session keyed by thread id)
- Pin the tested @copilotkit/channels + @copilotkit/runtime pair, add an
  @ag-ui/* overrides block and a NodeNext tsconfig so a plain install typechecks
- Check channels.status() after ready() and log the connection result
- Document showToolStatus for tool-call progress in Slack
- Correct the platform list: managed Slack today, Teams controlled, Discord/
  WhatsApp/Telegram via direct adapters; drop "other platforms" from intro
- Node.js 22 prerequisite; replies are posted, not streamed, on managed Slack
The Channel page's Connect a runtime dialog labels the value CHANNEL NAME;
the setup wizard calls it Code. Name both, and point at the ID field as the
value it is not.
# Conflicts:
#	docs.json
#	examples/agent-os/interfaces/agui/overview.mdx
v3.0.4 moved the AG-UI examples from examples/agent-os/interfaces/agui to
examples/agent-os/agui, leaving the old location as migration stubs. Put the
new Slack example in the current location, restore the stub overview, and
align its model id with the sibling examples.
@mme

mme commented Sep 17, 2026 •

Copy link
Copy Markdown
Author

Thanks for running it end to end! All seven are fixed and pushed.

  • CHANNEL_CODE: renamed, along with CPK_INTELLIGENCE_API_KEY, to match the CopilotKit docs. The docs now mention the correct labels too.
  • Project-scoped keys: added, both pages now say to create the key in the same project as the Channel.
  • Agent memory: good catch. basic.py now sets db=SqliteDb(...) and add_history_to_context=True.
  • Install / TS2322 — pinned @copilotkit/channels@0.9.2 with @copilotkit/runtime@1.70.2, added an @ag-ui/* overrides block and the NodeNext tsconfig.json. Reinstalled from scratch and tsc is clean.
  • Other platforms — rewritten. Managed Slack today, Teams as a controlled integration target, and Discord/WhatsApp/Telegram via direct adapters.
  • Startup output and showToolStatus — the channel now checks channels.status() after ready(), throws if it isn't online, and logs when it is. showToolStatus is in the example and has its own short section.

Also added a Node.js 22 prerequisite, and changed "streams the reply" to "posts the reply", since managed Slack buffers.

Verified against a real workspace too: mention gets a reply, the in-thread follow-up runs without another mention and correctly recalls the earlier turn.

Merged latest main and resolved the conflicts.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants