Install your Agentic Kit on Ghost
Ghost is a self-hostable Node.js publication platform, so you have two clean options depending on where your site runs.
If you're on Ghost(Pro) (Ghost's managed hosting), you can't edit the filesystem directly — use the Routes + theme approach in this guide. If you're self-hosting Ghost on your own server, you can drop the three files into the static directory directly, which is the cleaner path.
Option A — Ghost(Pro) and other managed hosts
You'll upload the three files to your active theme and route the root paths through Ghost's routes file.
Step 1 — Add the files to your theme
- Download your active theme: in Ghost Admin, go to Settings → Design & Branding → Customize → Change theme, hover over your active theme, and click Download.
- Unzip the theme. Create a
public/folder in the theme root if it doesn't exist. - Drop the three files from your kit into
public/:public/agents.jsonpublic/llms.txtpublic/agent-instructions.md
- Zip the theme back up and upload it: Settings → Design & Branding → Customize → Change theme → Upload theme, then Activate.
Step 2 — Configure routes
- In Ghost Admin, go to Settings → Labs → Beta features → Routes.
- Click Download current routes.yaml to get a copy.
- Open the file in a text editor and add the three template
redirects under the existing
routes:section:
routes:
/agents.json/:
template: agents-json
content_type: application/json
/llms.txt/:
template: llms-txt
content_type: text/plain
/agent-instructions.md/:
template: agent-instructions
content_type: text/markdown
- Create three template files in your theme root that simply read
the static file content via a partial or
{{> @site.url}}/...— most installs use a small{{!--}}template that includes thepublic/file via Handlebars helpers. - Save the routes file and upload via Routes → Upload routes.yaml.
🔁 Simpler alternative If maintaining template-routed static files feels heavy, host the three files on a CDN (Cloudflare R2, Bunny, S3) and use Ghost's 301 redirects under Settings → Labs → Redirects to redirect the three root paths to the CDN URLs.
Step 3 — Verify
Open each URL in a new tab:
https://yourdomain.com/agents.jsonhttps://yourdomain.com/llms.txthttps://yourdomain.com/agent-instructions.md
Each should serve the file content directly.
Option B — Self-hosted Ghost
If you run Ghost on your own server, you have direct filesystem access — this is the simplest installation in the entire Ghost ecosystem.
Step 1 — Drop the files into the static directory
SSH into your server and place the files in your Ghost content directory:
cd /var/www/ghost/content/public # adjust path to your install
cp /path/to/agents.json .
cp /path/to/llms.txt .
cp /path/to/agent-instructions.md .
If public/ doesn't exist, create it. Ghost serves it directly
at the root path.
Step 2 — Restart Ghost (if your install caches statics)
ghost restart
That's it. The files are now served at the root path with the correct content-types via Express's static middleware.
Step 3 (recommended, both options) — Add auto-discovery <link> tags
- In your active theme, open
default.hbs(the main layout). - Find the closing
</head>tag. - Paste this immediately before it:
<link rel="alternate" type="application/json" title="Agent Action Map" href="/agents.json">
<link rel="alternate" type="text/plain" title="LLM Context" href="/llms.txt">
<link rel="alternate" type="text/markdown" title="Agent Runbook" href="/agent-instructions.md">
- Save and re-upload your theme (Option A) or commit and restart (Option B).
Troubleshooting
File downloads instead of displaying inline.
Ghost's static middleware honors the file's declared
content-type. If your file has a Content-Disposition: attachment
header, check your reverse-proxy config (nginx/Caddy) for an
add_header directive overriding the response.
Routes returns 404 in Ghost(Pro). The Routes feature requires the Labs flag enabled and a paid Ghost(Pro) plan. If you can't use Routes, fall back to the CDN + redirect alternative noted in Option A Step 2.
Theme upload fails because of file types.
Some Ghost theme validators reject .md files in the theme zip. Place
them in public/ and re-test; the validator usually only inspects
.hbs templates and partials.
Need a hand? Reply to your purchase receipt and we'll help directly.