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.