Skip to main content

Chat surfaces

Chat surfaces are external messaging apps—today primarily Slack—that Toby can both use as tools and listen to as a conversation channel. This page is the map for that story. Provider-specific credentials and app setup live in the Slack guide; global switches live under Inbound chat.

Two directions

DirectionWhat it meansWho starts the conversation
Outbound (tools)From Toby.app (or schedules), the model searches channels, reads history, or posts messages through the chat integrationYou, in Toby
Inbound (@mentions)Someone messages or @mentions Toby in Slack; the local service runs a full chat turn and replies in the threadCoworkers (or you) in Slack

You can enable tools only, inbound only, or both. They use related but not identical credentials—especially on Slack.

Outbound: use Slack from Toby

  1. Connect the Slack integration (OAuth is recommended for chat tools).
  2. In Toby.app chat, ask about channels, history, or posting—or scope with the integration picker / slack … prefix.
  3. Optionally set Chat as your default provider under Settings → Default Providers when multiple chat apps exist later.

Outbound tools do not require inbound to be on. For Slack, OAuth stores a user token so actions run as you, not as a bot (unless you use the bot-token auth path for tools).

Deep dive: Slack integration — app manifest, OAuth, scopes, Connect.

Inbound: let Slack drive Toby

Inbound turns use the same assistant pipeline as the Mac app: persona, skills, memory, and other connected integrations (for example “check my email” from a Slack mention can still load Email tools).

Requirements (conceptual)

  1. Local service running — Toby.app normally starts it; inbound listens in the background.
  2. Global inbound settingsSettings → Chat: enable, pick Active integration (e.g. Slack), choose a persona.
    Details: Inbound chat.
  3. Integration connected and inbound-capable credentials filled in (Slack needs bot + app tokens and Socket Mode—not just OAuth user token).
    Details: Slack → Inbound @mentions.

What users experience

  • @mention Toby (or message the bot per your Slack app setup) in a channel or thread.
  • Toby processes the turn under the inbound persona and replies in context.
  • Conversation maps to a Toby session keyed by the external thread so follow-ups stay coherent.

Only one inbound integration is active globally at a time.

Slack checklist (both modes)

Use this when you want Slack as a full chat surface:

StepTools (outbound)Inbound
Create Slack app (manifest recommended)YesYes (include bot + Socket Mode)
OAuth Client ID/Secret + ConnectRecommendedOptional for tools; still useful
Bot Token (xoxb-…)Bot-token auth path onlyRequired
App Token (xapp-…, Socket Mode)NoRequired
Settings → Chat enable + active = SlackNoRequired
Setup Guide in Toby.appRecommendedRecommended

Step-by-step Slack UI and token tables: Slack.
Global switches only: Inbound chat.

How this fits the rest of Toby

TopicRole with chat surfaces
PersonasInbound uses the persona selected under Settings → Chat (or default)
Default providersPrefer Slack for the Chat category in multi-integration chat and schedules
SchedulesCan use Slack tools on a cron; inbound is separate (event-driven)
ArchitectureDaemon + plugins share one harness; inbound is a long-lived plugin process
PluginsNew chat apps implement protocol tools and optional inbound run

Adding another chat app later

Slack is the reference Chat provider. A future messaging integration would:

  1. Ship as a plugin with chat tools and providerCategories: ["chat"].
  2. Optionally implement inbound (Socket Mode / webhooks / long-lived inbound run) so it can appear under Active integration.
  3. Follow the same split: Connect for tools, Settings → Chat for listening.

Until then, treat Slack as the complete setup guide and this page as the product overview.