Matrix OSMatrix OS

Integrations

Connect external services like Gmail, Google Calendar, GitHub, Slack, and Discord to Matrix OS.

Matrix OS connects to external services through Pipedream Connect. You authorize once via OAuth, and your AI agent can read emails, create calendar events, post to Slack, and more -- all from conversation.

Available Services

ServiceWhat your agent can do
GmailRead, search, send emails. List labels.
Google CalendarList, create, update, delete events.
Google DriveList, read, upload, share files.
GitHubList repos, issues, PRs. Create issues. Get notifications.
SlackSend messages, list channels, search, add reactions.
DiscordSend messages, list servers and channels.

Connecting a Service

There are two ways to connect:

From Settings

Open Settings > Integrations. You'll see all available services with a Connect button. Click it, authorize in the popup, and the connection appears automatically.

From Conversation

Tell your agent what you need:

"Connect my Gmail"

The agent will give you an authorization link. Click it, authorize, done. The agent confirms once the connection is active.

You can also label connections for multiple accounts:

"Connect my work Gmail as Work Gmail"

Using Connected Services

Once connected, just ask naturally:

"What are my unread emails?" "Create a meeting with Alice tomorrow at 3pm" "Post 'deploy complete' to #engineering in Slack" "List my open GitHub issues in myorg/myrepo"

The agent uses two IPC tools under the hood:

  • connect_service -- starts the OAuth flow for a service
  • call_service -- calls an action on a connected service

Actions API

When component keys are discovered at startup, Matrix OS uses Pipedream's Actions API to execute real service components with proper auth binding. This is more reliable than raw API proxying and returns structured summaries (e.g., "Email sent to [email protected]").

Service Actions Reference

Gmail

ActionDescriptionRequired Params
list_messagesList emails matching a query--
get_messageRead a specific emailmessageId
send_emailSend an emailto, subject, body
searchSearch emailsquery
list_labelsList email labels/folders--

Optional params: query (Gmail search syntax like is:unread, from:alice), maxResults, cc.

Google Calendar

ActionDescriptionRequired Params
list_eventsList upcoming events--
create_eventCreate a new eventsummary, start, end
update_eventUpdate an existing eventeventId
delete_eventDelete an eventeventId

Date params use ISO 8601 format: 2026-04-06T09:00:00Z.

Google Drive

ActionDescriptionRequired Params
list_filesList files in Drive--
get_fileGet file metadatafileId
upload_fileUpload a filename, content
share_fileShare a filefileId, email

GitHub

ActionDescriptionRequired Params
list_reposList your repositories--
list_issuesList issues for a reporepo (e.g., owner/name)
create_issueCreate a new issuerepo, title
list_prsList pull requestsrepo
get_notificationsGet notifications--

Slack

ActionDescriptionRequired Params
send_messageSend a message to a channelchannel, text
list_channelsList available channels--
list_messagesList messages in a channelchannel
searchSearch messagesquery
reactAdd emoji reactionchannel, timestamp, emoji

Discord

ActionDescriptionRequired Params
send_messageSend a messagechannelId, content
list_serversList servers the bot is in--
list_channelsList channels in a serverserverId
list_messagesList messages in a channelchannelId

Multiple Accounts

You can connect multiple accounts for the same service. For example, a Work Gmail and a Personal Gmail. Use labels to differentiate:

"Send from my Work Gmail: email [email protected] about the Q2 report"

The agent uses the label parameter to target the right account. If no label is specified, the most recently connected account is used.

Managing Connections

View connections

"What services are connected?"

Or open Settings > Integrations to see all active connections with status indicators.

Disconnect a service

"Disconnect my GitHub"

Or click Disconnect in Settings. This revokes the OAuth credentials on Pipedream's side and removes the connection from your account.

Building Apps with Integrations

Apps you build can use connected services. When the agent creates an app that needs Gmail or Slack, the platform tracks which services each app requires:

{
  "name": "Morning Briefing",
  "integrations": {
    "required": ["gmail", "google_calendar"],
    "optional": ["slack"]
  }
}

If a required service isn't connected, the platform tells you what's missing and how to connect it.

How It Works (Architecture)

User -> Shell (Settings UI / Conversation)
         |
    Gateway (:4000)
    /api/integrations/*
         |
    Pipedream Connect SDK
    - OAuth token management
    - Actions API (component execution)
    - Credential storage
         |
    External Service APIs
    (Gmail API, GitHub API, Slack API, etc.)
  1. Gateway hosts the integration REST API and manages the platform database (users, connections, apps)
  2. Pipedream handles OAuth flows, credential storage, token refresh, and API execution
  3. Kernel exposes connect_service and call_service as IPC tools for the agent
  4. Shell provides the Settings UI for visual connection management

Environment required

Integrations require Pipedream credentials (PIPEDREAM_CLIENT_ID, PIPEDREAM_CLIENT_SECRET, PIPEDREAM_PROJECT_ID) and a platform database (PLATFORM_DATABASE_URL). See the Getting Started guide for setup.

Error Handling

ErrorWhat it meansWhat to do
"Service not connected"The service hasn't been authorized yetConnect it first via Settings or conversation
"Rate limited" (429)Too many requests to the serviceWait and try again (the retry_after field tells you how long)
"Timed out" (504)The service took too long to respondTry again or simplify the request
"Service unavailable" (503)Pipedream is temporarily downTry again in a few minutes
"Missing required params" (400)The action is missing required inputCheck the action reference above

Common Workflows

Morning Briefing

"Give me my morning briefing" -- agent reads unread emails, today's calendar, and summarizes both.

Cross-Service Automation

"Summarize open GitHub issues and post to #standup in Slack" -- agent reads from GitHub, formats, and posts to Slack.

Email + Calendar

"Email alice about the meeting and add it to my calendar" -- agent sends the email and creates the event in one conversation.

Drive Sharing

"Share the Q2 report with the marketing team" -- agent finds the file in Drive and shares it with specified emails.

How is this guide?

On this page