Installation
fghj isn’t packaged yet — you build it from source with Cargo. There’s no
installer, no Homebrew tap, and no prebuilt binaries at this stage.
Prerequisites
Section titled “Prerequisites”- Rust (stable) — install via rustup.
- Docker — Docker Desktop, OrbStack, or Colima.
fghjdconnects to whichever Docker context is currently active and refuses to start if it can’t reach it. - CUE — only needed for
fghj validate, which shells out to thecueCLI to check an.fghj.yamlagainst fghj’s schema. - macOS —
fghjd’s split-DNS integration (writing/etc/resolver/fghj.internal) and its SSH-agent-socket recovery for Git-over-SSH clones are currently macOS-specific. Linux/Windows support would need equivalent mechanisms added.
git clone https://github.com/virviil/fghj.gitcd fghjcargo build --releaseThis produces three binaries under target/release/:
fghj— the unprivileged CLI you run day to day.fghjd— the root-owned superdaemon (DNS server, TLS proxy, local CA, control API).fghj-sidecar— the in-network TLS/DNS proxy that runs one per run, baked into a Docker image on demand (see In-network TLS proxy sidecar). You never invoke this one directly or put it onPATH.
Put fghj and fghjd on your PATH, e.g.:
cp target/release/fghj target/release/fghjd /usr/local/bin/The web UI
Section titled “The web UI”The Svelte UI lives under ui/ and is embedded into the fghjd binary at
compile time (include_dir!), so it has to be built before cargo build
picks it up:
cd uinpm installnpm run buildcd ..cargo build --releaseStart the daemon
Section titled “Start the daemon”fghjd needs root to bind ports 80/443, run the DNS server, and install
its CA into the system trust store:
sudo fghjdLeave it running in the foreground (or supervise it with systemd/a
launchd LaunchDaemon for a persistent install — fghjd doesn’t
daemonize itself). The first time it starts, it generates a local CA,
installs it into your system’s trust store, and writes
/etc/resolver/fghj.internal so macOS routes *.fghj.internal lookups to
its own DNS server.
Once it’s up, verify the CLI can reach it:
fghj wire --helpNext: Quickstart.