Subprocessors
Gyrence relies on a small number of third-party services to operate. Each entry lists the role the service plays, the data Gyrence sends, retention, and region.
This list covers operational subprocessors. For the full privacy posture (rights, retention, contact), see the Privacy Statement.
Subprocessor list
| Service | Role | Data sent | Retention | Region |
|---|---|---|---|---|
| Supabase | Managed Postgres, authentication, file storage | Account, workspace, API key hashes, usage logs | Life of account / billing window | US |
| Cloudflare Workers | Edge runtime for the API and console | Inbound request metadata | Operational logs only | Global edge |
| Brave Search | Backs the Search primitive | Your query, request metadata | Per Brave's policy | US/EU |
| Lovable AI Gateway | Backs the Extract primitive (LLM) | Page markdown + your extraction prompt | Forwarded, not stored by Gyrence | US |
| docABL | Binary-document renderer (PDF/DOCX/XLSX/PPTX passthrough) | Raw document bytes + content-type | Forwarded and forgotten — Gyrence does not persistently store the rendered output | US |
| Self-hosted Playwright worker | Browser-tier rendering for blocked / JS-heavy pages | Target URL | Operational logs only | US (Gyrence-managed) |
docABL — when it's invoked
Gyrence's /fetch primitive forwards the raw bytes of a recognized binary document (pdf, docx, xlsx, pptx) to docABL when the upstream content type or magic bytes match one of those kinds. docABL returns extracted markdown which Gyrence ships through the normal /fetch response shape.
When this happens, the response carries via: "docabl_passthrough", and source: "docabl_passthrough" is set on the result body. The in-product provenance chip in /app/fetch and /app/extract surfaces this; the /app/usage page shows a per-endpoint docABL call count; and each usage_events row persists an audit-grade metadata JSON blob:
{
"renderer": "docabl",
"renderMode": "passthrough",
"dataClass": "public",
"kind": "pdf",
"bytesLength": 2218394,
"docablOutcome": "ok"
}Gyrence only forwards bytes that were retrieved from a public URL submitted by your workspace. We treat passthrough payloads as data_class=public. Do not submit URLs whose contents your organization classifies above this tier without a written carve-out from us.
Honest-failure contract
docABL's outcomes are surfaced explicitly so callers (including Lacuna's FallbackClient) can route around them without guessing:
scanned_pdf_text_only_v1— image-only PDF whose OCR retries were exhausted upstream. Now rare: docABL's async OCR lane is always on for scanned and hybrid PDFs and standalone images, so most scans return unified markdown after a short wait rather than this failure.unsupported_binary— non-document binary or bare ZIP without an OOXML signal.docabl_error— docABL upstream error, timeout, or OCR still in progress when the /fetch envelope expired (message includesocr_pending job=<id>; retry to resume the same job).
These reasons surface in the reason field on UnsupportedResult and are mirrored into usage_events.metadata.docablOutcome when applicable.
Changes to this list
Material changes to this subprocessor list are reflected in the Privacy Statement's "Last updated" date and communicated by email or in-product notification. Email operator@gyrence.com for the current list at any time.
