Connecting Channels

Channels connect Themis to external services. All channel credentials are configured per-space by space owners or managers.

Available Channels

ChannelCapabilitiesAuth
GitHubReview PRs, check CI status, browse code, create issuesGitHub App install
LinearCreate and manage issues, track projects, triage bugsPer-space API key
SentryMonitor errors, triage alerts, update issue statusPer-space API token
MetabaseQuery databases, generate charts, analyze business dataPer-space API key
Google DriveSearch and read documents from shared drivesPer-user OAuth
Google CalendarInspect and manage events, free/busy lookups, OOO + focus timePer-user OAuth
GmailRead, search, label, archive; does not sendPer-user OAuth
Google AnalyticsQuery GA4 properties, custom reports, realtime metricsPer-space service account
Google MapsGeocoding, places, directions, distance matrix, weather, air qualityPer-space API key
Flight SearchSearch flights and flexible dates via Google FlightsNo credentials (opt-in)
Microsoft TeamsChat with Themis in Teams channels and DMsPer-space bot app
TelegramChat with Themis via Telegram bot, send voice messagesPer-space bot token

Setting Up a Channel

  1. Go to Space Settings (gear icon in the sidebar)
  2. Select Channels
  3. Choose the service you want to connect
  4. Enter the required credentials (API tokens, secrets)
  5. Save — Themis will validate the connection

Each channel shows its required and optional fields with hints about where to find them. Credentials are stored encrypted and displayed as masked values after saving.

GitHub

Themis authenticates via the Themis AI Agent GitHub App — no Personal Access Tokens. Click Install GitHub App in channel settings; once the install completes, the space stores its installation_id and tokens are minted on demand. See GitHub App Setup for deployment-level registration.

Bot aliases (optional, used for self-mention filtering):

FieldPurpose
Bot AliasesExtra GitHub logins that should trigger Themis — matched in @-mentions and as PR reviewer requests. Comma-separated. The app’s own bot is already included, so this is only needed when you also want an alternate handle (e.g. a staging install) to trigger the agent.

Code-generation commits are attributed to the triggering user’s git identity (set in Profile), with the GitHub App as the pusher.

Linear

Uses an API key from Linear’s Settings > API. The Linear MCP server is hosted by Linear — no local installation needed.

Linear settings:

FieldPurpose
Organization SlugYour Linear org slug (e.g., my-org). Used to build issue URLs in PR descriptions and the inbox. Falls back to THEMIS_LINEAR_ORG_SLUG. Leave blank and Linear links are omitted silently.
Bot Display NamesComma-separated Linear display names or email fragments that identify this bot (e.g., Themis,themis@). Used for self-reply prevention and to detect when an issue is assigned to the bot. Falls back to the agent’s display name.

Assigning a Linear issue to a user matching one of the Bot Display Names triggers code generation on the issue.

Sentry

Requires an auth token with project and issue permissions. Optionally configure an organization slug for scoped access.

Metabase

Requires the Metabase Instance URL and an API Key (Metabase Admin > Settings > Authentication > API Keys). The Metabase MCP server must be installed on the host and on the application’s PATH (override with METABASE_MCP_COMMAND if needed).

Teams

Requires a Bot Framework app registration with app ID, password, and tenant ID. See the Microsoft Teams Bot Framework documentation for setup.

Telegram

Requires a bot token from @BotFather. Themis provides buttons to set up and verify the webhook automatically. Configure an allowed chat IDs list to restrict which groups the bot responds in.

Google Drive, Google Calendar, and Gmail

Three Google Workspace channels share a single per-user OAuth flow — each user connects their own Google account via Profile > Connections. No space-level credentials needed; each channel has its own scope and toolset:

ChannelScopeTools
Google DriveRead-onlySearch, list, read file contents, permissions, shareable links
Google CalendarRead + writeList calendars, read/create/update/delete events, free/busy, OOO, focus time
GmailOrganize (read + label + archive; no send)Search, read messages, label management, archive, trash

Enable each channel in the space and have each user authorize through their profile. Channels are available in chat only while the speaker has connected their Google account.

Google Analytics

Requires a GCP service account JSON with the Analytics Admin API and Analytics Data API enabled in the same project. In GA4 admin, grant the service-account email Viewer on the property you want to query.

FieldPurpose
Service Account JSONFull JSON body of the service-account key. Stored encrypted; materialized on disk only when the MCP server spawns, keyed by a SHA of the content.
GCP Project ID (optional)Sets GOOGLE_CLOUD_PROJECT on the MCP process.

Exposes GA4 account discovery, property details, custom dimensions/metrics, core reports, and realtime reports.

Google Maps

Requires a Google Cloud API key with the Maps Platform APIs enabled (Places, Geocoding, Directions, Distance Matrix, Elevation, Time Zone, Weather, Air Quality). Generate a key in the GCP console and paste it into the channel.

Exposes nearby + text search, place details, geocoding (forward/reverse/batch), directions, distance matrix, route planning, elevation, timezone lookup, weather, and air quality. High-token composite tools are disabled by default.

No credentials — the MCP server hits Google Flights’ public API. Spaces must still enable the channel explicitly, otherwise the tools would burn tokens in contexts that don’t need them. Exposes search_flights (specific dates) and search_dates (flexible-date calendar). Results are capped at 20 by default (FLI_MCP_MAX_RESULTS) so chat context stays tight.

Webhooks

To receive real-time events, register webhook URLs in your external services:

ServiceWebhook URLEvents
GitHubhttps://yourhost/webhooks/githubPull requests, issues, comments, pushes
Linearhttps://yourhost/webhooks/linearIssues, comments
Sentryhttps://yourhost/webhooks/sentryIssue alerts
Teamshttps://yourhost/webhooks/teamsChannel messages
Telegramhttps://yourhost/webhooks/telegramMessages, voice notes

Webhook authentication is handled automatically — GitHub uses HMAC signatures, Linear uses JWT, Telegram uses signed requests. Themis resolves the target space by matching the webhook secret.