Back to Copilotkit

createChannel

showcase/shell-docs/src/content/reference/channels/functions/createChannel.mdx

1.65.04.4 KB
Original Source

createChannel(options) creates the provider-neutral Channel registered with CopilotRuntime({ channels }).

Signature

ts
function createChannel<TStateSchema>(
  options: CreateChannelOptions<TStateSchema>,
): Channel<ThreadStateOf<TStateSchema>>;

Import it from the umbrella package:

ts
import { createChannel } from "@copilotkit/channels";

Managed example

ts
const channel = createChannel({
  name: "support",
  identifyUser: "platform",
  agent: makeAgent,
  tools: [getIncident],
  context: [
    {
      description: "Response style",
      value: "Put the next action first.",
    },
  ],
});

channel.onMessage(async ({ thread, message }) => {
  await thread.runAgent({ prompt: message.text });
});

The Channel name is the project-unique Intelligence Code. A single managed runtime declares both Slack and Teams for that Channel; Intelligence routes each prepared delivery only to its originating provider.

Options

OptionTypeNotes
namestringRequired for managed delivery. Must match the project-unique Intelligence Code.
identifyUser"platform" | ChannelIdentifyUserRequired. Maps each provider actor to an application user or null.
showToolStatusbooleanManaged Slack hides tool-call progress by default. Set true to show it; tool history remains available in Intelligence either way.
agentAbstractAgent | (threadId) => AbstractAgentPrefer a factory; a singleton is isolated per run via clone().
toolsChannelTool[]Channel-level typed tools.
contextContextEntry[]Stable context added to every agent run.
componentsChannelComponent[]Named JSX components used to reconstruct callbacks.
commandsChannelCommand[]Declared commands routed from provider ingress.
storeStoreConfigState, persistence, turn concurrency (parallel default), transcripts, and dedup.
adaptersPlatformAdapter[]Developer-owned direct transports that may coexist with the managed Intelligence adapter.

The managed runtime validates name as lowercase kebab-case, 3–64 characters, not equal to channels, and unique within the Runtime.

Handlers receive both the required provider actor and the nullable application user. The SDK resolves that pair once for each incoming event. Both objects are immutable snapshots. The SDK does not link accounts by email, name, or handle.

Malformed callback output rejects with channel_identity_invalid. A callback exception rejects with channel_identity_failed and never falls back to the standard platform policy.

Registration methods

The returned Channel supports:

  • onMessage and onMention
  • onWelcome
  • onInterrupt
  • onInteraction
  • onCommand
  • onReaction
  • onThreadStarted
  • onModalSubmit and onModalClose for adapters that support modals
  • tool to add a tool before the Channel starts

See Channel for handler signatures and StoreConfig for persistence.