Solution architecture

Norg Edge Mirror Routing: Solution Architecture

This document sets out the end-to-end architecture of NORG edge routing for any site, on any platform: where data and site material is stored; how data flows between components; what configuration, integrations, access and dependencies are required; and what the end state is, with its security and governance considerations. Edge routing reference: the white paper.

Terms this page uses
origin
The site’s own web server, CMS or hosting platform: the response the site gives with nothing of NORG’s installed.
mirror
The agent-facing copy of one of the site’s public pages that NORG builds and stores: the same wording, re-presented as text with headings, structured data and a machine-readable summary.
integration point
The one place in the site owner’s estate where the per-request decision runs: a CDN edge worker, a plugin inside the CMS, or framework middleware. Each pattern below names its own.
verified agent
A request whose user agent matches an AI operator enabled for the site AND whose source address falls inside the ranges that operator publishes. A user agent alone is never trusted.
site key
The one credential in the design. Issued once per site, it lets the integration fetch that site’s mirrors and post that site’s telemetry, and nothing else.
record-only mode
A trial posture in which the integration reports AI-agent visits but serves nothing different to anyone.
site owner
The organisation that runs the site: its DNS, hosting or CDN, application and NORG workspace. Used throughout in place of a named customer.
uplift
An optional, on-request operation that generates additional content for one page, a question-and-answer block and, where knowledge-base context exists, an in-depth write-up grounded in it, and appends it to that page’s mirror. It is not a rewrite of the page, and it never changes the live site.
knowledge base
A per-workspace store of documents the site owner supplies, parsed and indexed into a searchable graph. It has a private scope (everything, including uploads) and a public scope (published pages and their uplift Q&A only).
MCP
Model Context Protocol, the interface AI agents and operators call tools through. NORG runs three MCP servers with different audiences and credentials; the section on access controls lists them.

What changes, and what does not

Edge routing serves verified AI agents a text-first mirror of each public page at the page’s own address, while people and search engines keep receiving the site exactly as it is. The table is the whole footprint; the rest of this document is the evidence for it.

Scope of change by component
ComponentWhat changesWhat stays the same
DNSNothing for a CDN already in use, for the WordPress plugin, for Vercel middleware, or for a NORG-hosted mirror on a NORG hostname. The exceptions are platform-specific and listed under Hosting-specific changes.Nameservers, MX, SPF, DKIM and every other record.
Hosting or CDNOne deployment (an edge worker or function) or one rule (a cache bypass), depending on the pattern.Plan, certificates, backups, the page cache for people.
Application or CMSOnly for the in-application patterns: one plugin or one middleware package, configured with a Site ID and Site Key.Theme, content, users, other plugins, database.
EmailNothing. No pattern reads or alters mail routing.Everything.
People and search enginesNothing. They receive the same pages, from the same cache, as today.Everything.
Two rules every pattern is built on

It must never break the site. Every failure path, in every adapter, ends at the origin response. A NORG outage means AI agents receive the normal page, not an error.

Search engines see what people see. Traditional search crawlers are passed to the origin before anything is classified. There is no setting that changes this.

Integration patterns

The decision “is this a verified AI agent, and does a mirror exist for this page?” runs once per request, in one place. Which place depends on what already fronts the site. Everything after this table is common to all of them unless a row says otherwise.

Integration patterns
PatternWhere the decision runsWhat the site owner changesDNSGuide
CDN edge worker: CloudflareA Worker on the site’s own zone, on the route for its hostname.Deploy the worker and attach the route, by Deploy button or a scoped API token.None if the zone already proxies the siteCloudflare Worker install
CDN edge worker: Fastly or BunnyA Compute service (Fastly) or edge script (Bunny) on the site’s service.Deploy the adapter with the Site ID and Site Key.NoneWhite paper, Your CDN
In-application: WordPressA PHP plugin, running inside WordPress after any page cache.Install one plugin; add a cache-bypass rule at the host where its cache runs before PHP.NoneWordPress technical reference
In-application: VercelThe site’s Next.js or Vercel Routing Middleware, before Vercel’s cache.One npm package and two environment variables, then a redeploy.NoneVercel middleware
NORG-hosted mirrorNORG’s own edge, on a NORG hostname or a custom hostname the site owner delegates.Nothing in the site owner’s estate. A CNAME only for a custom hostname.None for a NORG hostnameHosting options
How the patterns compare

Where a CDN the site owner controls already proxies the site, the edge worker is the smallest change and the only one that keeps agent requests off the origin entirely. Where the CDN is bundled with the host and not configurable, the in-application pattern avoids introducing a new network layer for this alone. A CDN can also be added in front of one hostname without moving DNS; what that involves and costs on Cloudflare and Fastly is on CNAME setup. Where nothing is to be installed, the NORG-hosted mirror serves the same pages from a hostname NORG runs.

End-state architecture

Requests flow down the page. The only new element in the site owner’s estate is the integration point; everything on the NORG side already exists and is shared, with each site’s data separated by workspace.

Who asks, where it is decided, what answers

PeopleThe site, from its cache, as today.
Search enginesPassed to the origin before anything is classified.
Verified AI agentsThe mirror, at the same URL, marked uncacheable.
The site owner’s estate: unchanged except the integration point
DNSStays with the registrar or DNS host. No pattern needs it moved.
CDN or hostIntegration point A. An edge worker here decides per request and fetches the mirror itself; the origin never sees agent traffic.
ApplicationIntegration point B. A plugin or middleware here decides after the host cache; a host rule carries agent requests past that cache.

Exactly one of A or B is installed. Either way the integration reads only the request path, user agent and source address, holds the Site ID and Site Key, and makes outbound HTTPS calls to the two NORG hosts below. Nothing inbound is opened.

NORG
content-craft-api.norg.aiControl plane: policy feed, heartbeats, render requests, telemetry, update manifest.
edge-content.norg.aiContent service: serves one mirror per request from object storage (Cloudflare R2) that has no public access of its own.
DatabaseAzure Database for PostgreSQL, Australia East: site records, page inventory, agent-visit analytics.
CrawlerReads the site’s public sitemap and pages over HTTPS, as a search engine does, to build and refresh the mirrors.

NORG holds no credential for the site’s DNS, CDN, host or CMS unless the site owner chooses an install route that lends one, and that route is the site owner’s to revoke. See Access controls and credentials.

Where data and site material is stored

The site and its database stay where they are. NORG holds a copy of the public pages, a record of AI-agent visits, a hash of the one credential and, where the site owner uses them, the knowledge-base documents it supplies and the uplift output it requests. It holds no private site data, customer records, form submissions or email.

Storage locations
ItemWhere it livesWho controls itWhat it contains
The website, CMS database, uploadsThe site’s hosting, unchanged.Site ownerEverything it holds today.
Integration codeThe site owner’s CDN account, or the application (a plugin directory or an npm dependency).Site ownerCode only. No page content is bundled with it, and it can be removed at any time.
Site ID and Site Key, the site owner’s copyA worker secret, Secrets Manager, wp-config.php or an encrypted CMS option, or a sensitive environment variable, by pattern.Site ownerThe credential that identifies the site to NORG. The key is shown once at issue.
MirrorsNORG object storage (Cloudflare R2), under the key prefix edge/{workspace_id}/. The bucket has no public access; mirrors are served only through the content service on Cloudflare’s global edge network, authenticated by site and cached close to the requesting agent.NORGText-first renders of the site’s public pages: headings, body text, structured data (JSON-LD) and a machine-readable summary. Built from the same public pages a search engine reads.
Site record and page inventoryNORG database: Azure Database for PostgreSQL, Australia East.NORGThe hostname, page addresses from the public sitemap, crawl status, the deployed integration version and last heartbeat, and the SHA-256 hash of the Site Key with its first 12 characters. Never the key itself.
AI-agent visit analyticsNORG database, Australia East.NORGOne row per agent visit: hostname, path, agent name, operator and purpose, user agent, what was served, response status, whether the source was verified, and the coarse network context the runtime provides (country, ASN, city, serving location). There is no IP-address column, and no query strings or cookies.
Citation page-views (record-only mode)NORG database, Australia East.NORGFor a person who arrived from an AI answer or a search result, while the integration is in record-only mode: path, referrer reduced to scheme and host, UTM fields, device type, country, user agent, and a pseudonymous visitor id (a truncated SHA-256 of address, user agent, language and the UTC date, so it changes daily). On by default per site; switched off on request.
Uplift output (optional)The same R2 object as the page’s mirror, plus the uplift columns of the site’s route record in the NORG database.NORG; editable and clearable by the site owner through MCPThe content generated for a page (the question-and-answer block and any knowledge-base-grounded write-up), its source, and status. Produced only when the site owner requests it for a page; nothing is uplifted automatically.
Knowledge-base documents (supplied by the site owner)Azure Blob Storage, Australia East, one private container per workspace, no public access. The original file and its parsed text are both kept. Deleted blobs are recoverable for 30 days in production (soft delete).NORG; deleted on the site owner’s instructionThe files uploaded to the knowledge base: PDF, Word, Excel, PowerPoint, images, Markdown, text, CSV and HTML, up to 50 MB each.
Knowledge-base graphA separate database on the same Azure PostgreSQL server as the site record, Australia East. Rows are keyed by workspace and scope.NORGText chunks, their embeddings, extracted entities and relations, document status, and a cache of the model responses used to build them.
Model-call auditNORG database, Australia East.NORGOne row per model call made for the workspace (uplift, knowledge-base build and search): the expanded prompt, including any page text or document context it carried, and the response. There is no scheduled purge; the rows are deleted with the workspace or on request.
MCP request recordsNORG database (private and connector servers) and NORG application logs (public server).NORGPrivate and connector servers: an audit trail of each tool call by the authenticated key or user. Public server, as relayed by the integration: method, tool name, status and timing only; the query text is never stored, only its length.
Install credentials (some routes only)NORG database, encrypted at rest (Fernet).NORG, revocable by the site ownerA scoped Cloudflare API token on the API-token install route, or a WordPress Application Password where remote connect is chosen. None at all on the Deploy-button, manual WordPress or Vercel routes.
Request logsThe site’s CDN or host, as today. NORG keeps its own application logs for its own services.Each party, its ownThe integration writes no log of its own into the site owner’s estate beyond what the platform already records.
How the mirrors are built

NORG’s crawler reads the site’s public sitemap and pages over HTTPS, as a search engine does, and renders each into a mirror. The integration in the site owner’s estate never uploads page content to NORG: it fetches mirrors, it does not produce them. A page that is not in the sitemap is not mirrored, and commerce or account endpoints are never rendered.

How data flows

Eight flows. Only the second changes what a visitor receives, and only for a verified AI agent. Flows six to eight exist only where the site owner uses uplift, supplies documents or exposes MCP. Every connection from the site owner’s estate to NORG is outbound HTTPS to the two hosts named below; NORG opens nothing inbound.

1. People and search engines: no change

Browser, DNS, the site’s CDN or host cache, the origin, exactly as today. The search crawlers Googlebot, Bingbot, Applebot, DuckDuckBot, Baiduspider, Yandex and Slurp are matched by a fixed list and passed to the origin before any classification runs. Serving them anything different would be cloaking, so no setting exists for it.

2. Verified AI agents: the only flow that serves something different
  1. The user agent is matched against the policy feed. Today the diverted set is GPTBot, OAI-SearchBot and ChatGPT-User (OpenAI); ClaudeBot, Claude-User and Claude-SearchBot (Anthropic); PerplexityBot and Perplexity-User (Perplexity); each operator is a per-site switch.
  2. The source address is checked against the ranges that operator publishes. The check is address-range only and fails closed: no match, no mirror. A person who fakes a GPTBot user agent gets the normal page.
  3. For a verified agent the integration fetches the mirror for that path from the content service, authenticated by Site ID and Site Key, and returns it at the site’s own URL with Cache-Control: private, no-store, so no cache ever stores it or shows it to a person.
  4. If the content service answers 404, the integration asks NORG to render the page and serves the live page instead. On WordPress the live page is first stripped to its text; if fewer than 120 words remain, the untouched page is served.
  5. Any other outcome (a timeout, an error, NORG unreachable) serves the origin page. The mirror fetch is bounded: 4 s on WordPress; each CDN adapter’s own bound is on its page.
3. Content sync: NORG reads the public site

The crawler fetches the public sitemap and the pages it lists over HTTPS, using public URLs only. Sites on the default interval schedule are re-crawled every 7 days, adjustable per site; a schedule saved in the portal defaults to monthly. NORG has no CMS login, no database access and no host access for this. A single page can also be re-rendered on request.

4. Control traffic: integration to NORG

Everything the integration sends, and how often. Nothing is sent for an ordinary human visitor in serving mode. The cadences and budgets below are the WordPress plugin’s; the feed interval and heartbeat are common to every adapter, and each CDN adapter’s own bounds are on its page.

Control-plane calls
CallToWhenWhat it carries
Policy feedcontent-craft-api.norg.ai /api/v1/edge/bot-patternsCached for 3,600 s and refreshed lazily on the next request after expiry. A stale list is kept for up to a day if NORG is unreachable.Site ID, Site Key, integration version, If-None-Match. Returns the agent patterns, their serving policy, the operators’ published address ranges and the site’s skip list.
Heartbeatcontent-craft-api.norg.ai /api/v1/edge/heartbeatEvery 30 minutes. WordPress also sends one on traffic, at most every 15 minutes.Integration version and platform, plus a runtime block (for WordPress: WordPress and PHP versions, detected cache plugins, host). No content, no visitor data.
Mirror fetchedge-content.norg.aiOnce per verified agent visit.Site ID, Site Key, and a visit descriptor: path, agent user agent, classification, outcome, HTTP protocol, and country where the runtime exposes it. The content service records the visit from this header; the integration sends no separate analytics call in serving mode.
Render requestcontent-craft-api.norg.ai /api/v1/edge/render-requestsOnly when a verified agent asks for a page that has no mirror yet. De-duplicated per path for 10 minutes; rate-limited to 120 a minute per site.Path, URL and the reason.
Update check (WordPress only)content-craft-api.norg.ai /api/v1/edge/wordpress/update-manifestCached for 6 hours; also on WordPress’s own update schedule.Site ID, Site Key, plugin version. Returns version, package URL and SHA-256.
MCP relaycontent-craft-api.norg.ai /public-mcp/Only when an MCP client addresses the site.An allow-list of headers (accept, accept-language, content-type, mcp-session-id, mcp-protocol-version, last-event-id, user agent) plus Site ID and Site Key. Cookies and authorisation headers are never forwarded.
Visit events and page-views (record-only mode)content-craft-api.norg.ai /api/v1/edge/events and /page-viewsAfter the response, while record-only mode is on.Events: hostname, path, user agent, classification, status, verified flag. Page-views: the citation fields listed under Where data is stored.
5. Record-only mode

In record-only mode the integration serves nothing different and instead posts visit events, and, while citation tracking is on for the site (the default), page-views for people who arrived from an AI answer or a search result. Those page-views carry a pseudonymous, daily-rotating visitor id rather than an address or a cookie. This is the flow a privacy assessment covering human visitors reviews, and the one that is switched off on request.

6. Uplift: on request, per page

When the site owner requests uplift for a page, NORG sends that page’s text (from NORG’s own mirror, capped at 24,000 characters) and the relevant knowledge-base context to a large language model and receives additional content for the page: a question-and-answer block and, where the knowledge base supplies the context for it, an in-depth write-up grounded in that context. The output is appended to the page’s mirror and copied into the public scope of the knowledge base. The page text is instructed to win over the knowledge base where they conflict. Nothing runs on a schedule, and the live site is not touched. The generated content can be edited or cleared by the site owner through MCP.

7. Knowledge base: documents the site owner supplies

A document is uploaded through the portal or the private MCP, stored in the workspace’s private blob container, parsed inside NORG’s worker (PDF and Office parsing runs locally; images are read by a vision model), and indexed into the workspace’s private graph: the text is chunked, embedded and mined for entities and relations by hosted models. Uploaded documents are never placed in the public scope directly. They can reach public output in one way: uplift grounds its questions and answers in the private graph, and the resulting block is published on the mirror and copied to the public scope. The decision of what to supply therefore governs what can surface.

8. MCP: three servers, three audiences

Public. An AI agent that speaks MCP to the site has its request relayed by the integration to NORG’s public server with the site’s identity attached, so it can only read that site: search the public knowledge-base scope, read business details, list and fetch published pages and related items. Every tool is read-only. Searches are limited to 600 a minute per site and the query text is not stored. Private. Workspace members and their agents, holding a scoped API key, use the full read and write surface (content, publishing, knowledge base, edge routing, uplift); every call is written to an audit trail. Connector. The ChatGPT and Claude connectors authenticate the site owner by OAuth; their tools include installs and content edits, and an install acts in the site owner’s CDN account or WordPress only with the credential the owner lends for it.

Configuration, integrations and dependencies

Four steps, each of which the site owner’s team can perform without NORG present. The dependencies are an integration runtime the platform already has, and outbound HTTPS to two hosts.

Steps
  1. NORG creates the site record in the workspace and issues the Site ID, a one-time Site Key and the integration package for the chosen pattern.
  2. The site owner’s team, or NORG with access granted for the purpose, installs the integration and gives it the two values, using the secret store the pattern offers.
  3. Where the host’s cache runs before the integration, the one rule from Hosting-specific changes is added so agent requests reach it.
  4. Verification: the integration’s own check confirms that a simulated agent reaches it and that a browser does not, and the first heartbeat moves the site from pending to active in NORG.
Outbound hosts
Host (HTTPS, outbound)Purpose
content-craft-api.norg.aiControl plane: the policy feed (agent list and address ranges), heartbeats, render requests, record-only telemetry and, for WordPress, the update manifest.
edge-content.norg.aiContent service: the mirror for one page, fetched per verified agent visit. Backed by object storage that has no public access of its own.
Runtime dependencies

A Cloudflare Workers, Fastly or Bunny account for the edge pattern; WordPress 6.0 and PHP 7.4 or later for the plugin; a Next.js or Vercel middleware for the npm package. None of the integrations bundles other runtime libraries. The site does not depend on NORG to stay up: with NORG unreachable, every visitor receives the origin.

What is not required

No DNS change for the in-application patterns or an existing CDN. No CMS login, database access or host access for NORG. No change to mail routing. No inbound firewall rule: the only traffic NORG originates towards the site owner’s estate is the crawler reading public pages, and, where remote connect is chosen, an administrator REST call the site owner can revoke.

Access controls and credentials

NORG needs no standing access to the site owner’s systems. Each install route that lends NORG a credential is optional, scoped, encrypted at rest and revocable by the site owner; the manual routes lend none.

Access by party
AccessNeeded forWho holds itHow it ends
The site’s DNSNothing, except the platform cases under Hosting-specific changes.The site owner. NORG never needs a DNS login.Not applicable.
The CDN accountDeploying the edge worker and its route.The site owner. On Cloudflare a scoped API token may instead be lent to NORG; on the Deploy-button route NORG holds nothing.Delete the token. NORG’s copy is encrypted and becomes useless at once.
CMS administratorInstalling the plugin and entering the keys.The site owner. Or a time-limited administrator account, or a WordPress Application Password where remote connect is chosen.Remove the account or revoke the Application Password after setup.
Site KeyAuthenticating the integration to NORG.The site owner holds the secret. NORG stores only its SHA-256 hash and compares in constant time.Rotated in NORG; the old key stops working immediately. Where NORG holds no remote-connect credential, the site owner enters the new key.
The NORG workspaceViewing analytics and settings, enabling operators, requesting deletion.The workspace’s members. Access across workspaces requires a NORG super-admin role, and those actions are logged.Remove the member.
Private MCP API keyAgents or operators calling NORG’s private MCP: knowledge-base upload and search, uplift, edge-routing actions, content and publishing.Issued per workspace with explicit scopes; NORG stores only its hash. Destructive actions sit behind a two-pass confirmation prompt that a human must answer.Revoke the key in the workspace.
Connector sign-in (ChatGPT, Claude)The site owner driving setup from an AI assistant: mirror content edits, recrawl, hosting switch, CDN or WordPress install.The site owner, by OAuth. An install writes into the owner’s CDN account or WordPress only with the token or Application Password the owner supplies for it.Disconnect the connector; delete the lent token or Application Password.
Public MCPAI agents reading the site through MCP.Anonymous by design. A request is bound to one site by the identity the integration attaches, and every tool is read-only.Remove the integration’s MCP route, or disable public MCP for the site.
What the Site Key can and cannot do

It can fetch the site’s own mirrors and post the site’s own telemetry. It cannot read or change anything in the site owner’s estate, and it cannot reach another workspace: the tenant is always resolved from the authenticated site record, never from a request parameter. The integration sends it only to the two NORG hosts, over TLS, with redirects disabled.

Security and governance

The main risk is the one every integration carries: third-party code in the site owner’s estate. The controls below bound it, and the risk register says what each remaining risk comes to in practice.

Built-in safeguards
  • Fails safe. Every error, timeout and unknown state ends at the origin response, in every adapter.
  • No cloaking. Search engines always receive what people receive. The list is fixed in code; there is no setting.
  • Verified agents only. A user agent is never trusted on its own; the source address must be inside the operator’s published ranges.
  • No cache contamination. Every mirror response is private, no-store, with the CDN and cache-plugin equivalents set alongside, so no cache stores it.
  • Checksum-verified supply chain. Each adapter’s package is pinned or verified by SHA-256 before it runs.
  • Same content, re-presented. Mirrors are built from the site’s own public pages. NORG adds no claims and changes no wording.
Risk register
RiskHow it is handled
Third-party code runs in the site owner’s estateThe integration reads only the request path, user agent and source address, never cookies, authorisation headers or request bodies. Every failure path serves the origin. It can be removed at any time, and the source for the version to be deployed is available on request.
A compromised update channel ships bad codeThe Cloudflare worker is pinned by SHA-256 in NORG’s installer; the WordPress plugin verifies each package’s SHA-256 against NORG’s manifest before WordPress installs it, and automatic updates can be switched off so the site owner’s change control approves each one.
The Site Key leaksIt reaches only the site’s own mirrors and telemetry. It is held in the platform’s secret store. NORG rotates it on request and the old key stops at once.
A mirror drifts from the live pageRe-crawled on the site’s schedule (every 7 days on the default interval, adjustable per site); any page can be re-rendered on request; a page with no mirror falls back to the live page.
Extra load on the originWith an edge worker, agent requests never reach the origin. With an in-application integration (the WordPress plugin or Vercel middleware) agent requests bypass the host cache and run the application, so the origin must be scaled for AI-crawler traffic on top of its human traffic: that volume is reviewed against the host’s capacity before install, and the integration’s status page and the host’s metrics show it afterwards. Record-only mode gives the measurement before anything is served.
The host or CDN changes how caching or rules workThe integration’s self-check reports whether agents still reach it. The failure mode is agents receiving the normal cached page, not an outage.
A supplied document’s content reaches public outputUploaded documents never enter the public knowledge-base scope directly. The one path out is uplift, which runs only when the site owner requests it for a page, is grounded first in the page’s own text, and produces content the owner can review, edit or clear through MCP before or after it is served. The governing control is the choice of what to supply.
Page text and document content are processed by third-party modelsUplift and the knowledge base send page text, document chunks and search context to hosted model providers (Anthropic and OpenAI by default) under those providers’ API terms; NORG configures no provider-side retention setting, so any zero-retention arrangement is contractual and confirmed per engagement. NORG also keeps its own audit copy of each model call, which is deleted with the workspace or on request.
A deleted document persists in storageDeleting one document removes it from the graph and marks the record deleted; its stored file and parsed text are removed when the snapshot is deleted or on request, and Azure soft delete keeps removed blobs recoverable for 30 days. Full removal of a workspace’s documents, graph and container is a NORG operator action performed on instruction.
Anonymous MCP access reaches more than the one siteThe public server exposes read-only tools, binds every relayed request to the site whose identity the integration attached, and answers an unknown host with a 404. Searches are rate-limited per site. Write operations exist only on the authenticated private and connector servers, where each call is audited.
Governance positions

Privacy. AI-agent visits are bot traffic, not personal data; the analytics store has no IP-address column and receives no cookies or form data. The one flow that touches people, citation page-views in record-only mode, uses a pseudonymous daily-rotating id and can be switched off per site.

Data residency. NORG’s database is Azure Database for PostgreSQL in Australia East. Mirrors are stored in Cloudflare R2 and served through Cloudflare’s global edge network, which caches each mirror close to the requesting agent for performance.

Retention. Visit analytics are not expired on a schedule, because they are not tied to individuals. Mirrors, the site record and the analytics are deleted on request, and deleting the integration removes its settings from the site owner’s estate.

Change control. The change is one or two items (an integration and, where needed, one host rule), each of which can go through the site owner’s normal process and be scheduled. A trial can start in record-only mode, or on a single page.

Plugins and in-application integrations: data and interactions

Where the decision runs inside the application rather than at a CDN edge, the questions change shape: what code is this, what can it see, where does it keep its secret, and how does it leave. The WordPress plugin is the worked example; the full detail is on its own reference page.

What runs, and what it reads

The WordPress plugin hooks in at the earliest plugin stage and handles only GET requests for pages (plus HEAD on its own artefacts and POST to the MCP path). It skips admin, AJAX, cron, CLI and REST requests. It reads the path, user agent and source address, and never cookies, authorisation headers or request bodies. The Vercel middleware behaves the same way inside the framework’s request pipeline.

Where its settings and secret live

Settings sit in one CMS option or in environment variables. On WordPress the Site Key may be defined in wp-config.php, in which case it is never written to the database; entered on the settings screen, it is encrypted with a key derived from the site’s own salts. Each constant and its default is in the technical reference.

Updates, administrative surface, removal

Updates come from NORG’s manifest and are SHA-256 verified before install; automatic updates can be turned off. The plugin registers two REST endpoints, both restricted to administrators, so NORG’s dashboard can connect it where the site owner chooses. Deactivating removes its cron jobs and cache rules; uninstalling also removes every option and transient it created.

Full detail: WordPress plugin technical reference · Vercel middleware

Hosting-specific changes

Most platforms need nothing beyond the integration. These are the ones that do, and why.

Hosting-specific changes
PlatformRequired changeGuide
WP EngineIts page cache answers before PHP, so one Web Rule (an internal rewrite) marks AI user agents with ?norg_edge=1; the plugin makes every marked response uncacheable. No support ticket. Where the site owner’s own Cloudflare zone fronts WP Engine, the apex must be a proxied CNAME for a worker to run.WordPress plugin on WP Engine · Cloudflare in front of WP Engine
ShopifyShopify’s own proxy sits in front of the store, so a Cloudflare worker needs the Orange-to-Orange arrangement: a proxied CNAME to shops.myshopify.com, with Always Use HTTPS off. Checkout is never touched; commerce endpoints are never mirrored.Shopify install
CloudflareDeploy the worker to the zone and attach its route. Bot Fight Mode and similar settings may need a skip rule so verified agents reach the worker; the guide lists them.Cloudflare Worker install
No configurable CDN, and DNS cannot moveA CDN can front one hostname by CNAME while the DNS provider stays authoritative. On Cloudflare that is a Business-plan feature (US$200 a month billed annually); on Fastly it is the only model and usage-billed. Both are compared against the in-application pattern before a service is added for this alone.CNAME setup
VercelAdd the package to the middleware, set the two environment variables, redeploy.Vercel middleware
Other managed WordPress hostsKinsta, Flywheel, WordPress.com, GoDaddy and Pressable: the host bypasses its cache for the agent user agents the plugin lists. SiteGround and Cloudways: the agents are excluded in the host’s own cache settings. Pantheon honours no-store on diverted pages.Page caches

Rollback and exit

Every pattern has an off-switch in the site owner’s estate that needs nothing from NORG. On request, NORG deletes the site’s mirrors and record.

  • Cloudflare, Fastly. Remove the route or the service: immediate.
  • WordPress. Tick Disable, define NORG_EDGE_DISABLED as true, or deactivate the plugin: effective on the next request. Removing the host rule instead means agents receive the cached page.
  • Vercel. Set the disable variable and redeploy, or remove the middleware.
  • From NORG’s side. Revoking a site’s entitlement reaches the integration at its next policy refresh, within an hour. There is no instant remote off-switch; the immediate ones are the site owner’s.
  • Uplift and knowledge base. Uplift is cleared per page through MCP. Knowledge-base documents are deleted per document or per snapshot; full removal of the workspace’s documents, graph and storage container is performed by NORG on instruction. Disabling public MCP for the site stops anonymous MCP reads.

Decisions before an install

Settling these beforehand turns the install into a scheduled change with no open questions.

  • Which integration pattern, and who performs the install: the site owner’s team, or NORG with access granted for the duration.
  • Where the Site Key is held on the site owner’s side: a worker secret, Secrets Manager, wp-config.php, or a sensitive environment variable.
  • Update policy: automatic from NORG’s checksum-verified channel, or approved through the site owner’s change control.
  • Whether to start in record-only mode, or in a single-page scope, before serving every mirrored page.
  • Citation page-view tracking: left on (the default) or switched off for the site.
  • Which AI operators to enable. Each is a per-site switch; search engines are never on the list.
  • A staging environment to trial on first, if the platform has one.
  • For an in-application install: that the origin is scaled for AI-crawler traffic in addition to human traffic, since those requests bypass the host cache.
  • Whether to supply documents to the knowledge base, and which: anything supplied can inform uplift output that is published.
  • Whether uplift is used at all, and who may request it per page.
  • Whether public MCP is enabled for the site, so AI agents can query it as well as read mirrored pages.
  • The retention terms required, confirmed with NORG in writing for the engagement.