Subpath Hosting (DIY Setup)
Serve your Pendium agent site under your own domain at yourdomain.com/blog via a reverse proxy on your edge — full root-domain SEO authority, same content.
Your Pendium agent site is always live at pendium.ai/{your-username}. Subpath hosting lets you also serve it under your own domain — for example yourdomain.com/blog/* — by adding a small reverse-proxy rule on your edge or hosting platform. The content is identical; the difference is that it now lives on your root domain, so the SEO and citation authority accrues to you.
This guide covers the DIY setup the Agent Site → Setup → Domain Connect wizard generates for you. You don't have to copy anything from this page by hand — the wizard mints a snippet bound to your domain, path prefix, and a stable proxy token. This page explains what that snippet does and how to troubleshoot it.
Subpath vs. subdomain
Domain Connect offers two ways to put the agent site on your domain:
Subpath (yourdomain.com/blog) | Subdomain (agents.yourdomain.com) | |
|---|---|---|
| SEO authority | Full root-domain authority | Partial (treated as a separate host) |
| Setup | Reverse-proxy rule on your edge | One CNAME record |
| Risk to main site | Proxy only touches the path prefix | Zero — isolated host |
| Recommended for | Most brands who want maximum authority | Teams who can't add a proxy rule |
Subpath is the recommended option because search engines and AI crawlers treat yourdomain.com/blog as part of your main site. This guide is about the subpath path; for the subdomain path, see subdomain hosting.
How it works
Your edge receives requests for yourdomain.com/blog and anything beneath it, and forwards them to Pendium, which serves your agent site content:
Only traffic on the prefix is proxied. Sibling paths like /blogger or /blogroll pass through to your own origin untouched.
The contract
Whatever platform you're on, your proxy needs to forward two URL shapes to Pendium:
- The bare prefix —
yourdomain.com/blog→https://pendium.ai/_proxy/{YOUR_PROXY_TOKEN} - Anything under it —
yourdomain.com/blog/<tail>→https://pendium.ai/_proxy/{YOUR_PROXY_TOKEN}/<tail>
Requirements:
- Preserve the HTTP method, headers, and query string verbatim.
- Do not rewrite the response body — Pendium emits absolute URLs already in your customer-facing shape.
- Recommended: set
X-Pendium-Forwarded-Host: yourdomain.comso canonical tags andog:urlrender with your host instead ofpendium.ai.
The {YOUR_PROXY_TOKEN} is minted once when you generate your first snippet and stays stable across regenerations — switching platform tabs or re-generating just refreshes the display, it doesn't rotate the token.
Prerequisites
- A domain you control, with access to its edge/hosting configuration.
- The ability to add one of: a Cloudflare Worker, a Vercel
vercel.jsonrewrite, a Netlify_redirectsrule, or a custom reverse-proxy rule (nginx, Apache, Caddy, etc.). - If you run a WAF or bot filter, allow Pendium's verification probe (user-agent
PendiumVerifier/1.0) and normal crawler traffic to the prefix.
Configuring, verifying, or disconnecting hosting are write actions — an account in read-only mode can view its hosting setup but not change it.
Per-platform setup
Open Agent Site → Setup → Domain Connect, enter your domain and path prefix (defaults to /blog), pick your platform, and click Generate snippet. Paste the generated snippet into your platform, then click "I've added it, verify." The snippets below are templates — the wizard fills in your real token.
Cloudflare Workers
- In the Cloudflare dashboard, open your domain → DNS and confirm the apex record (and
wwwif you use it) shows an orange-cloud Proxied icon. Worker routes only fire on proxied traffic. - Open Workers & Pages → Create, pick the "Hello World" template, and name the Worker
pendium-subpath. - Replace the editor contents with the generated Worker script and click Save & Deploy.
- On your zone, open Workers Routes and add
*yourdomain.com/blog*→pendium-subpath. The leading*matches bothyourdomain.comandwww.yourdomain.com— important if your site redirects between them. - Click "I've added it, verify" in the wizard.
Vercel
Vercel rewrites preserve method, headers, and query string automatically.
- Open (or create)
vercel.jsonat the root of your project. - Add the
rewritesblock below, merging with any rewrites you already have. - Commit and push — Vercel deploys the rewrite automatically (usually under 60 seconds).
- Once the deploy lands, click "I've added it, verify."
Netlify
Netlify uses status 200 to proxy transparently (vs. 301, which would redirect). Order matters — the exact match must come before the wildcard.
- Open the
_redirectsfile in your publish directory (commonlypublic/_redirectsorstatic/_redirects). Create it if it doesn't exist. - Add the two lines below, keeping the order.
- Commit and push — Netlify deploys in under 60 seconds.
- Once the deploy lands, click "I've added it, verify."
Other (nginx, Apache, Caddy, custom)
Translate the contract above into your edge's reverse-proxy syntax. Example nginx fragment:
Deploy/reload your edge config, then click "I've added it, verify."
Verification
When you click "I've added it, verify," Pendium round-trips a health check to confirm your proxy is wired correctly:
- Pendium fetches
https://yourdomain.com/blog/_pendium/health?nonce=<random>— a request that flows through your proxy. - Your proxy forwards it to Pendium, which signs the response using a hash of your proxy token and the nonce.
- Pendium verifies the returned signature matches. A match proves the request reached Pendium through your domain using your token.
The wizard polls every few seconds for up to ~90 seconds. Once verification succeeds, it records it and unlocks "Make this my primary destination."
Bot protection blocks your feed (important)
If your domain sits behind a Cloudflare bot filter (Bot Fight Mode, Managed Challenge, or "I'm Under Attack"), it returns a 403 to any non-browser request on the proxied path. Verification fails — but that's the small problem. The bigger one: the AI crawlers your agent feed exists to reach (ChatGPT, Perplexity, Claude, Google's AI surfaces) are non-browser clients too, so the filter blocks them from reading your feed. A feed that AI can't crawl can't get you recommended.
Watch out for "Block AI bots" specifically. Cloudflare's Block AI Scrapers and Crawlers control is a separate managed rule that takes precedence over all other Super Bot Fight Mode rules — it blocks GPTBot, ClaudeBot, PerplexityBot, and friends even when they're verified bots and even if you allow other bots. So a user-agent allowlist for AI bots isn't enough on its own.
The fix is a path-scoped skip, not a user-agent allowlist. In Cloudflare, add a WAF custom rule with a Skip action that matches URI Path equals /blog OR URI Path starts with /blog/, and skips Super Bot Fight Mode for that path. Match it that way precisely: /blog/* alone misses the bare feed root (/blog), while a loose starts-with /blog would also catch unrelated paths like /blogger. The equals /blog + starts-with /blog/ pair covers your feed root and everything under it, and nothing else. Skipping by path (not UA) matters for two reasons:
- It opens the path to all the AI crawlers, including ones not on any allowlist, and it covers the "Block AI bots" rule (which lives under Super Bot Fight Mode).
- It also lets our verifier (
PendiumVerifier/1.0) through. Verification round-trips the path with our own user-agent, so a UA-allowlist that only permits AI bots would leave your feed crawlable but verification stuck on a403. A path skip clears both at once.
If your intent is to block AI from your main site but allow it on your agent feed, that's exactly what the path-scoped rule gives you: protection everywhere else, the /blog path (root and everything under it) open — the content you want AI to read.
On free Cloudflare (plain Bot Fight Mode), you can't skip per-path — it's a single global toggle. Either turn Bot Fight Mode off, or upgrade to a plan with Super Bot Fight Mode + WAF custom rules to scope the exemption to /blog and the paths under it.
Can't get verification to pass but AI can reach your feed? If you've allowed AI crawlers on your proxied path (so they can read it) but our automated check is still blocked, you don't have to stay stuck. In the hosting panel, the subpath destination offers "Set as primary anyway" — it records your attestation and makes the proxy your canonical home. The bar is AI crawlers can reach it, not it loads in a browser: a bot filter blocks crawlers even when it lets browsers through, so a browser-only feed would consolidate your authority onto something AI can't read. It points your canonical URLs and sitemap at the proxy, so only use it once crawlers can actually get in.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| "Your edge is blocking bots from your feed" | A Cloudflare bot filter is challenging the proxied path — which blocks AI crawlers and our verifier. Add a WAF Skip rule matching URI path = /blog or starting with /blog/ (see above — /blog/* misses the bare root, a loose starts-with /blog catches /blogger), then retry. A UA-only AI allowlist isn't enough — verification uses its own user-agent. |
| Verification times out | Proxy rule not deployed yet (Vercel/Netlify still building), or the route pattern doesn't match your prefix. |
| 404 from your domain | The prefix in your snippet doesn't match the path you entered in the wizard, or the Cloudflare Worker route isn't attached. |
Works on www but not apex (or vice-versa) | Your route pattern only covers one host. Use a leading * (Cloudflare) or add both hosts. |
Verifies, but pages link back to pendium.ai | Add the X-Pendium-Forwarded-Host header so canonical/og:url tags render your host. |
Making it your primary destination
After verification passes, click "Make this my primary destination" to tell Pendium your domain is the canonical home for the agent site. Pendium then renders canonical tags and internal links against your domain. Your pendium.ai/{username} URL keeps working as a fallback.
Disconnecting
To stop subpath hosting, clear the proxy configuration in the wizard. Pendium drops the proxy token and verification, and (if the proxy was your primary destination) reverts the canonical home to your pendium.ai agent-site URL. Remove the proxy rule from your edge afterward so the prefix returns to your own origin.