Skip to content

Connector overview

A connector integrates a third-party app — your bank, calendar, inbox, password manager — so its data can flow into your vault and inform the council. Connectors show up in the apps sidebar below your domains, each with a live authentication status.

Every connector declares how it authenticates. Prevail handles the mechanics for each:

TypeHow it authenticatesExample apps
apiA stored API key or tokenPlaid, GitHub, OpenAI
oauthOAuth 2.0 with PKCE, loopback callback, and automatic token refreshYouTube Analytics, Google Calendar, Gmail
mcpA local MCP server the connector wraps1Password, filesystem tools
browserA Playwright session driving the app’s real web UILinkedIn, Stripe dashboard, AppFolio
manualYou drop exported files into a watched folderCSV exports, screenshots

The oauth runner is the most involved: it handles the PKCE challenge, spins up a loopback listener for the callback, exchanges the code, and refreshes the access token automatically when it expires — storing the refresh token at chmod 0600.

Prevail ships working examples for each auth type so you have a template to copy:

ConnectorTypeBrings in
PlaidapiBank, card, and investment transactions
1PasswordmcpPasswords and secure notes
Google CalendaroauthEvents
GmailoauthMail and labels
GitHubapiRepos and issues
LinkedInbrowserJob search, recruiter messages
YouTube AnalyticsoauthVideo performance
NotionapiPersonal wiki
GustooauthPayroll and benefits
QuickBooksoauthBusiness accounting
StripebrowserPayment volume
AppFoliobrowserRental property management
MyChartbrowserMedical records
OuraoauthSleep and activity

These live under apps/community/ and serve as both ready-to-use integrations and worked examples for building your own.

Each connector gets a folder under ~/.prevail/connectors/<id>/:

~/.prevail/connectors/plaid/
├── manifest.json metadata + auth type
├── SKILL.md human-readable overview
├── auth/ tokens & sessions (chmod 0600)
│ ├── refresh.token
│ ├── oauth.json
│ └── access-tokens/
├── skills/ runnable connector skills
│ └── sync-transactions.md
├── data/ synced data
│ └── transactions/<institution>/YYYY-MM.jsonl
└── _log/ sync runs, errors
└── YYYY-MM-DD.md

Auth and synced data stay in ~/.prevail/ (machine-local, never synced). The insights you derive from them — a monthly spending brief, say — get written into your vault like any other document.

A connector pulls structured data into a known location; your domain markdown references it; when you ask a question, that data is part of the context the council reasons over. A wealth question can draw on freshly-synced Plaid transactions; a calendar briefing can read your real upcoming events.