HERON

Fast, functional websites tuned for search and AI.

One command, and HERON creates the folder of your future site with a ready structure, demo pages and a theme. You set it up in the configurator, fill the pages with your own texts, and at any moment build the site and look at it on your computer. When everything is ready, publish the site the way that suits you.


      

Several sites? HERON Agent lives on your server and keeps every site up to date.
No server? HERON Bot does the same, with no server to buy.

From one folder to a live site

Your site is an ordinary folder of files. HERON creates the right structure in it, reads the content and builds the site from it. On your computer you only need Docker. To publish, you need hosting for the finished files, or a server or service that runs Docker containers. Never heard of Docker? Install it in ten minutes. Every step below is one command with a clear result.

  1. 1

    Create the site

    The command takes the latest stable HERON image, and the image creates the my-site folder: the content structure, demo pages, a theme and site.yaml, the settings file. Without the -y flag HERON first asks a few questions: the language you prefer to work in, the name, the domain, the languages of the site and the main one. You can answer them right away, or add -y as in the command below and fill everything in later in the configurator, where any answer can be changed. The other ways to run HERON are collected on one page¹.

    docker run --rm -it -v "$PWD":/site -w /site --user $(id -u):$(id -g) ghcr.io/fmstm/heron:prod new my-site -y
    
  2. 2

    Set it up in the configurator

    The configurator is a questionnaire. You fill in the site name and domain, the reference data (contacts, company details, who you are: a company, a doctor, a lawyer, a private person), choose a theme and the other settings. The configurator fits the folder structure to your project and saves the answers to site.yaml. Search markup, the sitemap and llms.txt are built from the same answers.

    cd my-site && heron setup .
    
  3. 3

    Fill the pages

    Open the site folder in a text editor and look at how it is laid out: content/ holds the texts of the pages (one folder per language of your site), media/ holds photos and video, site.yaml holds the settings and connections to outside services such as Google. Open the home page file: at the top is its description for search engines, below are the blocks of the page. A new page is a copy of a file under a new name, with your text. Write it yourself or with an AI agent and see the result in the preview right away.

    heron serve .
    
  4. 4

    Publish

    Build the final version. The strict check stops on any warning and names the file and line, so a broken link or an empty description never reaches visitors. The final version is either ready files or an image of the site, and you can publish it in any of the ways below.

    heron build . --env prod --strict
    
~/sites

Choose how to store and publish your site

The final build is either ready files for any hosting, or an image: the whole site together with a small web server that runs on any machine with Docker. An image can be stored on GitHub, on Docker Hub or in your own registry. There are three ways to publish today, and more will come. You can change your mind at any time: the site folder stays the same.

You keep the site in a git repository on GitHub, and the image builds itself. After the first setup you only edit files and send the changes: GitHub builds the site, checks it and puts a fresh image into its own storage. No separate account for images is needed.

git add . && git commit -m "New services page" && git push
  • Once. Create a free account and an empty repository on github.com and send the site folder there. The configurator adds the build file .github/workflows/image.yml. Git and GitHub from zero
  • Edit. Change a page file or add a new one: on your computer, right on github.com or with an AI agent.
  • Send. The command above saves the change in the history with a short label and sends it to GitHub.
  • Build. GitHub Actions runs HERON with the strict check, builds the image and test-runs it. A broken link stops the release here, and the Actions tab shows the file and line.
  • Result. The fresh image is in GitHub Packages, and free hosting such as GitHub Pages takes the new files. A server pulls the new image with one command.
  • Undo. Every send is a step in the history: git revert brings the previous version back with the next send.
  • Paid add-on. HERON Agent updates the site on your server from every new image by itself.

Full guide: storing in git and building the image →

You build the image yourself and keep it in your own repository on Docker Hub. Any server with Docker can run it. Good if you have your own server and want to decide yourself when each version goes live.

heron build . --env prod --strict && curl -fsSL https://raw.githubusercontent.com/FMSTM/HERON/prod/Dockerfile.site | docker build -t you/my-site:prod -f - dist && docker push you/my-site:prod
  • Account. Sign up at hub.docker.com and create a repository, for example you/my-site. A private one keeps the site hidden until it is ready.
  • Token. Account settings → Personal access tokens → Generate. It is the password for docker login; keep it out of the site folder and out of git. Make two: read and write for the computer where you build, read-only for the server.
  • Sign in. Run docker login -u you and paste the token: once on your computer and once on the server.
  • Build and send. The command above builds the site, packs it into an image with the HERON recipe and sends it to Docker Hub.
  • On the server. Pull the new image and restart the container: docker pull you/my-site:prod, then start it with the command from the guide. The site is back in a few seconds.
  • Paid add-on. HERON Agent pulls every new image from your Docker Hub with your key and swaps the container by itself.

Full guide: images and Docker Hub →

The simplest hosting and the most manual way: you build the site and copy the finished files to the hosting on every update. Any hosting works, paid or free, even the cheapest one with FTP access.

heron build . --env prod --strict && ls dist
  • Build. The command above makes the dist/ folder: every page, image, the sitemap and llms.txt. This folder is the whole site.
  • Check. Open the finished site at localhost:8080 before it goes live, with one command from the guide.
  • Copy. Upload dist/ through the file manager of your hosting, FTP or rsync. Replace the old files and leave nothing extra.
  • Paid hosting. Ordinary hosting or a small server costs from a few euros a month. For a server HERON puts a ready nginx config into dist/. Prices change, check with the provider.
  • Free hosting. GitHub Pages and Cloudflare Pages take the dist/ folder with your domain and HTTPS. GitHub Pages: up to 1 GB per site, public repositories only on a free account, not for shops. Your domain on GitHub Pages
  • Every update. Build and copy again: nothing happens on its own.

Full guide: ready files and where to host them →

Why git is the best way to store your content

Git keeps the history of every file of the site. You don't need to learn all of git: three commands cover daily work. Publishing then follows by itself.

Every change can be undone

Each edit is saved as a step with a label such as "New prices". You see what changed in any file, and the whole site goes back to yesterday with one command.

The image build is already built in

GitHub builds the image of the site right in the repository and stores it there too. No extra accounts or registries to set up.

Send, and the image is ready

Set up once, you send your changes to git and a fresh image builds by itself. With HERON Agent it also updates on your server by itself.

Correct dates for search engines

The date a page last changed is taken from the history, so the sitemap tells search engines exactly which pages to reread.

One history for you and your AI agent

The agent works on a copy, you see what changed and accept it. Nothing changes on the site without a trace.

A free backup

The whole site with every version lives on GitHub. Laptop broke? Nothing is lost: clone the repository and carry on.

Fast, findable, hard to break

A HERON site is a set of ready pages served by nginx, a small and fast web server. That one decision makes it fast, easy for search engines to read and very hard to hack. Open a card to see how each part works.

The work you would otherwise do by hand

All of this is on from the first build. Open a card to see what it changes, how it looks in the files and where to tune it.

Start from a theme, keep your content

Starter theme: a home page with a heading, text and sections
Starter

Starter

The theme every new site starts with. Clean and light, every page type works from the first minute.

heron new my-site
HERON theme: a product site with a paper heron in the hero
Product

HERON

A product site with a live hero, docs links and an ecosystem map. The theme of this website, light and dark.

heron theme get heron .
Clinic theme: a doctor's site with services, booking and a portrait
Medical

Clinic

Services, doctors, conditions and booking, in several languages. Built for clinics and private practice.

heron theme get clinic .
Firm theme: a law firm site with practice areas and the founder
Legal and business

Firm

Practice areas, team, cases and contacts for a law or business firm. Serious type, quick contact.

heron theme get firm .

Your AI agent already knows how to work with HERON

An agent fills your pages: it writes and changes the text in content files by your request and fills the required fields. It does not touch the structure or the theme, and every build checks its work.

the docs ship inside the image

One builder, and tools around it

HERON builds the site. The rest of the ecosystem keeps it running and tells you how it performs. Use only what you need: the Agent and the Bot are paid add-ons.

HERON CMS builds the site Git your repository Registry GHCR or Docker Hub Agent on your server Your site nginx · static Bot in Telegram Analytics visits → your CRM ODIN open data

Click a block, or watch the story play

HERON CMS

The builder. It creates the folder of a site and turns its text pages, theme and settings into a finished site. Free and open source.

What it does
Pages, search markup, languages, images, sitemap, llms.txt and the nginx config, in one build.
Where it runs
On your computer, on GitHub or on your server: one Docker image or one pip package.
Try it
heron new my-site creates a site with demo pages in a minute; heron serve . shows it in your browser.
Checks itself
heron check . lists what is missing: empty descriptions, broken links, pages without translation.
Docs inside
heron docs prints the documentation for exactly the version you run.
HERON Botbot
Today

Pick the right tool for the job

HERON is for business sites, blogs and docs that should be fast, easy to find and cheap to keep. Need a shop or a visual editor? WordPress does that better.

HERONHugoWordPress
Best forBusiness sites, blogs, docsBlogs, docs, large static sitesShops, portals, sites edited in a browser
Database or PHP on the serverNoneNoneRequired
Search settings with hints on every pageBuilt inUp to the themePlugin
Languages and language switchBuilt inUp to the themePlugin
llms.txt for AI assistantsBuilt inBy handPlugin
Redirects from old addressesReal 301 and 410HTML page with a refreshPlugin
Ready image of the site for a serverYesNoNo
Guides for AI agentsIn the repository and the imageSearch on your ownSearch on your own
Set up without codeConfigurator with a hint on every fieldNo, config filesAdmin panel
Visual page editor in the browserNo, text filesNoYes
Online store, accounts, commentsNo, not the goalNoYes, with plugins
Themes and plugins to choose fromA few, and growingHundreds of themesTens of thousands
Build speed on thousands of pagesGoodFastestNo build step

marks where a tool is strong.

Ask, follow, contribute

Your site is one command away

Create the folder, fill in the configurator, open the site in your browser.

Docker