Exodocs connects to your code repositories, documentation hub, and notification channels. Here is exactly what we access, how we protect it, and what we never do.
Last updated June 2026 · reflects current production implementation
Your integration credentials are encrypted in our database using AES-256 column-level encryption. A database dump reveals only ciphertext.
Exodocs never touches your repositories. It only writes to your documentation hub when you explicitly act: publishing an AI-drafted page or posting a drift annotation. Nothing is written silently.
We never keep your source code. We store file paths and commit metadata only. Diffs and sampled files used for AI analysis are held in a short-lived working record that is deleted on completion, and never indexed or retained.
Exodocs connects to three categories of external service on your behalf: your code repository, your documentation hub, and your notification channel. Here is the precise scope of what we access in each, nothing more.
We apply encryption at multiple layers. All network traffic uses TLS. All integration credentials use column-level database encryption, which provides stronger guarantees than disk-level encryption alone.
401 Unauthorized response. As a second layer, deliveries are checked against GitHub's published webhook source-IP ranges. This prevents spoofed webhook events from affecting your freshness scores.We store the minimum data needed to compute documentation freshness. We have made deliberate technical decisions to avoid storing sensitive information.
| Data | Stored? | Details |
|---|---|---|
| Documentation page title | ✅ Yes | Cached title used for alert messages and the dashboard. Refreshed on sync. |
| Documentation page last-edited timestamp | ✅ Yes | Used to detect when a human has updated the document and reset the freshness score. |
| Documentation page content (text) | ⏱ Cached 24h | Plain text extracted from page blocks is cached for AI analysis. It is never written to our persistent database and expires after 24 hours. |
| Commit SHA, message, author | ✅ Yes | Stored to power the staleness event log and alert messages. |
| GitHub changed file paths | ✅ Yes | Stored as a JSON array. Used to match commits against your page-code mappings. |
| Repository file tree | ⏱ Cached 24h | Repository file tree cached for AI mapping suggestions. Never stored in persistent database. |
| Git diff / source code | ⏱ Never retained | Diffs and sampled source files are used only for an in-progress AI analysis, held in a short-lived working record that is deleted on completion (and within one hour at most). They are never indexed, searchable, or kept as a persistent store. |
| File contents | ⏱ Never retained | We persist file paths only. Sampled source files are used solely for an in-progress AI analysis, held in a short-lived working record that is deleted on completion (and within one hour at most), and never indexed, searchable, or kept as a persistent store. |
| Your integration credentials | ✅ Encrypted | Stored in AES-256 encrypted columns. Never logged, never sent to third parties, never visible in plaintext to any Exodocs team member. |
| Notification channel messages | ❌ Never | We post alerts to your notification channel via an outbound webhook. We have no ability to read your channel messages. |
Exodocs uses role-based access control within every organisation. Your data is isolated at the database level: no organisation can access another's data by design, not just by policy.
Full control. Manages integrations, billing settings, invites members, can delete the organisation.
Manages pages, repos, and mappings. Can update integration settings. Cannot manage billing or delete the org.
Read access to the dashboard and staleness events. Cannot change settings or manage mappings.
Exodocs is hosted on managed infrastructure with automated backups, monitoring, and zero-downtime deployments. We do not manage physical servers.
These are the third-party services that may process your data as part of the Exodocs service. We select sub-processors carefully and require that they maintain appropriate security standards.
| Service | Purpose | Data processed | Location |
|---|---|---|---|
| Railway / Render | Application hosting & database | All application data including encrypted credentials | USA |
| Upstash Redis | Ephemeral caching | Documentation page content (24h TTL), repository file trees (24h TTL) | USA |
| Anthropic | AI drift analysis & mapping suggestions | Commit messages, file paths, documentation page text (where AI features are enabled) | USA |
| GitHub | Code repository webhooks & API | Commit events, file trees, diffs (read-only, where connected) | USA |
| Notion | Documentation hub reads & writes | Page titles, timestamps, block content of connected pages; annotations/pages you publish (where connected) | USA |
| Atlassian Confluence | Documentation hub reads & writes | Page titles, timestamps, body content of connected pages; annotations/pages you publish (where connected) | USA / EU |
| Slack | Outbound alert delivery | Alert message content posted to your designated channel (where connected) | USA |
| Stripe | Subscription billing & payments | Billing email, plan, and subscription status. Card details go directly to Stripe. Exodocs never sees or stores them. | USA |
If you discover a security vulnerability in Exodocs, please email us privately at security@exodocs.dev before disclosing it publicly. We appreciate responsible disclosures and will work with you to address the issue.
Email us with a description of the issue, steps to reproduce, and any relevant evidence.
We do not currently operate a paid bug bounty programme.
Please do not test against other customers' accounts or data. If you need a test environment, contact us and we will provide one.