Skip to main content

External Integrations Reference

This is the cross-cutting index of every external service SABLE integrates with — connector sources are covered page-by-page under Connectors; this page adds the delivery and infrastructure services that sit alongside them.

Connector sources

ServiceStatusDirectionNotes
Fathom🟢 LiveReadMeeting transcripts via signed webhook + 4-hourly reconciliation poller
Granola🟡 Built, needs client keyRead30-min poller; blocked on client GRANOLA_API_KEY
Asana🟢 Live / gated actRead live; write gatedREST mirror plus approved-write executor behind ASANA_ACT_WRITES_ENABLED
Toggl🟢 BuiltReadDrift check + opt-in hours refresh; never rewrites the master project list
Google Calendar🟢 LiveRead live; write gatedFree/busy + event cache; approved-write executor behind CALENDAR_ACT_WRITES_ENABLED
Google Drive🟠 Paused by decisionReadRecursive, restart-safe refresh exists and is tested, but its schedule was retired (#217); project folders are link-only and evidence goes through Library instead
Gmail🟡 Built, needs Workspace approvalReadDomain-wide delegation, gmail.readonly; needs Workspace super-admin approval and a narrow query
HubSpot🟡 Built, gatedRead504 companies / 2,177 contacts / 103 deals synced; write path double-gated off
Resend inbound email🟢 LiveReadBCC/forwarded mail via signed webhook + 10-minute recovery poller

See Connectors overview for the shared architecture pattern, and the per-connector pages for setup and payload detail.

Delivery services

ServiceUsed forNotes
ResendOutbound email (morning/EOD boards, alerts) and inbound email receivingAll four send paths read RESEND_FROM/SABLE_ALERT_FROM rather than hardcoding a sender — a board or alert with no configured sender does not attempt to send from an unverified domain.
SlackBoard delivery to SlackRequires a bot token with chat:write.

AI providers

Covered in full on AI Providers Reference — Anthropic (Claude, generation/chat/vision OCR), Voyage AI (embeddings/rerank), and Exa (opt-in public-web research).

Infrastructure services

ServiceRoleNotes
VercelWeb app hosting (sable-agents-demo/web), serverless api/*.js functionsProject sable, team cprinos-7741s-projects, production domain https://sable.indigotrigger.ai. Deployment is Git-only — see Deployment.
SupabasePostgres database, Auth, Storage, Edge FunctionsProject ref fvngkfrmienkltuwtoxa.
Trigger.devDurable scheduled/background task executionReplaces most pg_cron scheduling — see Trigger Task Groups.
GitHubSource control, CI, PR-gated production releasesOrg Indigo-Trigger, repo indigo-trigger-engagement.
GitNexusLocal code-intelligence index for AI-assisted developmentRoot-only setup script (npm run setup:gitnexus); loaded via .mcp.json inside sable-agents-demo/.

Scheduling authority

Trigger.dev is the production scheduler for connector refreshes, reports, documents, and watchdogs. A handful of legacy pg_cron jobs still exist as reconciliation schedules for individual connectors (Fathom, Granola) that intentionally overlap the Trigger-scheduled sync with a lower-frequency, longer-lookback safety net — not because Trigger is unreliable, but because a webhook or primary poller missing an item is cheaper to catch with periodic overlap than to chase after the fact. Keep only one primary scheduler per connector so refreshes don't race each other.

Go-live decisions still open

  • Granola needs a client workspace API key (GRANOLA_API_KEY) before its poller can run for real — it is otherwise fully built.
  • Gmail needs a Workspace super-admin to approve the restricted gmail.readonly scope, an operator-configured narrow GMAIL_SYNC_QUERY, and the organization's security/privacy and retention review — domain-wide delegation authorization alone is not the whole governance step.
  • HubSpot needs a matching-strategy decision (exact-name-only vs. fuzzy + domain-based) before the real write path is armed; auth already works and the read sync already runs.
  • Drive is a reversal candidate, not a build: turning the scheduled refresh back on is a one-line scheduling change in trigger/connectors.ts, not new code — see the Drive connector page for why it was paused.

sable-agents-demo/CONNECTOR-SETUP.md still describes Drive as live on a six-hour schedule; that status table predates #217 and should be corrected there too.

Where the code lives

  • sable-agents-demo/CONNECTOR-SETUP.md — the canonical connector architecture and status doc (note: its Drive row is currently stale — see above).
  • sable-agents-demo/supabase/functions/*/index.ts — one Edge Function per connector.
  • sable-agents-demo/trigger/connectors.ts — the Trigger-scheduled connector refresh tasks.
  • sable-agents-demo/env-manifests/sable-supabase-edge.json, sable-web.json, sable-trigger.json — the environment-variable inventory for every service above.