Saltar al contenido principal
Una integración enlaza tu workspace con un sistema que Driftless no posee: una fuente de records, documentos o acciones que vive en el producto de otra empresa. La conectas una vez y, a partir de ahí, Driftless puede leer (y, donde esté habilitado, actuar) a través de un enlace acotado, auditado y limitado al workspace. Esta página es el mapa de esa superficie: cómo un proveedor se vuelve una Connection, qué te da y qué no te da una Connection, y qué proveedores están realmente operativos hoy. Los verbos de ejecución (operations, invoke, records y el resto) viven en la referencia del Broker.

Qué es una integración

Tres palabras se usan como sinónimos y no deberían serlo:
  • Proveedor es el sistema externo en sí: Notion, HubSpot, GitHub. Un proveedor es conectable solo si Driftless incluye un conector para él (ver Disponibilidad por proveedor). Aparecer en un catálogo externo no equivale a estar operativo en Driftless.
  • Connection es un enlace autorizado y con credenciales desde tu workspace hacia un proveedor, guardado como una integración de tipo nango:<proveedor>. Es lo que opera el Broker.
  • Integración es el enlace guardado en general. Hoy existen dos tipos: las Connections del Broker (nango:<proveedor>) y la GitHub App (github), que es otra superficie con otro propósito (ver Disponibilidad por proveedor).
Conectar un proveedor no hace por sí solo que sus datos aparezcan en el retrieve de contexto. Los datos externos no son Knowledge. Solo llegan al retrieve tras un paso explícito de index y una petición de retrieve de fuente externa explícita. Ver Broker: lecturas y materialización.

Disponibilidad

La superficie de Broker y Connections está gated. Está apagada por defecto en producción y se enciende por entorno; la lane externa para agentes es un interruptor aparte encima de eso. Estados de verdad usados en estas páginas:
EstadoSignificado
AvailableShipped y utilizable ahora.
BetaShipped y utilizable, todavía estabilizándose.
GatedExiste pero se retiene salvo que un flag, rollout o grant lo abra.
InternalPresente en el código para uso interno/staging; no es una capacidad pública.
StubUn placeholder declarado sin sync ni acción viva.
Not availableNo shipped como capacidad utilizable.
Hoy el único conector de producción es Notion, de solo lectura (Beta). Las operaciones de escritura no están expuestas para ningún proveedor en producción.

Conectar un proveedor

El setup ocurre en el dashboard o en el CLI, nunca por MCP. Conectar es un flujo privilegiado y guiado por un humano: establece credenciales, que Driftless nunca guarda ni ve (viven en el vault de credenciales y se inyectan server-side).
driftless integration catalog            # proveedores que puedes conectar
driftless integration connect notion     # inicia el flujo de autorización
driftless integration confirm notion     # persiste la connection tras autorizar
driftless integration list               # tus integraciones conectadas
driftless integration rm <integration-id>   # desconectar (alias: delete, disconnect)
En el dashboard el mismo flujo es Settings -> Connections. Reconectar una connection expirada es re-autorizar (corre connect de nuevo, o usa la acción de reconexión del dashboard). Desconectar revoca la credencial en el vault. Ninguno de estos verbos existe en la superficie MCP: un agente opera una connection que ya existe, nunca conecta ni desconecta una.

Estado de la Connection

Una Connection reporta un estado plano, derivado en el servidor. El CLI (driftless broker connections) y el dashboard renderizan el mismo valor.
EstadoSignificado
disconnectedSin credencial viva; conecta o reconecta.
needs_reconnectLa credencial expiró o fue revocada en el proveedor.
setup_failedEl flujo de conexión no terminó de aprovisionar.
no_syncsConectada, pero aún sin sync configurado.
syncingEl primer sync (o uno posterior) está corriendo.
sync_failedEl último sync falló; se muestra el error.
synced_emptySincronizada, pero no se compartió nada para leer (comparte una página/base).
syncedSaludable: hay records disponibles.

Capabilities y su estado

Una capability es una cosa que una Connection puede hacer: un sync, un record model, una read action, contenido de documento o una write policy (declarada pero deshabilitada). El capability directory reporta cada una con su propio estado, distinto del de la Connection:
Estado de capabilitySignificado
declared / deploy_pending / deployedAprovisionándose; aún no utilizable.
deploy_failedEl aprovisionamiento falló.
sync_starting / syncingSe están espejando datos; aún no lista.
readyUtilizable ahora.
emptyLista, pero aún sin records.
needs_reconnectBloqueada por una credencial vencida.
gatedRetenida por rollout o por un grant faltante.
disabledApagada, o una escritura declarada-pero-deshabilitada.
unsupportedNo ofrecida para este proveedor.
Solo una capability con estado ready es utilizable. gated y disabled son los estados que más fácil se confunden con “disponible”: la capability es real y está registrada, pero el entorno o tus grants la mantienen cerrada.

De conectado a utilizable

Una Connection OAuth saludable es el primer peldaño, no la meta. Para que un agente externo pueda de verdad invocar una capability, cada eslabón de esta cadena debe cumplirse:
  1. Proveedor con un conector en el registry de Driftless (con su propio rollout: internal, beta o ga).
  2. Connection saludable (synced).
  3. Capability que llegó a ready.
  4. Rollout / lane externa abierta: el Broker habilitado y la lane externa OAuth/MCP encendida.
  5. Grant existente: un owner/admin concedió al principal que llama acceso para ese proveedor y efecto.
  6. Operación permitida por la política.
Un caller interno (una sesión humana del dashboard, o una API key propia que porta una identidad humana) se salta el gate de grant pero necesita el resto. Un bearer OAuth/MCP sin rostro y sin grant ve una lista de connections vacía, incluso para una connection perfectamente saludable. Ver Broker: gates.

Permisos y grants

  • El setup (connect, confirm, disconnect) es una acción de miembro del workspace, por CLI o dashboard. No es alcanzable por OAuth/MCP.
  • Las lecturas y escrituras por el Broker se gobiernan por identidad y scopes para callers internos, y además por rollout más grants para callers externos (OAuth/MCP).
  • Un grant es una fila de autorización gruesa: { principal, proveedor, efecto }, con comodines *, fail-closed (sin grant, sin acceso). Gestionar grants es solo owner/admin y se hace por la API o el dashboard, no por la superficie del agente.

Disponibilidad por proveedor

Basada en evidencia, del connector registry y la política de operaciones. “Import” significa mapear records espejados a Records de Collection; “Index” significa materializar contenido de páginas en connector documents propios de Driftless para retrieve. En producción, las escrituras no son invocables para ningún proveedor (el registry de política de operaciones va vacío), así que toda celda “Writes” abajo es Not available hoy.
ProveedorConnectionReadsWritesImportIndexRetrieveEstado
NotionAvailableAvailableNot availableAvailableAvailableAvailable (tras index)Beta, solo lectura
HubSpotGatedGatedNot availableNot availableNot availableNot availableInternal
Google DriveNot availableNot availableNot availableNot availableNot availableNot availableStub
Google DocsNot availableNot availableNot availableNot availableNot availableNot availableStub
GitHub AppAvailablen/an/an/an/an/aAvailable (superficie aparte)
GitHub (Broker)Not availableNot availableNot availableNot availableNot availableNot availableNot available
La GitHub App y una Connection GitHub del Broker son superficies distintas. La GitHub App (type: github) observa pull requests y pushes para evitar que el contexto derive y para alimentar al Auditor; no es una Connection del Broker y no expone invoke. Una Connection GitHub del Broker (type: nango:github) para escrituras como crear un issue no está shipped (no hay entrada en el connector registry). Las referencias a operaciones de GitHub en descripciones de tools son solo ilustrativas.

Cómo usa Driftless a Nango

Nango es el vault de credenciales y el substrato de ejecución detrás de las Connections del Broker. Es dueño del handshake OAuth, guarda las credenciales del proveedor cifradas y las inyecta server-side por petición, de modo que un secreto nunca llega al código de aplicación de Driftless, al CLI, a MCP ni a un modelo. Driftless solo pasa una clave de config de proveedor y un id de connection. Una consecuencia importa al leer esta superficie: el catálogo de Nango es de Nango, no una lista de disponibilidad de Driftless. Un proveedor que Nango técnicamente puede conectar solo está operativo en Driftless si tiene entrada en el connector registry de Driftless y una política de operación permitida. Por eso Disponibilidad por proveedor es más corta que cualquier catálogo externo.

Relacionado