From ebc5e5e87e9c5990f4620672e9c37202056bd59c Mon Sep 17 00:00:00 2001
From: Tigran Babloyan
Date: Mon, 3 Aug 2026 15:49:36 +0400
Subject: [PATCH 1/2] fix(website): close GEO gaps in llms.txt, docs links and
schema
llms.txt never mentioned Snowflake, BigQuery or Databricks, omitted the
WAREHOUSE engine family, and listed only /docs/ instead of the twelve
rendered chapter URLs - so AI crawlers grounding on it answered warehouse
questions wrongly and could not reach the chapters.
All twelve docs pages linked the hub as href="index.html", which Cloudflare
307-redirects to the directory. On the eleven sub-directory pages those were
self-redirects, leaving /docs/ with no inbound internal links.
Also enrich the JSON-LD graph (Organization sameAs/description/foundingDate,
SoftwareApplication featureList and install metadata, a WebPage node,
datePublished on every TechArticle), render a Last updated date on each docs
page, add question-form headings with self-contained answers, tabulate the
engine matrix and review-plan settings, and add a homepage Common questions
section. No FAQPage schema - Google retired FAQ rich results in May 2026.
---
website/README.md | 2 +
website/docs/configuration/ai/index.html | 24 +++-
.../configuration/audit-compliance/index.html | 24 +++-
website/docs/configuration/auth/index.html | 24 +++-
.../docs/configuration/connectors/index.html | 67 ++++++++++-
.../docs/configuration/datasources/index.html | 24 +++-
.../configuration/notifications/index.html | 24 +++-
.../configuration/review-workflows/index.html | 74 +++++++++++-
.../docs/configuration/users-roles/index.html | 24 +++-
website/docs/iac/index.html | 25 +++-
website/docs/index.html | 42 ++++---
website/docs/install/index.html | 25 +++-
website/docs/workflows/index.html | 25 +++-
website/index.html | 110 +++++++++++++++++-
website/llms.txt | 28 ++++-
website/styles.css | 43 +++++++
16 files changed, 523 insertions(+), 62 deletions(-)
diff --git a/website/README.md b/website/README.md
index f6049618..fbbf0412 100644
--- a/website/README.md
+++ b/website/README.md
@@ -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 `
` + answer block at the top of each [`docs/`](docs/) chapter, and the `Last updated
+
Which AI providers does AccessFlow support?
+
+ 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.
+
Anthropic — default model claude-sonnet-4-20250514.
Short answers. Each one links onward to the chapter that covers it properly.
+
+
+
+
What is a database access proxy?
+
+ A database access proxy sits between users and a database and brokers every
+ connection, so nobody holds production credentials directly. Queries arrive at the
+ proxy, which authenticates the person, applies policy, and only then talks to the
+ database on their behalf. AccessFlow adds review and approval to that path.
+
+
+
+
Which databases does AccessFlow support?
+
+ PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server over JDBC, plus any
+ other JDBC engine via an uploaded driver. Cloud warehouses: Snowflake, Google
+ BigQuery, Databricks SQL. NoSQL: MongoDB, Couchbase, Redis, Cassandra, ScyllaDB,
+ Elasticsearch, OpenSearch, DynamoDB, and Neo4j. See
+ Connectors.
+
+
+
+
Does AccessFlow store or copy my data?
+
+ No. AccessFlow proxies queries and streams results back without persisting them.
+ Its own database stores the query text, the approval decisions, and audit metadata —
+ row counts and timings, not rows. Datasource credentials are AES-256-GCM encrypted,
+ or held in Vault, AWS Secrets Manager, or Azure Key Vault.
+
+
+
+
How is AccessFlow different from a VPN or a bastion host?
+
+ A VPN or bastion controls who reaches the database; neither reads the query. Once
+ you are through, you hold real credentials and can run anything. AccessFlow governs
+ the statement itself — parsing it, scoring its risk, routing it for approval, and
+ masking columns at execution time.
+
+
+
+
Is AccessFlow free, and what licence is it under?
+
+ AccessFlow is free and open source under the Apache 2.0 licence. There is no
+ open-core tier, no paid edition, and no feature held back for a commercial version.
+ You self-host it, and you can fork, audit, and modify it. The full source is on
+ GitHub.
+
+
+
+
Can AI agents use AccessFlow?
+
+ Yes. AccessFlow ships a built-in MCP server, so an AI agent can discover schemas,
+ validate a query, and submit it through the same governance pipeline a human uses.
+ Agents authenticate with scoped API keys and their queries land in the same review
+ queue and the same audit log.
+
diff --git a/website/llms.txt b/website/llms.txt
index 68840dae..eb50c472 100644
--- a/website/llms.txt
+++ b/website/llms.txt
@@ -1,14 +1,32 @@
# AccessFlow
-> AccessFlow is an open-source access proxy for SQL and NoSQL databases — PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, MongoDB, Couchbase, Redis, Cassandra, ScyllaDB, Elasticsearch, OpenSearch, Amazon DynamoDB, and Neo4j — plus outbound REST, SOAP, GraphQL, and gRPC APIs. AI-reviewed queries and API calls, configurable approval workflows, and a tamper-evident audit log — self-hosted under Apache 2.0.
+> AccessFlow is an open-source access proxy for SQL databases, cloud data warehouses, NoSQL engines, and outbound APIs — PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, Snowflake, Google BigQuery, Databricks SQL, MongoDB, Couchbase, Redis, Cassandra, ScyllaDB, Elasticsearch, OpenSearch, Amazon DynamoDB, and Neo4j, plus outbound REST, SOAP, GraphQL, and gRPC APIs. AI-reviewed queries and API calls, configurable approval workflows, and a tamper-evident audit log — self-hosted under Apache 2.0.
-AccessFlow sits between people (and AI agents) and production data as a full query proxy: a submitted query or API call is parsed and validated, analyzed for risk by a configurable AI provider (Anthropic, OpenAI, Ollama, or any OpenAI-compatible endpoint), routed through multi-stage human approval chains, and only then executed — with schema allow-lists, dynamic data masking, row-level security, and row caps enforced at execution time. Every step lands in an INSERT-only, hash-chained audit log.
+AccessFlow sits between people (and AI agents) and production data as a full query proxy: a submitted query or API call is parsed and validated, analyzed for risk by a configurable AI provider (Anthropic, OpenAI, Ollama, Hugging Face, or any OpenAI-compatible endpoint), routed through multi-stage human approval chains, and only then executed — with schema allow-lists, dynamic data masking, row-level security, and row caps enforced at execution time. Every step lands in an INSERT-only, hash-chained audit log.
+
+Engines are grouped into three families. **Relational** (`RELATIONAL`) covers PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server over pooled JDBC, plus any other JDBC-compatible engine via an admin-uploaded driver JAR. **Cloud data warehouses** (`WAREHOUSE`) covers Snowflake, Google BigQuery, and Databricks SQL through native connectors that use each vendor's own authentication model — key-pair JWT, service-account JSON, and personal access tokens respectively — rather than pooled JDBC. **NoSQL** covers the document engines MongoDB and Couchbase (SQL++/N1QL), the key-value engines Redis and Amazon DynamoDB (PartiQL), the wide-column engines Apache Cassandra and ScyllaDB (CQL), the search engines Elasticsearch and OpenSearch (JSON Query DSL), and the graph engine Neo4j (Cypher over Bolt). Every non-JDBC engine ships as an SHA-256-pinned plugin resolved on demand through the connector catalog.
+
+Beyond query review, AccessFlow governs outbound **API access** (REST, SOAP, GraphQL, gRPC) through the same submit → AI → review → execute pipeline, with response masking and data-classification tags. It also provides just-in-time and break-glass access grants, policy-as-code routing, behavioural anomaly detection (UBA), request chaining and grouping, data-lifecycle automation (retention, right-to-erasure, pseudonymization), access recertification campaigns, and signed compliance exports. Authentication is JWT (RS256) with optional SAML 2.0, OAuth 2.0 / OIDC (Google, GitHub, Microsoft, GitLab, Okta, Keycloak, Auth0, and other IdPs), and TOTP.
It is self-hosted (Docker Compose or Helm), ships a built-in MCP server so AI agents can discover schemas and validate and submit queries through the same governance pipeline, and offers a Terraform/OpenTofu provider plus reusable CI actions for infrastructure-as-code management. Source code lives at https://github.com/bablsoft/accessflow.
## Docs
-- [User documentation](https://accessflow.bablsoft.com/docs/): Run and configure AccessFlow — deployment, first-run setup, datasources, review plans, AI configs, SSO, notifications, end-user workflows
+- [Documentation home](https://accessflow.bablsoft.com/docs/): Hub for the operator and admin documentation — install AccessFlow, complete first-run setup, and configure every entity in the review pipeline
+- [Install & first run](https://accessflow.bablsoft.com/docs/install/): Run AccessFlow with Docker Compose, Kubernetes and Helm, or from source, then complete first-time setup with the browser wizard or GitOps bootstrap
+- [Users & roles](https://accessflow.bablsoft.com/docs/configuration/users-roles/): Configure organizations and quotas, invite users, assign RBAC roles, group them, and grant just-in-time or break-glass access
+- [Datasources](https://accessflow.bablsoft.com/docs/configuration/datasources/): Add governed datasources, tag sensitive columns, apply masking and row-level security policies, upload JDBC drivers, and watch pool health
+- [Connectors](https://accessflow.bablsoft.com/docs/configuration/connectors/): Install SQL, NoSQL and data-warehouse engine connectors from the catalog, and register outbound REST, SOAP, GraphQL and gRPC API connectors
+- [Review workflows](https://accessflow.bablsoft.com/docs/configuration/review-workflows/): Build multi-stage approval chains with review plans, automate decisions with policy-as-code routing, and run access recertification campaigns
+- [AI](https://accessflow.bablsoft.com/docs/configuration/ai/): Configure AI providers for query risk analysis, add a RAG knowledge base, trace prompts with Langfuse, and enable behavioural anomaly detection
+- [Auth & SSO](https://accessflow.bablsoft.com/docs/configuration/auth/): Connect to your identity provider with OAuth 2.0 / OIDC or SAML 2.0 single sign-on — Google, GitHub, Microsoft, GitLab, Okta, Keycloak and more
+- [Notifications](https://accessflow.bablsoft.com/docs/configuration/notifications/): Route review and audit events to email, Slack, Discord, Telegram, Teams, PagerDuty, ServiceNow, Jira and signed webhooks, and configure system SMTP
+- [Audit & compliance](https://accessflow.bablsoft.com/docs/configuration/audit-compliance/): Read the tamper-evident audit log, generate signed compliance exports, run retention and right-to-erasure policies, and use the personalized dashboard
+- [End-user workflows](https://accessflow.bablsoft.com/docs/workflows/): How analysts submit queries and API calls, draft SQL from natural language, schedule runs, and how reviewers approve or reject them
+- [Infrastructure as Code](https://accessflow.bablsoft.com/docs/iac/): Manage AccessFlow declaratively with the Terraform / OpenTofu provider, service-account API keys, and the reusable GitHub Actions and GitLab CI templates
+
+## Engineering reference
+
- [Project README](https://raw.githubusercontent.com/bablsoft/accessflow/main/README.md): Project overview and quick start
- [Overview](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/01-overview.md): Problem statement, goals, non-goals, value proposition
- [Architecture](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/02-architecture.md): Subsystems, technology stack, request flow
@@ -23,7 +41,7 @@ It is self-hosted (Docker Compose or Helm), ships a built-in MCP server so AI ag
- [Roadmap](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/12-roadmap.md): Milestones, contribution path
- [MCP server](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/13-mcp.md): Stateless tool surface for AI agents — discover, validate, sample, submit; API keys
- [Connectors](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/14-connectors.md): Declarative connector catalog, manifests, install lifecycle
-- [Engine-plugin SDK](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/15-engine-sdk.md): Authoring guide for native NoSQL engine plugins
+- [Engine-plugin SDK](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/15-engine-sdk.md): Authoring guide for native NoSQL and data-warehouse engine plugins
- [Infrastructure as Code](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/16-iac.md): Terraform/OpenTofu provider, CI Actions, service-account keys, registry publishing
- [API Access Governance](https://raw.githubusercontent.com/bablsoft/accessflow/main/docs/17-api-governance.md): Govern outbound REST/SOAP/GraphQL/gRPC calls — connectors, schema ingestion, permissions
@@ -32,4 +50,6 @@ It is self-hosted (Docker Compose or Helm), ships a built-in MCP server so AI ag
- [GitHub repository](https://github.com/bablsoft/accessflow): Source code, issues, releases (Apache 2.0)
- [Agent rulebook](https://raw.githubusercontent.com/bablsoft/accessflow/main/CLAUDE.md): Authoritative implementation rules for AI agents contributing to the codebase
- [Install / quick start](https://accessflow.bablsoft.com/#install): Docker Compose, Helm, and from-source install commands
+- [Common questions](https://accessflow.bablsoft.com/#questions): Short answers to the most-asked questions about AccessFlow
- [Helm chart repository](https://bablsoft.github.io/accessflow): Published Helm chart index for Kubernetes installs
+- [Sitemap](https://accessflow.bablsoft.com/sitemap.xml): Every indexable URL on this site
diff --git a/website/styles.css b/website/styles.css
index a2f6b18c..92c7c6ed 100644
--- a/website/styles.css
+++ b/website/styles.css
@@ -1353,6 +1353,40 @@ section + section { border-top: 1px solid var(--line); }
margin-top: auto;
}
+/* common questions */
+
+.qa-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 12px;
+}
+
+.qa-item {
+ border: 1px solid var(--line);
+ border-radius: var(--radius);
+ padding: 24px;
+ background: var(--bg-1);
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ transition: border-color 0.15s, background 0.15s;
+}
+.qa-item:hover {
+ border-color: var(--line-strong);
+ background: var(--bg-2);
+}
+
+.qa-item h3 {
+ font-size: 16px;
+ font-weight: 500;
+ letter-spacing: -0.01em;
+}
+.qa-item p {
+ font-size: 14px;
+ color: var(--fg-mute);
+ line-height: 1.65;
+}
+
/* cta + footer */
.big-cta {
@@ -1505,6 +1539,7 @@ footer {
.hero { padding: 64px 0 56px; }
.feat-grid { grid-template-columns: 1fr; }
.docs-grid { grid-template-columns: 1fr; }
+ .qa-grid { grid-template-columns: 1fr; }
.roadmap-track { grid-template-columns: 1fr; }
.footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
.footer-bar { flex-direction: column; gap: 16px; }
@@ -1640,6 +1675,14 @@ img, table, pre { max-width: 100%; }
max-width: 70ch;
}
+.docs-hero p.docs-updated {
+ color: var(--fg-mute);
+ font-family: var(--mono);
+ font-size: 13px;
+ letter-spacing: 0.01em;
+ margin-top: -8px;
+}
+
.docs-hero a,
.docs-content a {
color: var(--accent);
From 79dbb8a74b3ed234c181dd992b527806cfc37e8b Mon Sep 17 00:00:00 2001
From: Tigran Babloyan
Date: Mon, 3 Aug 2026 15:52:42 +0400
Subject: [PATCH 2/2] ci: run the website guards on website-only changes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The four guards protecting website/ live in the frontend suite — the CSP
script hash, cross-chapter nav/footer consistency, security.txt expiry, and
the docs anchor contract. The frontend job's paths-filter only matched
frontend/**, so a PR touching website/ alone skipped the job and shipped
past every guard, including the one added to catch exactly that drift.
---
.github/workflows/ci.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2db39c35..534ff147 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -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/**'