Skip to contentSkip to Content
Feedback
Installation

Installation

Install Folioh and start the CLI.

Install Folioh

Folioh is one native binary. Install it with the standalone installer:

curl -LsSf https://folioh.site/install.sh | sh

The script detects your operating system and architecture, downloads the matching release archive from GitHub Releases, installs the folioh binary into ~/.local/bin, and prints folioh --version. It warns when that directory is not on your PATH and when Node.js is missing. Your project does not need Python or any package manager.

Inspect the script before running it:

curl -LsSf https://folioh.site/install.sh | less

The installer reads four optional environment variables:

VariableDefaultPurpose
FOLIOH_VERSIONlatestRelease to install, for example 0.3.1.
FOLIOH_INSTALL_DIR~/.local/binDirectory that receives the folioh binary.
FOLIOH_REPOpguijas/foliohGitHub repository the release archive is fetched from.
FOLIOH_DOWNLOAD_URLunsetFull URL of the release archive, for mirrors and air-gapped installs.

Set them on the sh side of the pipe:

curl -LsSf https://folioh.site/install.sh | FOLIOH_VERSION=0.3.1 sh

Verify

folioh --version

Upgrade from Folio

The command is folioh from 0.3.1 onward. Run the installation command above and use folioh in scripts and CI. The installer leaves an existing folio binary in place. Rename FOLIO_* settings to FOLIOH_* for the new command. Older binaries expect the previous archive names; install the new release with the installer instead of using the old binary’s self-update command.

If your project names a preset with the old folio prefix, use its folioh name. Update custom template imports, CSS variables and data attributes to the new namespace as well: for example, --folio-* becomes --folioh-*. The bundled template already uses the new names.

Update

folioh --update

The binary updates itself. It resolves the latest release of pguijas/folioh and, when that release is newer than the installed version, downloads the archive for your platform and the release’s SHA256SUMS, verifies the archive, unpacks it with tar beside the binary, swaps it into place and prints the new version. A binary that is up to date, or ahead of the latest release, says so and changes nothing; a checksum mismatch, a missing checksum file, an archive without the binary or a binary that does not start abort before the installed one is touched. SHA256SUMS comes from the same release as the archive, so it guards against a corrupted or truncated download, not against a compromised release or mirror. Like the installer it needs curl and tar, plus write access to the directory that holds folioh. On Windows the release is a .zip, which tar also unpacks, and the previous binary stays beside the new one as folioh.exe.old.

--update reads two optional environment variables:

VariableDefaultPurpose
FOLIOH_REPOpguijas/foliohGitHub repository whose releases are checked; the installer reads the same variable.
FOLIOH_RELEASES_URLhttps://github.com/<FOLIOH_REPO>/releasesBase URL of the releases, for mirrors: <base>/latest must redirect to <base>/tag/<version>, and <base>/download/<tag>/ must serve the archive and SHA256SUMS.

Re-running the installer installs the latest release as well.

Node.js and pnpm

folioh build and folioh serve render the site through the bundled Next.js template and need Node.js 20.19+ and pnpm 10. Enable pnpm through Corepack and activate pnpm 10, or install it with npm:

corepack enable pnpm && corepack prepare pnpm@10 --activate # or npm install -g pnpm@10

Bundled Template

The Next.js template ships inside the binary. The first folioh build or folioh serve materialises it once under the user cache directory, $XDG_CACHE_HOME/folioh/template/<version>-<hash> or the platform equivalent (%LOCALAPPDATA% on Windows, ~/.cache when neither variable is set), and every build copies it from there into .build/. Set FOLIOH_TEMPLATE_DIR to a template checkout to build from it instead.

Manual Install

Every release on the Releases page  ships one archive per target:

TargetArchive
x86_64-unknown-linux-gnufolioh-x86_64-unknown-linux-gnu.tar.gz
aarch64-unknown-linux-gnufolioh-aarch64-unknown-linux-gnu.tar.gz
x86_64-apple-darwinfolioh-x86_64-apple-darwin.tar.gz
aarch64-apple-darwinfolioh-aarch64-apple-darwin.tar.gz
x86_64-pc-windows-msvcfolioh-x86_64-pc-windows-msvc.zip

Extract the archive and put the folioh binary on your PATH. The installer script does not run on Windows; download the .zip from the Releases page.

Build from Source

With a Rust toolchain installed, build the release binary from a checkout:

git clone https://github.com/pguijas/folioh cd folioh cargo build --release

The binary is written to target/release/folioh.

Contributing to Folioh

Repository setup and the checks are covered in the Developer Guide.

Next Steps

Once Folioh is installed, head to the Quick Start guide to build your first documentation site.