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 is | Where | |
|---|---|---|
| Integrations | Services the agent can reach and act in, as you. Outbound. | Settings > Connect > Integrations |
| Channel adapters | Bots that let somebody message the agent from Telegram, Slack or Signal. Inbound. | Settings > Connect > Integrations > Channels |
| The Channels screen | Your 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.
| Service | Tool | Capabilities |
|---|---|---|
| Microsoft 365 | outlook | Email (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) |
| Slack | slack | Search 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)
| Channel | Where | Requirements |
|---|---|---|
| Telegram | Settings > Connect > Integrations > Channels | Bot token (from Telegram's @BotFather), plus your chat id or an allowed-users list |
| Slack | Settings > Connect > Integrations > Channels | Bot token (xoxb-) and app-level token (xapp-, with connections:write), plus the channel ids it may answer in |
| Signal | Settings > Connect > Integrations > Channels | A 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.
| Channel | Skill | Requirements |
|---|---|---|
| Microsoft 365 (Outlook) | outlook integration | Connect under Settings > Connect > Integrations (OAuth) |
| Email (CLI) | himalaya | himalaya CLI tool |
| Gmail | browser_extension | Logged into Gmail in Chrome |
| Outlook | browser_extension | Logged into Outlook in Chrome |
Smart Home
| Channel | Skill | Requirements |
|---|---|---|
| Spotify | spotify / spotify-player | Spotify account |
| Sonos | sonos | Sonos speakers on network |
Setting Up a Channel
Method 1: Channel adapters (Telegram, Slack, Signal)
- Open Settings > Connect > Integrations and pick the Channels tab
- 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
- 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:
- Install the Chrome Extension
- Log into the service in Chrome
- 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:
- Create a custom skill with instructions for the agent
- Use the
exectool to run CLI commands for the service - Use the
browser_extensionto 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.