The Content Framework
Built for AI Website Development
Write pages as plain text files, or let your AI coding assistant write them. VAGE JS turns them into a fast, secure website that search engines and AI assistants understand.
npm create vagejs@latest my-siteClick the command to select it · you'll need Node.js 22.12 or newer
- Loads in under a second
- SEO and AI-search files built in
- Every page checked before launch
- Free, open source, no lock-in
- $ npm create vagejs@latest my-site
- Created ~/projects/my-site
- Next steps:
- cd my-site
- npm install
- npm run dev
- $ cd my-site && npm install
- added 78 packages in 10s
- $ npm run dev
- VAGE JS dev server running at http://localhost:5173/
- GitHub Pages
- Cloudflare Pages
- Google Analytics 4
- Google Tag Manager
- Plausible
- Search Console
- PageSpeed Insights
- Claude Code
- Microsoft Clarity
- IndexNow
What is VAGE JS?
A free framework for building content websites from text files.
VAGE JS came out in October 2026. It's open source under the MIT license and installs from npm as vagejs. In technical terms it's a static site generator, which means it builds every page ahead of time, so there's no server code or database to run.
Fast by default
Your pages are ready-made HTML with no JavaScript attached, so they open quickly, even on a patchy phone connection.
Your content is just text
Each page is a text file in a folder. There's no database or admin panel to patch. Edit in any editor and keep every change in git.
Made for AI helpers
Claude Code and other AI coding assistants get clear instructions and a checklist, so they build pages the right way instead of guessing.
From a folder of text files
to a live website you can trust.
-
Write
Write a page the way you'd write a note.
- Each text file becomes a page, and its folder decides the web address.
- A few lines at the top hold the page title and the short summary Google shows.
- Anything risky pasted into a page, like a hidden script, is stripped out automatically.
src/pages/pricing.md --- title: Pricing description: Simple plans for teams of every size. --- # Pricing Pick the plan that fits your team. -
Check
Catch problems before your visitors do.
- It spots broken links, missing page summaries and details search engines can't read.
- It checks the basics that make a site usable with a screen reader.
- It names the exact file to fix, so you or your AI assistant can sort it out in seconds.
terminal $ npx vage check error link-broken /about/ (src/pages/about.md) Link to "/nope/" does not match any page or file. error link-broken /about/ (src/pages/about.md) Link to "/blog/wip/" points to a draft page, which is not published. warning meta-description /dup/ (src/pages/dup.md) No meta description. Add `description` to the frontmatter. Checked 6 page(s): 2 error(s), 1 warning(s). -
Build
One command makes the whole site.
- It writes the sitemap and robots.txt that search engines read, plus llms.txt, a short guide for AI assistants.
- It adds the details Google and social apps use to show previews of your pages.
- It sends no JavaScript to visitors unless you add analytics yourself.
terminal $ npx vage build / -> index.html /about/ -> about/index.html /blog/first-post/ -> blog/first-post/index.html -> robots.txt -> sitemap.xml -> llms.txt Built 3 page(s) into dist in 296ms -
Ship
Publish without the nerve-racking parts.
- It puts your site on GitHub Pages or Cloudflare Pages, with a preview link for every work-in-progress branch.
- It refuses to upload passwords or secret keys, and it never overwrites anyone else's work.
- It only says "done" once the host confirms your site is live.
terminal $ npx vage deploy:github --remote https://github.com/you/site.git Publish plan for ~/projects/my-site • git init (branch main) • add origin https://github.com/you/site.git • commit 32 file(s) on main: "Initial site" • push to https://github.com/you/site.git (main); never forced Proceed? [y/N] y Pushed 53f1eab to https://github.com/you/site.git (main); confirmed on the remote.
Fast out of the box.
No tuning required.
We tested a brand-new VAGE JS site with Google's Lighthouse tool. It scored a perfect 100 in every category, and the page loaded in under a second on a simulated phone connection.
| Metric | VAGE JS starter | Good is |
|---|---|---|
| Main content appears (LCP) | 0.8 s | under 2.5 s |
| Layout jumps (CLS) | 0 | under 0.1 |
| Time the page is frozen (TBT) | 0 ms | lower is better |
| First text appears (FCP) | 0.6 s | lower is better |
| JavaScript sent to visitors | 0 KB | less is faster |
| Data downloaded | 1.5 KB in 2 requests | less is faster |
| Time to build the site | 0.3 s for 4 pages | faster is better |
How we measured: a fresh site from npm create vagejs@latest (vagejs 0.1.0), tested with Lighthouse 13.5.0 on mobile settings with a simulated slow network on 23 October 2026. We ran it twice and got the same numbers both times. These are lab results. Google also looks at data from real visitors, and your own numbers will depend on your images, content and hosting.
Maximum flexibility.
Nothing locks you in.
Your words live in text files you own, and the HTML is yours to shape. What VAGE JS builds is a plain folder of files you can host anywhere, now or five years from now.
- Page designs (called layouts) are short TypeScript functions. If you can read HTML, you can read them.
- Style your site however you like with ordinary CSS.
- Add your own settings to any page and use them in your design. This home page is built exactly that way.
- Every default can be changed or switched off, from crawler rules to security headers.
- GitHub Pages
- Cloudflare Pages
- Any static host
import { escapeHtml, type Layout } from "vagejs";
const layout: Layout = ({ content, page, site }) =>
`<!doctype html>
<html lang="${escapeHtml(site.lang)}">
<head><title>${escapeHtml(page.title)}</title></head>
<body><main>${content}</main></body>
</html>`;
export default layout;
Everything a content site needs.
Already built in.
Pages from files
Drop a text file into a folder and it's a page. Drafts stay hidden until you're ready.
Learn moreLive preview
See each change the moment you save, without restarting anything.
Learn moreSitemap, robots.txt and llms.txt
Made for you from the pages that really exist, so search engines and AI tools get an accurate map.
Learn moreSearch and social previews
Page summaries, sharing images and structured data that help Google understand each page.
Learn moreBuilt-in site check
Catches broken links, missing details and accessibility slips, and points to the file.
Learn moreSpeed and accessibility audits
Size limits for each page, automated accessibility rules, and Google's Lighthouse and PageSpeed when you want them.
Learn moreSafe by default
Removes hidden scripts from pages, adds security headers, and looks for leaked keys before you publish.
Learn moreOne-command publishing
GitHub Pages or Cloudflare Pages. You approve a plan first, and every branch gets its own preview link.
Learn morePrivacy-friendly analytics
Google Analytics, Tag Manager, Plausible or Clarity. It's off until you turn it on, and tracking waits for visitor consent by default.
Learn moreSearch reports and IndexNow
See your Search Console and Google Analytics numbers in the terminal, and tell search engines when pages change.
Learn moreReady for AI assistants
Every site ships with instructions for AI coding assistants, and every command can answer in JSON.
Learn moreRules that stay current
Facts like AI crawler names come from official sources, and we watch those sources for changes.
Learn more
Made for AI coding assistants.
No guesswork.
Ask Claude Code or another AI assistant to add a page, and it already knows how. Each new site comes with an instructions file (AGENTS.md) that spells out the rules and what "done" means, and the assistant can ask VAGE JS for every command and setting.
npx vage info --json## Definition of done
`npm run check` reports 0 errors and `npm run build`
succeeds. Report remaining warnings to the owner
rather than hiding them.
Do not invent titles, descriptions, dates, authors
or facts. Ask the site owner.
Safe by default.
It says no to risky moves.
Clean pages
Hidden scripts and sneaky links pasted into a page are removed before they reach your site.
No leaked secrets
Passwords, API keys and .env files are never committed or published by accident.
No overwritten work
If someone else published changes first, VAGE JS stops and shows you how to catch up. It never forces a push.
Private previews
The preview server only shows your pages and public files, even on shared Wi-Fi.
Real security headers
Sites on Cloudflare get headers that block injected code, worked out from your own pages.
Your keys stay yours
API keys and Google sign-ins are kept in your user folder, never inside the project.
Questions people ask.
Straight answers.
What is VAGE JS?
VAGE JS is a free, open-source framework for building websites. You write pages as simple text files, and it turns them into a fast website with search-engine and AI-friendly files already built in.
Is VAGE JS free?
Yes. It's released under the MIT license, so you can use it for personal and commercial sites at no cost.
Do I need to know how to code?
A little comfort with a terminal helps. Writing pages only takes plain text, and AI coding assistants like Claude Code can set up and update a site for you.
How is it different from WordPress?
WordPress runs a database and server code every time someone visits. VAGE JS builds plain pages ahead of time, so there's no database to secure or update. There's no admin dashboard either; your content lives in text files.
Will VAGE JS help my site rank on Google?
It takes care of the technical side: sitemaps, page summaries, structured data, speed and broken-link checks. Rankings still depend on your content and on other sites linking to you, and no tool can guarantee them.
Does it work with ChatGPT, Claude and other AI search?
It creates llms.txt, a plain guide to your site for AI tools, and lets you choose which AI crawlers may visit. Whether an AI assistant mentions your site is up to that assistant.
Where can I host a VAGE JS site?
Anywhere that serves files. GitHub Pages and Cloudflare Pages have one-command publishing built in, and any other static host works too.
What do I need to get started?
Node.js 22.12 or newer. Then run npm create vagejs@latest my-site and follow the three steps it prints.
Partner agencies.
Get help building your site.
Rather hand it off? These agencies build and look after VAGE JS sites for their clients. If your agency builds with VAGE JS too, apply to be listed here.
Why we built VAGE JS
Every website needs the same unglamorous chores done right: a sitemap that matches the real pages, a short summary on each page, structured data that tells the truth, no broken links, and a publish step that doesn't leak a password file. Most tools leave those chores to you. VAGE JS does them by default and checks them on every build, so you (and your AI assistant) can spend your time on what you actually want to say.
We'll also be straight with you about its limits. Passing every check won't guarantee a top spot on Google or a mention in an AI answer, and the tool tells you that too.
Start with one command.
You'll have a site running in a minute.
npm create vagejs@latest my-siteSponsored by.
Thank you for keeping it free.
VAGE JS is free and open source. Our sponsors pay for the upkeep, the security reviews and the work of keeping up with Google, Bing and AI crawler changes. Want to help? Become a sponsor.