Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,14 @@ jobs:
- 'backend/**'
- 'connectors/**'
- '.github/workflows/ci.yml'
# website/** is included because the guards that protect website/ live in the
# frontend suite (src/config/__tests__/website*.test.ts + docs.test.ts): the CSP
# script hash, cross-chapter nav/footer consistency, security.txt expiry, and the
# docs anchor contract. Without it a website-only PR skips the frontend job and
# ships past every one of them.
frontend:
- 'frontend/**'
- 'website/**'
- '.github/workflows/ci.yml'
helm:
- 'charts/**'
Expand Down
2 changes: 2 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ the right.
| Source of truth | Website section |
|---|---|
| [`README.md`](../README.md) (pitch, quick start) | Hero, Install tabs, terminal preview |
| [`README.md`](../README.md), [`docs/01-overview.md`](../docs/01-overview.md), [`docs/13-mcp.md`](../docs/13-mcp.md), [`LICENSE.md`](../LICENSE.md) — plus the same engine list as the Connectors section | **"Common questions" section** (homepage, `#questions`) — six question-form headings with short, self-contained answers (what a database access proxy is, supported engines, data handling, VPN/bastion contrast, licence, AI-agent/MCP access). Question-form headings and standalone answers are what AI-search surfaces extract, so keep each answer readable with **no surrounding context**. Deliberately **no `FAQPage` schema** — Google retired FAQ rich results for all sites in May 2026. Also linked from [`llms.txt`](llms.txt) |
| (no upstream — derived from the chapter it opens) | The question-form `<h3>` + answer block at the top of each [`docs/`](docs/) chapter, and the `Last updated <time>` line under every docs `<h1>`. The `datetime` attribute must stay equal to that page's JSON-LD `dateModified` **and** its [`sitemap.xml`](sitemap.xml) `<lastmod>` — move all three together |
| [`docs/02-architecture.md`](../docs/02-architecture.md) | Architecture diagram |
| [`backend/pom.xml`](../backend/pom.xml), [`frontend/package.json`](../frontend/package.json) | Architecture callouts, From-source toolchain versions in Install tab |
| (no upstream — copy lives in the website) | System requirements panel sizing tiers (Evaluation / Production) |
Expand Down
24 changes: 20 additions & 4 deletions website/docs/configuration/ai/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@
"name": "AI analysis, RAG & anomaly detection \u2014 AccessFlow docs",
"description": "Configure AI providers for AccessFlow query risk analysis, add a RAG knowledge base, trace prompts with Langfuse, and enable behavioural anomaly detection.",
"inLanguage": "en",
"articleSection": "Configuration",
"datePublished": "2026-04-01",
"dateModified": "2026-08-03",
"url": "https://accessflow.bablsoft.com/docs/configuration/ai/",
"mainEntityOfPage": "https://accessflow.bablsoft.com/docs/configuration/ai/",
Expand Down Expand Up @@ -105,7 +107,13 @@
"@id": "https://github.com/bablsoft#org",
"name": "bablsoft",
"url": "https://github.com/bablsoft",
"logo": "https://accessflow.bablsoft.com/favicon.svg"
"logo": "https://accessflow.bablsoft.com/favicon.svg",
"description": "bablsoft builds AccessFlow, an open-source access proxy that puts AI review, human approval workflows and a tamper-evident audit log in front of databases, cloud data warehouses and outbound APIs.",
"foundingDate": "2026-04",
"sameAs": [
"https://github.com/bablsoft",
"https://github.com/bablsoft/accessflow"
]
}
]
}
Expand All @@ -132,8 +140,9 @@
<a href="/#how">How it works</a>
<a href="/#use-cases">Use cases</a>
<a href="/#install">Install</a>
<a href="/#questions">Questions</a>
<a href="/#roadmap">Roadmap</a>
<a href="index.html" aria-current="page" class="nav-link-active">Docs</a>
<a href="/docs/" aria-current="page" class="nav-link-active">Docs</a>
</nav>
<details class="nav-mobile">
<summary aria-label="Open navigation menu">
Expand All @@ -147,8 +156,9 @@
<a href="/#how">How it works</a>
<a href="/#use-cases">Use cases</a>
<a href="/#install">Install</a>
<a href="/#questions">Questions</a>
<a href="/#roadmap">Roadmap</a>
<a href="index.html" aria-current="page" class="nav-link-active">Docs</a>
<a href="/docs/" aria-current="page" class="nav-link-active">Docs</a>
<div class="nav-mobile-divider" aria-hidden="true"></div>
<button class="theme-toggle nav-mobile-theme" type="button" data-theme-toggle aria-label="Switch to light theme" aria-pressed="false">
<svg class="theme-toggle-icon theme-toggle-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" width="16" height="16" aria-hidden="true">
Expand Down Expand Up @@ -220,6 +230,7 @@
<header class="docs-hero">
<span class="eyebrow">Documentation</span>
<h1>AI configuration.</h1>
<p class="docs-updated">Last updated <time datetime="2026-08-03">3 August 2026</time></p>
</header>

<section class="docs-section">
Expand All @@ -230,6 +241,10 @@ <h2 id="cfg-ai">AI configurations</h2>
data-egress policy; AccessFlow then scores every submitted query and, where enabled, drafts
queries from plain-language prompts. It ships adapters for five providers — pick one:
</p>
<h3>Which AI providers does AccessFlow support?</h3>
<p>
Anthropic, OpenAI, Ollama, Hugging Face, and any OpenAI-compatible endpoint. You configure one provider per organization and supply its API key, base URL, and model. Ollama keeps every prompt on your own infrastructure, so no query text leaves the network — the usual choice when data-egress policy forbids a hosted model.
</p>
<ul>
<li><strong>Anthropic</strong> — default model <code>claude-sonnet-4-20250514</code>.</li>
<li><strong>OpenAI</strong> — default model <code>gpt-4o</code>.</li>
Expand Down Expand Up @@ -496,13 +511,14 @@ <h3>Product</h3>
<li><a href="/#how">How it works</a></li>
<li><a href="/#use-cases">Use cases</a></li>
<li><a href="/#install">Quick start</a></li>
<li><a href="/#questions">Questions</a></li>
<li><a href="/#roadmap">Roadmap</a></li>
</ul>
</div>
<div class="footer-col">
<h3>Docs</h3>
<ul>
<li><a href="index.html">User documentation</a></li>
<li><a href="/docs/">User documentation</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/02-architecture.md">Architecture</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/04-api-spec.md">REST API</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/07-security.md">Security</a></li>
Expand Down
24 changes: 20 additions & 4 deletions website/docs/configuration/audit-compliance/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@
"name": "Audit log, compliance reports & data lifecycle \u2014 AccessFlow docs",
"description": "Read the AccessFlow tamper-evident audit log, generate signed compliance exports, and run data-retention and right-to-erasure policies.",
"inLanguage": "en",
"articleSection": "Configuration",
"datePublished": "2026-04-01",
"dateModified": "2026-08-03",
"url": "https://accessflow.bablsoft.com/docs/configuration/audit-compliance/",
"mainEntityOfPage": "https://accessflow.bablsoft.com/docs/configuration/audit-compliance/",
Expand Down Expand Up @@ -105,7 +107,13 @@
"@id": "https://github.com/bablsoft#org",
"name": "bablsoft",
"url": "https://github.com/bablsoft",
"logo": "https://accessflow.bablsoft.com/favicon.svg"
"logo": "https://accessflow.bablsoft.com/favicon.svg",
"description": "bablsoft builds AccessFlow, an open-source access proxy that puts AI review, human approval workflows and a tamper-evident audit log in front of databases, cloud data warehouses and outbound APIs.",
"foundingDate": "2026-04",
"sameAs": [
"https://github.com/bablsoft",
"https://github.com/bablsoft/accessflow"
]
}
]
}
Expand All @@ -132,8 +140,9 @@
<a href="/#how">How it works</a>
<a href="/#use-cases">Use cases</a>
<a href="/#install">Install</a>
<a href="/#questions">Questions</a>
<a href="/#roadmap">Roadmap</a>
<a href="index.html" aria-current="page" class="nav-link-active">Docs</a>
<a href="/docs/" aria-current="page" class="nav-link-active">Docs</a>
</nav>
<details class="nav-mobile">
<summary aria-label="Open navigation menu">
Expand All @@ -147,8 +156,9 @@
<a href="/#how">How it works</a>
<a href="/#use-cases">Use cases</a>
<a href="/#install">Install</a>
<a href="/#questions">Questions</a>
<a href="/#roadmap">Roadmap</a>
<a href="index.html" aria-current="page" class="nav-link-active">Docs</a>
<a href="/docs/" aria-current="page" class="nav-link-active">Docs</a>
<div class="nav-mobile-divider" aria-hidden="true"></div>
<button class="theme-toggle nav-mobile-theme" type="button" data-theme-toggle aria-label="Switch to light theme" aria-pressed="false">
<svg class="theme-toggle-icon theme-toggle-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" width="16" height="16" aria-hidden="true">
Expand Down Expand Up @@ -221,6 +231,7 @@
<header class="docs-hero">
<span class="eyebrow">Documentation</span>
<h1>Audit & compliance.</h1>
<p class="docs-updated">Last updated <time datetime="2026-08-03">3 August 2026</time></p>
</header>

<section class="docs-section">
Expand All @@ -232,6 +243,10 @@ <h2 id="cfg-audit-log">Audit log</h2>
append-only and cryptographically chained, so a deleted or altered entry is detectable
after the fact (query result data is never stored).
</p>
<h3>What makes the AccessFlow audit log tamper-evident?</h3>
<p>
Every row is append-only and carries an HMAC-SHA256 hash chained to the row before it, so altering or deleting any entry breaks the chain and is detectable. The database role the application uses has no <code>UPDATE</code> or <code>DELETE</code> privilege on the table — a separate writer role only inserts.
</p>
<p>
<strong>Configure it.</strong> Nothing to switch on — it captures automatically. Review it
at <code>/admin/audit-log</code>:
Expand Down Expand Up @@ -372,13 +387,14 @@ <h3>Product</h3>
<li><a href="/#how">How it works</a></li>
<li><a href="/#use-cases">Use cases</a></li>
<li><a href="/#install">Quick start</a></li>
<li><a href="/#questions">Questions</a></li>
<li><a href="/#roadmap">Roadmap</a></li>
</ul>
</div>
<div class="footer-col">
<h3>Docs</h3>
<ul>
<li><a href="index.html">User documentation</a></li>
<li><a href="/docs/">User documentation</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/02-architecture.md">Architecture</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/04-api-spec.md">REST API</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/07-security.md">Security</a></li>
Expand Down
24 changes: 20 additions & 4 deletions website/docs/configuration/auth/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@
"name": "OAuth 2.0 / OIDC & SAML 2.0 SSO \u2014 AccessFlow docs",
"description": "Connect AccessFlow to your identity provider with OAuth 2.0 / OIDC or SAML 2.0 single sign-on \u2014 Google, GitHub, Microsoft, GitLab, Okta, Keycloak and more.",
"inLanguage": "en",
"articleSection": "Configuration",
"datePublished": "2026-04-01",
"dateModified": "2026-08-03",
"url": "https://accessflow.bablsoft.com/docs/configuration/auth/",
"mainEntityOfPage": "https://accessflow.bablsoft.com/docs/configuration/auth/",
Expand Down Expand Up @@ -105,7 +107,13 @@
"@id": "https://github.com/bablsoft#org",
"name": "bablsoft",
"url": "https://github.com/bablsoft",
"logo": "https://accessflow.bablsoft.com/favicon.svg"
"logo": "https://accessflow.bablsoft.com/favicon.svg",
"description": "bablsoft builds AccessFlow, an open-source access proxy that puts AI review, human approval workflows and a tamper-evident audit log in front of databases, cloud data warehouses and outbound APIs.",
"foundingDate": "2026-04",
"sameAs": [
"https://github.com/bablsoft",
"https://github.com/bablsoft/accessflow"
]
}
]
}
Expand All @@ -132,8 +140,9 @@
<a href="/#how">How it works</a>
<a href="/#use-cases">Use cases</a>
<a href="/#install">Install</a>
<a href="/#questions">Questions</a>
<a href="/#roadmap">Roadmap</a>
<a href="index.html" aria-current="page" class="nav-link-active">Docs</a>
<a href="/docs/" aria-current="page" class="nav-link-active">Docs</a>
</nav>
<details class="nav-mobile">
<summary aria-label="Open navigation menu">
Expand All @@ -147,8 +156,9 @@
<a href="/#how">How it works</a>
<a href="/#use-cases">Use cases</a>
<a href="/#install">Install</a>
<a href="/#questions">Questions</a>
<a href="/#roadmap">Roadmap</a>
<a href="index.html" aria-current="page" class="nav-link-active">Docs</a>
<a href="/docs/" aria-current="page" class="nav-link-active">Docs</a>
<div class="nav-mobile-divider" aria-hidden="true"></div>
<button class="theme-toggle nav-mobile-theme" type="button" data-theme-toggle aria-label="Switch to light theme" aria-pressed="false">
<svg class="theme-toggle-icon theme-toggle-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" width="16" height="16" aria-hidden="true">
Expand Down Expand Up @@ -219,6 +229,7 @@
<header class="docs-hero">
<span class="eyebrow">Documentation</span>
<h1>Authentication & SSO.</h1>
<p class="docs-updated">Last updated <time datetime="2026-08-03">3 August 2026</time></p>
</header>

<section class="docs-section">
Expand All @@ -233,6 +244,10 @@ <h2 id="cfg-oauth">OAuth 2.0 / OIDC</h2>
Okta, Authentik, Zitadel). It all lives in the database, so adding a provider needs no
restart.
</p>
<h3>How do users sign in to AccessFlow?</h3>
<p>
By default, with an email and password issued in AccessFlow, optionally protected by TOTP two-factor. Organizations can instead delegate sign-in to an identity provider over OAuth 2.0 / OIDC or SAML 2.0, in which case users are auto-provisioned on first login and never hold an AccessFlow password.
</p>
<p>
<strong>Configure it.</strong> Manage providers at <code>/admin/oauth2</code>:
</p>
Expand Down Expand Up @@ -350,13 +365,14 @@ <h3>Product</h3>
<li><a href="/#how">How it works</a></li>
<li><a href="/#use-cases">Use cases</a></li>
<li><a href="/#install">Quick start</a></li>
<li><a href="/#questions">Questions</a></li>
<li><a href="/#roadmap">Roadmap</a></li>
</ul>
</div>
<div class="footer-col">
<h3>Docs</h3>
<ul>
<li><a href="index.html">User documentation</a></li>
<li><a href="/docs/">User documentation</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/02-architecture.md">Architecture</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/04-api-spec.md">REST API</a></li>
<li><a href="https://github.com/bablsoft/accessflow/blob/main/docs/07-security.md">Security</a></li>
Expand Down
Loading
Loading