Integrations are on the v0.5.0 roadmap and not yet available in production.
Overview
3ngram uses a standardized adapter pattern for third-party integrations: auth > sync > extract > remember > surface. Each integration (GitHub, Basecamp, Linear) implements the same abstract interface for consistent auth flows, sync scheduling, and memory extraction.Data flow
- OAuth Connect: User initiates connection, backend exchanges code for tokens (encrypted at rest with Fernet)
- Sync: Initial full sync, then cursor-based incremental syncs every 15 minutes
- Extract: Adapter-specific parsing. PRs become commitments, issues become decisions, etc.
- Remember: Extracted items stored as standard 3ngram memories, deduplicated by source ID
- Surface: Integration memories appear in dashboard, MCP recall, digests, and nudges
Planned providers
| Provider | Source data | Memory types |
|---|---|---|
| GitHub | PRs, reviews, issues | Commitments, decisions, context |
| Basecamp | Todos, messages, check-ins | Commitments, blockers, decisions |
| Linear | Issues, comments, cycles | Commitments, priorities, context |
Configuration
Integrations are gated byINTEGRATIONS_ENABLED=false (default). Each provider requires its own OAuth credentials.
Security
- Tokens encrypted at rest with Fernet (key derived from
JWT_SECRETvia HKDF) - RLS policies enforce user isolation on integration data
- Sync status tracked per-integration to prevent duplicate processing