Platforms
gform runs natively on Linux, macOS, Windows, and WSL — Node.js ≥ 20 is the only runtime prerequisite. Same CLI, same engine, same YAML contracts; only absolute paths and browser discovery look local to the host.
Related: portable · install · browsers · doctor
Supported hosts
| Host | Status |
|---|---|
| Linux | Native — default data home under ~/.local/share/gform |
| macOS | Native — default under ~/Library/Application Support/gform |
| Windows | Native — default under %LOCALAPPDATA%\gform |
| WSL | Native Linux side — data home stays in the distro (~/.local/share/gform), not /mnt/c/Users/… |
Install Node, install Playwright Chromium (and prefer system Chrome for Google sign-in). No separate Windows-only or macOS-only build.
Parity goal
| Must stay the same | May differ by host |
|---|---|
| CLI verbs, aliases, flags, exit semantics | Absolute paths in logs / links |
| Form YAML schema and merge precedence | Default folder when env is unset |
| Run/batch manifests, reason codes, history | Which browsers are discovered |
JSON shapes (-j) | Headed GUI availability |
| Soft vs hard wall behavior | OS install steps for browsers |
Data home (no GFORM_HOME yet)
Owner: core (getGformHome / resolveGformHome). The CLI does not invent a separate home.
Resolution:
GFORM_HOMEif set- else
$XDG_DATA_HOME/gformif set - else the native default for this host (table above)
export GFORM_HOME=/custom/gform # Unix / WSL
setx GFORM_HOME "D:\data\gform" # Windows (new shells)Layout under the home: portable.
If you previously used the old XDG-shaped folder on macOS/Windows (~/.local/share/gform), set GFORM_HOME to that path or copy data into the new default — gform does not auto-migrate.
Host-specific notes
- Browsers / WSL — prefer Linux Chrome inside the distro; Windows
.exeunder/mnt/cmay show as found but often is not CDP-controllable — browsers - Headed runs — need a real display (desktop / WSLg); otherwise warn / fall back to headless
- Doctor — reports home writable + browser readiness — doctor
Quick verify
gform doctor
gform br list
export GFORM_HOME="$PWD/.gform-home" # pin for scripts / CI
gform verify <form>Only absolute paths in the output should look local to that host — commands and outcomes stay the same.