Get started

crofty is built to be run by your assistant, not memorised by you. So there are two steps, and only the first is yours: install it, then hand your AI a block of instructions.

1. Install crofty

Download it and double-click. Nothing else needs to be installed first — Hugo, which crofty uses to build your site, comes with it.

Your OS will warn you. That is expected.

macOS and Windows both stop the first launch of a program they haven’t seen. You can clear it without ever opening a terminal.

macOS. The first open is refused: “crofty.pkg cannot be opened because it is from an unidentified developer.” Click OK. Then open System Settings → Privacy & Security, scroll down to Security, and next to the line about crofty.pkg press Open Anyway. Confirm, and the installer runs.

Open Anyway appears only after the refusal. If you don’t see the button, open the .pkg once more and look again.

Windows. SmartScreen says “Windows protected your PC”, with only a Don’t run button in sight. Click More info; a Run anyway button appears below. The installer needs no administrator password — crofty installs into your own account.

2. Hand it to your assistant

Copy this and paste it to your AI assistant (Codex, Copilot, Gemini, OpenCode, …). It creates your site — you never open a terminal yourself.

I installed crofty, a CLI that turns Markdown into a website I own.
Run `crofty agent` to see what it does, then set up my site.

That’s the whole setup — your assistant takes it from there.

Before you publish

Nothing to arrange up front — but when you’re ready to go live you’ll want:

Prefer to install it yourself?

The installer is the shortest path, not the only one. Either route below leaves you with the same single binary — and the first needs nothing but a browser.

Download the archive

Works on every OS, including Linux.

  1. Open the releases page and download the archive for your OS and CPU — crofty_<version>_windows_amd64.zip, crofty_<version>_linux_arm64.tar.gz, and so on.
  2. Unpack it. Inside is a single crofty binary.
  3. Move it wherever you keep such programs. Putting that directory on your PATH saves you typing; it is not required, since a full path runs just as well.

Don’t unpack it into a .crofty/ directory — that name belongs to crofty’s own per-site state, and crofty init writes there.

Or run a one-liner

curl -fsSL https://crofty.site/install.sh | sh                                          # macOS / Linux
irm https://github.com/ShiroDoromoto/crofty/releases/latest/download/install.ps1 | iex  # Windows

Shortcuts for when they work. On some Windows machines the system TLS stack refuses the download outright (SEC_E_NO_CREDENTIALS). If that happens, take the archive above — your browser gets through.

The script drops crofty in ~/.local/bin and touches nothing else. For a system-wide install, name the prefix: curl -fsSL https://crofty.site/install.sh | sudo PREFIX=/usr/local sh.

Both routes install the binary alone. crofty needs Hugo (the extended build) on your PATH — only the click installers bring their own.

Other ways in

Each release ships a crofty_<version>_checksums.txt if you want to verify what you downloaded.

The full command flow, step by step

You never need to run these yourself — your agent does. They’re the steps crofty agent walks through.

Create your site — from scratch, or in an existing folder you keep in Git. crofty deploys to Cloudflare by default; pass --provider sftp or ftps to publish to your own server instead:

crofty init        # new project under ~/Documents/Crofty/
crofty init .      # or set up in place, leaving your layout as-is
crofty init --provider sftp --host example.com --user me --path /var/www/site

See it, then publish to your own host:

crofty preview     # open it locally — no account yet
crofty connect     # save your deploy credentials to your keychain
crofty deploy      # publish to your host — Cloudflare Pages, or your SFTP/FTPS server
crofty share       # print a summary + link to paste anywhere

Drafts & scheduling — standard Hugo, nothing crofty-specific: draft: true keeps a page out of the build; a future date holds it until then. crofty build lists what it left out.

Make it yours:

crofty theme set quiet-paper   # or: terminal, serif (default)
crofty theme eject             # take the design tokens to tweak by hand
crofty features                # everything crofty can do, and how to turn each on
crofty add mermaid             # turn one on; also: abc, highlight, raw-html, analytics

Want reader support? Add a Stripe / GitHub Sponsors / Ko-fi link under support in data/profile.yml — it shows in your footer, and the money never routes through crofty.

Updating

crofty updates the way you installed it.

Installed by double-click? Download the new .pkg / .exe from the latest release and double-click it again. Your OS warns about each download it hasn’t seen before, so expect the warning once more, and clear it the same way.

Installed from a terminal? Re-run the same line:

curl -fsSL https://crofty.site/install.sh | sh                                          # macOS / Linux
irm https://github.com/ShiroDoromoto/crofty/releases/latest/download/install.ps1 | iex  # Windows

crofty also tells you when you’re behind: run any command and, if a newer release is out, it prints the one line to update for how you installed it.

Installed with Homebrew, Scoop, or a .deb / .rpm? Those routes no longer receive updates. Leave (brew uninstall crofty && brew untap ShiroDoromoto/crofty, scoop uninstall crofty && scoop bucket rm crofty, sudo apt remove crofty, sudo dnf remove crofty), then come back by the installer or the script. Nothing you wrote is touched.

Your content is plain Markdown and the theme is a frozen output contract, so an update never rewrites what you’ve written — and crofty doctor still checks the built site. New abilities show up in crofty agent, so your assistant picks them up on its next read; nothing to relearn.

Changed your mind?

No lock-in, ever. Your content is plain Markdown and the build is an ordinary Hugo site you can keep and run without crofty. More on leaving →