Skip to main content

Documentation Index

Fetch the complete documentation index at: https://alfred.black/docs/llms.txt

Use this file to discover all available pages before exploring further.

What a Connected App is

A Connected App is Composio’s name for a third-party service Alfred has been authorised to use on Sir’s behalf. Connect Gmail and Alfred can read your inbox AND send mail. Connect GitHub and Alfred can read your notifications AND open pull requests. Connect Notion and Alfred can pull your pages AND update them. Every Connected App gives Alfred two things:
  1. Data in — a stream that polls the app on a schedule (every 5 minutes for most, longer for slower-changing sources like Notion), turning new items into vault records via zero-LLM templates.
  2. Actions out — gateway tools the agent can invoke conversationally: “send Sarah an email”, “schedule a 30-minute slot on Wednesday”, “open a PR with these changes”.
Credentials live in Composio’s vault — never on Sir’s tenant. Composio holds the OAuth tokens; Sir’s instance only stores the connection ID.

The catalogue

Over 1,000 apps are available. The Apps page in the dashboard browses the live Composio catalogue, classified into:
  • Communication — Gmail, Outlook, Slack, Discord, Teams, Telegram, WhatsApp, Twilio, SendGrid, Mailchimp, Mailgun
  • Productivity — Notion, Todoist, Trello, Asana, ClickUp, Monday, Evernote, OneNote
  • Dev tools — GitHub, GitLab, Bitbucket, Jira, Linear, Sentry, Vercel, Netlify, Heroku
  • Finance — Stripe, PayPal, Square, QuickBooks, Xero, Plaid, Wise
  • Calendar — Google Calendar, Calendly
  • Storage — Google Drive, Dropbox, Box, OneDrive
  • CRM — HubSpot, Salesforce, Pipedrive, Zoho
  • Database — Airtable, Supabase, Firebase
  • E-commerce — Shopify, WooCommerce
  • Social — Twitter, LinkedIn, Facebook, Instagram, YouTube, TikTok, Reddit
  • Support — Zendesk, Intercom, Freshdesk
  • Other — anything else in the catalogue, classified by Composio’s metadata
The catalogue is cached for one hour on Sir’s tenant; new entries Composio publishes show up on the next refresh.

Connecting an app

1

Open Apps in the dashboard

Click Apps in the sidebar. The page shows your already-connected apps at the top, with the catalogue beneath.
2

Pick the app and click Connect

For OAuth apps (most of them — Gmail, Calendar, Slack, GitHub, Notion, …) the dashboard opens an OAuth popup pointing at the provider. Sign in, approve the requested scopes.For API-key apps, the dashboard shows a single field; paste the key and submit. Composio supports both flows via the same Apps page.
3

Auto-config runs

Once Composio confirms ACTIVE on the connection, your tenant fires POST /api/v1/integrations/:id/auto-config. This single call:
  • Creates a Composio-backed pull stream (if the toolkit has a recommended read action — Gmail’s GMAIL_FETCH_EMAILS, Calendar’s GOOGLECALENDAR_EVENTS_LIST, GitHub’s notifications feed, Notion’s NOTION_FETCH_DATA, …)
  • Registers a Temporal schedule (typically 5-minute polling, 10 minutes for Notion)
  • Adds the relevant composio_execute action prefixes to gateway.tools.allow in both the main and workers openclaw configs
  • Generates an alfred-composio-<toolkit> SKILL.md in the workspace, listing every available action with arguments
During this ~40s window, a “Configuring …” banner appears at the top of the dashboard. The gateway briefly restarts to pick up the new tools.
4

The agent learns the new app

After the gateway is back, the main agent can immediately invoke the new actions. From any Slack DM or web chat, “send Sarah at acme.com a quick note about the proposal” routes to composio_execute({action: "GMAIL_SEND_EMAIL", arguments: {...}}) automatically. No manual configuration.

Per-app stream + tool controls

The Apps page lets Sir control each connected app independently:
ControlEffect
Pause streamStops polling. Existing events stay in the vault; new ones won’t arrive until resumed.
Migrate streamSwitch the stream to a different action slug (preserves config). Useful when Composio renames an action — happened with GITHUB_LIST_NOTIFICATIONSGITHUB_LIST_NOTIFICATIONS_FOR_THE_AUTHENTICATED_USER.
Disable streamRemoves the stream config and Temporal schedule entirely. Tool actions still work.
Enable / disable individual tool actionsAdd or remove a specific composio_execute action slug from the gateway allowlist. The gateway restarts after each change.
ReconfigureRe-runs OAuth from scratch (useful if scopes changed or the token was revoked upstream).
DisconnectRemoves the Composio connection, the stream, every tool, and the SKILL.md. Clean teardown.

What “auto-config” picks for each app

The recommended stream + default args per toolkit:
ToolkitRecommended streamPoll intervalDefault args
gmailGMAIL_FETCH_EMAILS5 min{userId: "me"}
googlecalendarGOOGLECALENDAR_EVENTS_LIST5 min{calendarId: "primary"}
githubGITHUB_LIST_NOTIFICATIONS_FOR_THE_AUTHENTICATED_USER5 min{}
notionNOTION_FETCH_DATA10 min{get_pages: true, get_databases: true, page_size: 50}
slack(no auto-stream — needs a channel ID)configure manually if desired
Tool actions are auto-classified read vs write by verb (FETCH/GET/LIST/SEARCH → stream; SEND/CREATE/UPDATE/REPLY → tool). The auto-config picks every write verb in the toolkit and adds it to the gateway allowlist.

Per-tenant isolation

Composio is a shared third-party service, but every Alfred tenant has its own COMPOSIO_USER_ID. Connections, OAuth tokens, and API keys are scoped to the user_id and never leak across tenants. This is enforced server-side by the ctrl-api: every call to Composio is filtered by user_id, and every connection lookup verifies ownership before returning details.
If you ever see a connected app in your dashboard that you didn’t connect, that’s a bug — open a support ticket. The isolation invariant is non-negotiable.

What the agent sees

For every connected app, the agent’s workspace gets a generated alfred-composio-<toolkit>/SKILL.md. The skill lists every available action in a markdown table:
| `GMAIL_SEND_EMAIL` | tool | Send an email via Gmail |
| `GMAIL_FETCH_EMAILS` | stream | Fetch the user's emails |
...
The agent invokes any action by calling the composio_execute gateway tool with {action, arguments}. The skill file documents the most common arguments and gotchas per app. If you ever change an app’s action set on Composio’s side, hit Regenerate skills from the Apps page. It rewrites every connected app’s SKILL.md from the current template.

Streams & Integrations

The mechanics of streams, pull modes, and zero-LLM ingest

Recipes

Concrete examples — send an email, post to Slack, open a PR

Your AI Agents

Who actually invokes these tools

Email Channel

Sir’s own AgentMail inbox vs Gmail-via-Composio