Skip to content

Get started

By the end of this tutorial you will have Henceforth running locally with the schema applied, and you will be logged into Studio (the admin control plane) and App (the end-user workspace) as the instance’s first administrator.

Every release publishes prebuilt tarballs for Linux (x86_64 and arm64); each contains the henceforth server and the hf CLI:

Terminal window
VERSION=v0.1.3
curl -fsSLO "https://github.com/henceforth-labs/henceforth/releases/download/${VERSION}/henceforth-${VERSION}-linux-x86_64.tar.gz"
curl -fsSLO "https://github.com/henceforth-labs/henceforth/releases/download/${VERSION}/sha256sums"
sha256sum -c sha256sums --ignore-missing
tar xzf "henceforth-${VERSION}-linux-x86_64.tar.gz"

The checksum step is optional but recommended; to skip it, pipe the first download straight into tar xz.

On macOS, install through the Homebrew tap instead (it builds from source at the tagged revision):

Terminal window
brew tap henceforth-labs/tap
brew install henceforth

This tutorial currently drives a source checkout of henceforth-labs/henceforth — the just commands below assume the repository root. A tarball-first quickstart is on its way.

  • Rust (stable toolchain) — rustup.rs
  • Bun — bun.sh
  • just — cargo install just or brew install just
  • Docker or Podman — for running PostgreSQL
  • An SSH key without a passphrase — Henceforth ships no built-in accounts: the first administrator is whoever holds the key the server was started with. hf cannot use passphrase-protected keys yet, so if ~/.ssh has no key, or only protected ones, create a dedicated one with ssh-keygen -t ed25519 -f ~/.ssh/henceforth_dev -N '' and add --identity ~/.ssh/henceforth_dev to the hf dev and hf login commands below.

From the repository root:

Terminal window
just install-local

This builds the UI and installs henceforth (the server) and hf (the CLI) into ~/.local/bin. Make sure that directory is on your PATH.

Terminal window
mkdir my-project && cd my-project
hf init

hf init creates hf_project.json5, an empty metadata/ directory, and a git repository.

Terminal window
hf dev

hf dev starts a PostgreSQL container, starts the server with your public key declared as the key that may claim it, and claims the instance as you (an administrator named after your OS user; pass --admin-name to choose another). It then opens the local target’s default surface in your browser, already signed in. A new project has no default yet, so hf dev lists the surfaces you can open instead and leaves the server running. A fresh instance serves only its health and login routes until that claim happens; once it has, no other key can claim it.

With the server running, apply your (still empty) schema:

Terminal window
hf apply

hf whoami prints your principal ID and the target, for example 0198f2c4-… @ local, which confirms you are signed in. hf open henceforth:app opens App, the end-user workspace, signed in as you. In a browser that is not already signed in as you, the page first asks “Sign in as (your name)?”; click Continue. Then open /studio/ in the same browser: Studio loads signed in, with no login form. If a page shows the login form, your browser session has expired; run hf open henceforth:app again to sign in. If hf itself is signed out, run hf login local --ssh first, with the same key.

To model your own data, see Objects, records, and fields. To create your first record through the API, see Create records through the API.