> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fabric.bulldogtechnologies.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Connectors

> Five content connectors, two database drivers. OAuth where possible, encrypted credentials where not.

Connectors pull content from external services into Fabric's knowledge graph on a schedule. **Configure once — Fabric handles everything after.**

<Info>
  Most RAG tools require manual document uploads. Fabric's connector model keeps your knowledge base current automatically — new emails, docs, and messages appear on the next sync cycle with nothing for you to remember to do.
</Info>

## Content connectors

<CardGroup cols={2}>
  <Card title="Gmail" icon="envelope" href="#gmail">
    OAuth 2.0 · per-message sync · 5 typed edges
  </Card>

  <Card title="Google Drive" icon="folder" href="#google-drive">
    OAuth 2.0 · per-file sync · in-folder edges
  </Card>

  <Card title="Slack" icon="hashtag" href="#slack">
    OAuth 2.0 · per-channel sync · posted-in edges
  </Card>

  <Card title="Fireflies" icon="microphone" href="#fireflies">
    OAuth 2.0 · per-transcript sync · attendance edges
  </Card>

  <Card title="IMAP" icon="inbox" href="#imap">
    Credentials · per-UID sync · generic email
  </Card>

  <Card title="PostgreSQL / MySQL" icon="database" href="#databases">
    Credentials · live schema + query execution
  </Card>
</CardGroup>

## Gmail

| Property     | Detail                                                             |
| ------------ | ------------------------------------------------------------------ |
| **Auth**     | OAuth 2.0 — no passwords stored                                    |
| **Sync**     | Incremental by message ID, typically every 15–30 min               |
| **Extracts** | Thread content, sender/recipient relationships, subjects, dates    |
| **Edges**    | `sent_by`, `replied_to`, `in_thread`, `participant`, `from_domain` |

Syncs email from a Google account. Preserves conversation structure. Extracts sender and recipient relationships into the graph as `person` nodes with `from_domain` edges to their domain.

## Google Drive

| Property     | Detail                                            |
| ------------ | ------------------------------------------------- |
| **Auth**     | OAuth 2.0 — no passwords stored                   |
| **Sync**     | Incremental by file modification time             |
| **Extracts** | Document text, spreadsheet content, file metadata |
| **Edges**    | `in_folder`, `authored_by`                        |

Syncs documents, spreadsheets, and files from Drive folders you select. Files link to their authors and folders in the graph.

## Slack

| Property     | Detail                                                 |
| ------------ | ------------------------------------------------------ |
| **Auth**     | OAuth 2.0 — no passwords stored                        |
| **Sync**     | Incremental by message timestamp, per channel          |
| **Extracts** | Message content, participants, channel topics, threads |
| **Edges**    | `sent_by`, `posted_in`                                 |

Syncs messages from selected channels. Preserves thread structure and captures which users participated in which conversations. Particularly useful for surfacing the tribal knowledge buried in Slack threads.

## Fireflies

| Property     | Detail                                                 |
| ------------ | ------------------------------------------------------ |
| **Auth**     | OAuth 2.0 — no passwords stored                        |
| **Sync**     | Incremental by transcript ID                           |
| **Extracts** | Meeting transcript, attendees, action items, summary   |
| **Edges**    | `attended`, `organized_by`, `has_email`, `from_domain` |

Syncs meeting transcripts. Each attendee becomes a `person` node with an `attended` edge. Transcripts are embedded and searchable alongside email and Slack — making the "who said what in which meeting" question answerable across all your communication channels.

## IMAP

| Property     | Detail                                 |
| ------------ | -------------------------------------- |
| **Auth**     | Credentials (encrypted at rest)        |
| **Sync**     | Incremental by UID per mailbox         |
| **Extracts** | Message content, headers, participants |
| **Edges**    | `participant`, `from_domain`           |

Generic IMAP mailbox sync for email providers without an OAuth connector (e.g. internal mail servers, legacy accounts).

## Databases

<Warning>
  Database connectors are **first-class** in Fabric, not API wrappers. Natural-language questions generate real SQL that runs against your real data.
</Warning>

### PostgreSQL

| Property         | Detail                                                               |
| ---------------- | -------------------------------------------------------------------- |
| **Auth**         | Credentials (AES-256 encrypted at rest)                              |
| **Driver**       | `asyncpg`                                                            |
| **Sync**         | On-demand — schema introspection on connect; queries execute in chat |
| **Capabilities** | Schema discovery, NL→SQL, live query execution                       |

### MySQL

| Property         | Detail                                                               |
| ---------------- | -------------------------------------------------------------------- |
| **Auth**         | Credentials (AES-256 encrypted at rest)                              |
| **Driver**       | `aiomysql`                                                           |
| **Sync**         | On-demand — schema introspection on connect; queries execute in chat |
| **Capabilities** | Schema discovery, NL→SQL, live query execution                       |

Both drivers connect directly. Schema becomes agent context (tables, columns, types, foreign keys). Users can ask natural-language questions or execute ad-hoc SQL via the query tool.

### On the roadmap

<CardGroup cols={3}>
  <Card title="Redshift" icon="chart-line">
    Driver integration queued.
  </Card>

  <Card title="BigQuery" icon="cloud">
    GCP-native SQL on the way.
  </Card>

  <Card title="Snowflake" icon="snowflake">
    Enterprise warehouse access.
  </Card>
</CardGroup>

The ingestion and reasoning pipelines are already driver-agnostic — each new database is a matter of wiring the async client.

## How auto-sync works

Each connector records a **sync cursor** — the last message ID, file modification time, or row timestamp it saw. Each scheduled run fetches only what changed since that cursor. Syncs stay fast even for large sources:

<Tip>
  A 100K-email Gmail account re-syncs in seconds after the initial import.
</Tip>

## OAuth vs credentials

<Tabs>
  <Tab title="OAuth (Gmail, Drive, Slack, Fireflies)">
    You authorize Fabric via the provider's own OAuth interface. **No passwords stored.** Tokens refresh automatically before expiry.

    Revoking access in the provider immediately stops Fabric from syncing that connector.
  </Tab>

  <Tab title="Credentials (IMAP, Postgres, MySQL)">
    Connection details stored with per-tenant AES-256 encryption. Used only during sync runs and query execution. **Never logged or transmitted to third parties.**
  </Tab>
</Tabs>

## Next

<CardGroup cols={2}>
  <Card title="Writing Connectors" icon="code" href="https://github.com">
    How to add a new source adapter (see repo).
  </Card>

  <Card title="Security" icon="shield" href="/security">
    How credentials and tokens are stored and rotated.
  </Card>
</CardGroup>
