Skip to content

Without opening it

The app is also a CLI and an MCP server.

The same binary that draws the windows will, given a flag, describe its tools, run one, or serve them to an agent. Nothing appears on screen. A headless run still starts a renderer: hidden, never shown, torn down when the run ends. That is deliberate: a job and a click take the identical code path, so the files a script gets are the files the app would have produced.

Where the binary is

The same app, built for all three platforms from one source.

macOS
/Applications/GRIDFORM Studio.app/Contents/MacOS/GRIDFORM Studio
Windows
%LOCALAPPDATA%\Programs\gridform-studio\GRIDFORM Studio.exe
Linux
gridform-studio

Give it a short name

# macOS
sudo ln -s "/Applications/GRIDFORM Studio.app/Contents/MacOS/GRIDFORM Studio" \
  /usr/local/bin/gridform

# Linux (AppImage)
sudo ln -s ~/Applications/GRIDFORM\ Studio.AppImage /usr/local/bin/gridform

On macOS, call it directly rather than through open: open detaches the process and you lose stdout.

The command line

  • Bare arguments go to the tool's main input: files for convert and lockup, hex colours for palette.
  • Lists take several values or a comma list; pass none to select nothing.
  • Exit codes: 0 done, 1 the job failed, 2 the command was wrong. Results to stdout, failures to stderr.
gridform                                   # what tools exist
gridform convert --help                    # the options for one tool

gridform convert a.heic b.png --formats webp --compression 40 --out ~/Desktop
gridform palette '#D32F05' '#003A5D' --name Acme --out .
gridform lockup logo.svg --print none --padding 0.1 --out .
gridform specimen --template classic --family Helvetica --out .

Three machine modes

One JSON document is the whole contract: every tool with its summary, when to use it, what it produces, a JSON Schema for its arguments, and worked examples. Anything that can read it can drive the app.

--list

gridform --list

--run

gridform --run '{"tool":"convert","args":{
  "input":["/Users/me/Pictures/IMG_0001.heic"],
  "formats":["webp"],
  "compression":40,
  "out":"/Users/me/Desktop"
}}'

{
  "ok": true,
  "tool": "convert",
  "outputDir": "/Users/me/Desktop/Converted",
  "files": ["IMG_0001.webp"],
  "warnings": []
}

Arguments are checked before any window opens, so a typo comes back immediately and says what was expected.

--mcp

{
  "mcpServers": {
    "gridform": {
      "command": "/Applications/GRIDFORM Studio.app/Contents/MacOS/GRIDFORM Studio",
      "args": ["--mcp"]
    }
  }
}

Speaks MCP over stdio; each catalog tool becomes an MCP tool with its description and schema. Then ask in plain language: convert these screenshots to WebP, build a logo package from these SVGs, pull the palette out of this artwork.

One rule for output

Every tool takes out, a folder to write into. A fresh subfolder is always created inside it, so a job never overwrites existing work.