OpenTag: Open-Source Claude Tag Alternative for Slack and MS Teams

Deploy a Slack and Microsoft Teams agent that reads conversations, returns research and charts, and drafts approval-gated Linear or Notion actions.

OpenTag is an open-source, self-hosted on-call triage assistant for Slack and Microsoft Teams. Designed as an alternative to Claude Tag.

It reads channel conversations and uploaded files, then returns model-backed replies, native chat cards, charts, cited research, and draft Linear or Notion items. Linear and Notion writes pause for approval before the agent sends the request.

The AI assistant combines a Node.js Channels runtime with a Python LangGraph agent. CopilotKit Intelligence can manage chat-platform delivery and credentials, while you run the agent, model access, tools, deployment, state, and logs. You can also operate the channel connection yourself with the open-source Channels SDK.

A typical task begins with a Slack mention. OpenTag reads the thread, sends the context to its agent, calls configured research or workspace tools, and returns the result inside the conversation. A CSV file can become a native chart, while a bug discussion can become a proposed Linear issue behind an approval button.

Key Features

  • Runs as an MIT-licensed application that you can fork, customize, and deploy on your own infrastructure.
  • Connects to Slack and Microsoft Teams through CopilotKit Channels.
  • Returns native issue cards, page cards, status blocks, incident details, tables, charts, diagrams, and links inside the chat thread.
  • Uses a resumable LangGraph confirmation step before sending any Linear or Notion write request.
  • Accepts file-aware prompts and can render CSV data as a native Slack chart with an accompanying explanation.
  • Adds optional live web, GitHub, PostHog, Linear, and Notion sources only when their credentials are configured.
  • Connects the Node Channels runtime to the included Python LangGraph agent over AG-UI.
  • Accepts another AG-UI-compatible agent through AGENT_URL if you want to replace the included backend.
  • Defines a two-service Railway deployment for the Python agent and long-running Node runtime.

OpenTag vs. Claude Tag

OpenTag and Claude Tag both bring an AI agent into team conversations. OpenTag exposes the application code, agent, tools, interface components, and deployment configuration. Claude Tag is an Anthropic-managed experience tied to Claude and the organization’s Claude setup.

Choose OpenTag when you need to modify the agent or operate its runtime. The managed CopilotKit Intelligence path handles platform ingress and credentials. Your team operates the agent, pays for API usage and hosting, and maintains the deployment and state.

AreaOpenTagClaude Tag
Delivery modelOpen-source application with a self-operated runtime and agentAnthropic-managed product
Chat platformsSlack and Microsoft TeamsSlack
Agent backendIncluded Python LangGraph agent or another AG-UI-compatible agentClaude
IntegrationsOptional Tavily, GitHub, PostHog, Linear, and Notion sourcesTools and access configured for the organization
Write actionsLinear and Notion writes pause for explicit approvalPermissions follow the organization’s Claude configuration
CostMIT-licensed code, plus model, hosting, and optional service costsRequires eligible paid Claude organization access and usage capacity

How to Use OpenTag

You need Node.js 22 or later, pnpm, Python 3.12, uv, a CopilotKit account, an OpenAI API key, and permission to install an app in a Slack workspace.

1. Clone OpenTag and install its dependencies

git clone https://github.com/CopilotKit/OpenTag.git
cd OpenTag
pnpm install

2. Create the managed Channel

Create the Channel before creating the Slack app. The Channel setup generates a Slack manifest with the correct request URL. The guided command installs a setup skill for a compatible coding agent:

npx --yes copilotkit@latest channels setup

You can also select the CopilotKit project and add the Channel yourself:

npx --yes copilotkit@latest project select
npx --yes copilotkit@latest channels add --name open-tag --display-name "OpenTag" --adapter slack --json

Follow the returned nextAction when setup pauses for work in the Slack console. Reinstall the app after applying the manifest, then collect the Bot User OAuth Token and Signing Secret requested by the adapter. This managed path does not use a Socket Mode xapp token.

3. Configure the environment

cp .env.example .env

Add the model key, local agent address, Intelligence API key, and Channel name to the root .env file:

OPENAI_API_KEY=sk-...
AGENT_URL=http://localhost:8123/
INTELLIGENCE_API_KEY=cpk-...
INTELLIGENCE_CHANNEL_NAME=open-tag

4. Start the stack

The command prepares the locked Python environment, installs Playwright Chromium, and starts both the Python agent and Node runtime in development mode.

pnpm dev

5. Invite and test the bot

Invite OpenTag to the target Slack channel before sending a mention:

/invite @OpenTag

Mention the bot from a human account and request a concrete result. Follow-up messages in that thread can continue without another mention because the first mention subscribes the thread.

@OpenTag summarize this thread and draft a Linear issue

If the bot does not answer, inspect the Channel declaration, adapter, environment, and lifecycle state:

npx --yes copilotkit@latest channels status --json

6. Add optional research and workspace sources

SourceEnvironment settingPurpose
TavilyTAVILY_API_KEYLive web research
GitHubGITHUB_PERSONAL_ACCESS_TOKENRead-only repository, code, issue, and pull request search
PostHogPOSTHOG_PERSONAL_API_KEYRead-only analytics queries through MCP
LinearLINEAR_API_KEYIssue search and approval-gated writes
NotionNOTION_MCP_URL and NOTION_MCP_AUTH_TOKENPage access and approval-gated writes through remote MCP

Related Resources

Pros

  • MIT-licensed and fully customizable.
  • Works with Slack and Microsoft Teams.
  • Requires approval before Linear or Notion writes.
  • Accepts other AG-UI-compatible agents.

Cons

  • Requires a multi-part local setup.
  • Requires paid OpenAI API usage.
  • Limited to Slack and Microsoft Teams.
  • Requires Slack admin access and a CopilotKit account.

FAQs

Q: Do I need a CopilotKit account to run OpenTag?
A: The official managed Channel quick start requires a CopilotKit account and Intelligence API key. You can operate the channel connection with the open-source Channels SDK if you do not want the managed runner.

Q: Does OpenTag require Linear or Notion?
A: No. OpenTag can chat, triage requests, and render interface components without either integration. Each source registers only after you provide its required credentials.

Q: Which model providers work with the included agent?
A: The official quick start requires an OpenAI API key. The runtime can connect to another AG-UI-compatible agent through AGENT_URL, but the repository documents its included Python LangGraph agent as the supported backend.

Q: Does OpenTag use Slack Socket Mode?
A: No. Slack sends events to a CopilotKit Intelligence-hosted HTTPS request URL. The OpenTag runtime opens an outbound authenticated WebSocket connection to Intelligence. The managed setup needs neither a Socket Mode xapp token nor your own public tunnel.

Q: Why does OpenTag ignore a Slack mention?
A: Confirm that you invited the bot to the channel. Slack does not send an app_mention event for a conversation where the app is absent. Run channels status --json if the bot is present but silent.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get the latest & top AI tools sent directly to your email.

Subscribe now to explore the latest & top AI tools and resources, all in one convenient newsletter. No spam, we promise!