Channels & Integrations

Message Foxl from Telegram, Slack or Signal, let it act in Microsoft 365 and Slack as you, and read the threads those bots collect

Three different things share the word "channel" in Foxl, and it is worth separating them before anything else:

What it isWhere
IntegrationsServices the agent can reach and act in, as you. Outbound.Settings > Connect > Integrations
Channel adaptersBots that let somebody message the agent from Telegram, Slack or Signal. Inbound.Settings > Connect > Integrations > Channels
The Channels screenYour team's channels and DMs inside Foxl, plus the threads the adapters collect.Beside Chat, in Foxl Agent

The rest of this page is about the first two. The Channels screen is described in The Channels screen at the end.

OAuth Integrations

Connect services with one click from Settings > Connect > Integrations. No API keys needed - Foxl uses OAuth to act as you.

ServiceToolCapabilities
Microsoft 365outlookEmail (inbox, read, send, reply, forward, search, folders, drafts, attachments, contacts, move, categories, update), Calendar (view, meeting, availability, room booking, search, shared list), To-Do (lists, tasks, checklist)
SlackslackSearch messages, read channels/DMs/threads, send messages, open conversations, reactions, file uploads, user lookup

After connecting, the corresponding tool is automatically registered and available to the agent. Disconnecting removes the tool.

Slack Workspace Selection

By default, Slack OAuth connects to the workspace you're logged into in your browser. To connect a specific workspace, enter the workspace name (the part before .slack.com) in the input field before clicking Connect.

Available Channels

Messaging bots (channel adapters)

ChannelWhereRequirements
TelegramSettings > Connect > Integrations > ChannelsBot token (from Telegram's @BotFather), plus your chat id or an allowed-users list
SlackSettings > Connect > Integrations > ChannelsBot token (xoxb-) and app-level token (xapp-, with connections:write), plus the channel ids it may answer in
SignalSettings > Connect > Integrations > ChannelsA phone number to link by QR code, plus the numbers allowed to message it

Slack is also an outbound integration (the slack tool, connected by OAuth above) - the bot and the integration are separate connections. Discord and WhatsApp appear in the pane's form list, but no adapter can start for them yet: saving one reports that no adapter is implemented.

Social Media

There is no built-in X/Twitter skill today; use the exec tool with a CLI of your choice, or the browser extension on x.com.

Email

ChannelSkillRequirements
Microsoft 365 (Outlook)outlook integrationConnect under Settings > Connect > Integrations (OAuth)
Email (CLI)himalayahimalaya CLI tool
Gmailbrowser_extensionLogged into Gmail in Chrome
Outlookbrowser_extensionLogged into Outlook in Chrome

Smart Home

ChannelSkillRequirements
Spotifyspotify / spotify-playerSpotify account
SonossonosSonos speakers on network

Setting Up a Channel

Method 1: Channel adapters (Telegram, Slack, Signal)

  1. Open Settings > Connect > Integrations and pick the Channels tab
  2. Add a channel, paste the bot's credentials, and list who may talk to it - the list starts empty, and an empty list answers nobody
  3. Save; the card shows the adapter connecting, then connected, and later links to the conversations it has collected

Other services are reached through skills: open the Skills tab of the same page, and each skill's SKILL.md contains its setup steps, including what API keys or tools are needed.

Method 2: Browser Extension

For web-based services (Gmail, Outlook, Google Calendar, Slack web), the Chrome Extension provides direct access:

  1. Install the Chrome Extension
  2. Log into the service in Chrome
  3. Ask the agent to interact with it

No API keys needed - the agent uses your existing browser sessions.

Method 3: Shell Tools

Some integrations work through CLI tools:

# Email via himalaya
brew install himalaya
# Then: "Check my email"

Signal needs none of this - it is a built-in adapter under Settings > Connect > Integrations > Channels that drives its own signal-cli and links your number by QR code.

Example Workflows

Morning Slack Summary

"Every morning at 8am, check my Slack channels and summarize unread messages"

Uses: the slack integration + scheduling

Answering a team channel

Add your Telegram group (or a Slack channel id) under Channels and let Foxl answer questions there with your local tools.

Uses: the Telegram or Slack adapter

Email-to-Slack Bridge

"When I get an email from client@company.com, send a summary to my Slack #clients channel"

Uses: browser_extension (Gmail) + the slack integration + scheduling

Music at a set time

"At 7pm, play my Focus playlist on the kitchen speaker"

Uses: sonos or spotify skill + scheduling

Channel integrations require the desktop app. The web app (app.foxl.ai) does not run the local agent, so it cannot connect to external services or trigger outbound channel tools directly.

Adding New Channels

If you need a channel that isn't available as a built-in skill, you can:

  1. Create a custom skill with instructions for the agent
  2. Use the exec tool to run CLI commands for the service
  3. Use the browser_extension to interact with the service's web interface

The Channels screen

Channels sits beside Chat in Foxl Agent. It holds your team's channels and DMs - and, in their own group, every conversation that arrived through a channel adapter.

Conversations from Telegram, Slack and Signal

Connecting a bot under Settings > Connect > Integrations > Channels has always worked: somebody messages it, Foxl answers with your local tools, and the reply posts back to that platform. What was missing was anywhere in the app that showed a word of it - the transcript was filed as an ordinary chat, so a stranger's message landed in your own assistant sidebar between your private chats, with [telegram/alice] inlined into every line and no indication of which platform the answer went out on.

Those conversations now have their own group here, showing who wrote, what they said, and what Foxl replied. Each reply is labelled, so an answer the AI wrote can never be mistaken for one you sent.

An adapter answers only in channels you list, and the list starts empty. A message from a channel you have not added is ignored - it is not "everyone in the workspace unless you say otherwise". That default is deliberate and load-bearing: a channel-originated run uses your local tools on your machine, so the allowlist is what stands between a workspace member and a shell. Add channels under Settings > Connect > Integrations > Channels.

Two consequences worth knowing: a Slack adapter only sees messages that @-mention the bot (so it is not reading your channel history), and Slack DMs do not arrive at all.

Replying yourself

You can answer straight from the thread. Your reply goes out on the channel it came from, in the right Slack thread, and it is only recorded once the platform has actually accepted it.

Tapping a "message from Telegram" notification lands on the thread rather than on the assistant chat, and the Channels row in Settings links to the conversations it has collected.

Where the threads live

Threads live on the desktop, so they show up wherever your desktop is reachable - including a phone on the relay. They do not need a team: a user in no shared workspace can read and answer them.

A mention that arrives while your computer is asleep or the app is quit is missed, not queued. The adapter holds an outbound connection rather than a mailbox, so there is nothing to replay when it comes back. Turn on Keep running when closed if you want the machine to keep answering after you quit the app.

The Channels screen belongs to Foxl Agent only. Foxl Code's copy of it was removed - one page had two doors, so the sidebar row, the phone tab-bar entry, the unread badge and the /channels URL all existed twice and had to be kept in step by hand. On code.foxl.ai, /channels lands on Tasks like any other unknown path. Channels itself is unchanged: same channels, same messages, same unread counts, one product switch away.

Huddles

Press the headphones in a channel or DM to start a huddle. Starting one rings the other side of a DM - on their phone too - and posts a "started a huddle" line in the conversation, so the call leaves a trace and moves the conversation up the sidebar.

A huddle in a channel does not ring everybody in it; the line plus the pulsing headphones is the signal there, and the invite picker calls someone in.

A huddle invite is marked time-sensitive, so the ring can reach you inside Do Not Disturb - it expires after two minutes, which makes it the one notification that behaves like a phone call. See Notifications.

On this page