GUI4CLI docs

Introduction

GUI4CLI turns a Node.js CLI script into a desktop form. You keep the script. The tool reads the flags, opens a window, and runs that same file.

The product is a local CLI (gui4cli on npm). This site explains it. The window is a windowd app (NW.js plus Vite), not a browser tab. windowd is the named launcher. It is not a typo.

The first windowd launch downloads the NW.js runtime (about 200 MB). After that, the window opens from cache. This is not a tiny zero-download wrapper and not a standalone .exe.

What it is

  • Detects Commander and yargs from the source (static AST)
  • Falls back to JSDoc or explicit config fields, then --help if those find no fields
  • Opens one window: inputs, command preview, Run, live stdout/stderr, exit code
  • Remembers last-run values in ~/.gui4cli/lastrun/
  • --build writes a reusable windowd folder that wraps the original script in place

It does not rewrite the script or emit a .exe.

Two surfaces

Surface What it is
gui4cli.dev This site: what it is and how to use it
npm gui4cli The CLI. Instant window or --build folder, on your machine

The site does not run your script.

Detection boundary

A typical Commander or yargs script works. JSDoc detect is first-pass. If static detection and explicit config fields find no fields, GUI4CLI may execute the script with --help and stop waiting after a timeout. That execution can have side effects. Nonempty config fields skip target execution and still override matching static fields. Presentation-only config does not skip the help fallback. --json skips the window, not the detection pipeline. File fields are text paths. Dynamic flag builders and subcommands need gui4cli.config.js. Unsupported options are not advertised as reliable inferred fields.

If detect finds nothing, add gui4cli.config.js next to the script.

Next

  • Install — npx, npm, or a checkout, plus the first-launch download
  • Quick start — open a fixture, then your script
  • CLI — flags