Connectors
First-party data-source connectors that ingest your real-world data — meetings, email, calendars, files, code, transactions, warehouses — into a typed, queryable knowledge graph your AI agents plug into.
A connector is a typed, OAuth-scoped pipeline that pulls data from an external system into your workspace ontology. Every row, message, file, or meeting it ingests becomes a typed node with typed edges to related nodes — so the same person who emails you, attends your meetings, and owns a Drive document collapses to one entity your agents can traverse.
Connectors are workspace-scoped, manifest-driven, and incremental by default. They run in the Oxagen worker, never on the consumer client, and store only the structured projection of your data — embeddings + summaries + provenance. Raw bytes are not persisted.
Available connectors
| Connector | Slug | Sync mode | Cadence | What it ingests | |
|---|---|---|---|---|---|
| Gmail | gmail | Incremental | 15m | Email subjects, bodies, attachments — people, companies, topics | |
| Google Calendar | calendar | Incremental | 30m | Events, attendees, locations, descriptions | |
| Google Meet | meet | Incremental | 30m | Meet conference records, participants | |
| Zoom Meetings | zoom | Incremental | 30m | Meetings, participants, VTT transcripts, inferred action items / deliverables / decisions / problems / opportunities | |
| Google Contacts | contacts | Full | 1h | Person directory — emails, phone, organizations | |
| Google Drive | drive | Incremental | 30m | Docs, Sheets, Slides, PDFs — file metadata + extracted text | |
| GitHub | github | Webhook + scheduled | Push-triggered | Code graph: files, functions, classes, imports, calls, commits | |
| Linear | linear | Incremental | 30m | Issues, projects, milestones, initiatives, customers, status updates — plus inferred features and edges into the code graph | |
| Plaid | plaid | Incremental | 6h | Bank + card transactions, accounts, merchants | |
| BigQuery | bigquery | Incremental | 1h | Any SQL query result with optional delta loads + cross-domain edges |
How connectors fit together
Every connector emits nodes and edges into the same workspace ontology, so the cross-source joins your agents care about happen automatically:
- A person mentioned in a Gmail thread, invited to a Calendar event, and listed as a Zoom attendee resolves to one
personnode — keyed on the lowercased email address. Display names and provenance are stored on the node; subsequent connector syncs reuse the existing node and add edges rather than minting duplicates. - A meeting can come from Calendar (the invitation), Google Meet (the conference record), or Zoom (the post-meeting summary with transcript and inferred action items). Each is a
meetingnode; cross-source edges (e.g.produced_action_item,had_attendee,attended) wire them into the same neighborhood. - A code change on GitHub creates
code.commitandcode.filenodes whoseauthored_byedges resolve to the samepersonnode that emails you and joins your meetings. - A transaction ingested from Plaid creates a
financial.transactionnode — and a BigQuery connector with avendor_emailcolumn can stamp apaid_toedge from that transaction to the existingpersonnode from Gmail, without re-ingesting any of the people.
This is why "ontology layer for AI agents" matters: your agents don't have to reconcile identities, dedupe records, or chase cross-system joins — the connector layer does it on ingest.
Installation
- Open Settings → Connections in the Oxagen web app
- Pick the connector you want and click Connect
- Complete the OAuth consent flow (or paste credentials for service-account-style connectors like BigQuery)
- The first sync runs as a background backfill — the manifest declares a default window (e.g. 90 days for Gmail / Zoom, 365 days for Calendar / Drive, 730 days for Plaid)
- Subsequent syncs are incremental and run on the cadence above
You can also install connectors via the API — see the API reference. Every connector you connect appears in the workspace's connections panel with its status, last sync time, and recent activity log.
Per-connection settings
Every connector exposes a manifest of user-tunable settings — backfill window, attachment size caps, label exclusions, MIME-type filters, sync cadence, and so on. The settings UI is rendered directly from the manifest, so adding a knob to a connector is a YAML edit, not a frontend release. Connector-specific knobs are documented on each connector's page.
Permissions and scope
Every first-party connector requests the read-only variant of every upstream scope. We never request write access. Tokens are encrypted at rest (AES-GCM via the workspace encryption key) and rotated on every refresh. Revoking a connector at Google / Zoom / your bank also revokes our copy — the next sync surfaces the revocation as a red status indicator in the UI and you can reconnect in one click.
See Security & Privacy for the full data-handling model.
Disconnecting and purging
Removing a connector soft-deletes the Connection row and revokes the upstream grant (best-effort on Google's revoke endpoint, plus the manual revoke URL if Google was unreachable). By default the ingested nodes and edges stay in your workspace — they belong to the workspace, not the connector. If you opt into Purge nodes on the disconnect dialog, a background task hard-deletes every node and edge stamped with the removed connection_id.
Events, triggers, and audits
How Oxagen turns ontology changes into observable events, how those events fire user-defined agent triggers, and how every agent run is recorded in a hash-chained, Merkle-attested audit log.
Gmail
Ingest email subjects, bodies, and attachments into the workspace knowledge graph. People, companies, and topics mentioned across your inbox become typed nodes your AI agents can traverse.