Execute Adobe Photoshop, Illustrator, and After Effects scripts from the terminal.
Wraps osascript and open -a to dispatch .jsx, .js, and .psjs files on macOS. Structured JSON output, batch execution, and TTY-aware formatting make it suitable for both interactive use and agent/CI pipelines.
Requires Rust and macOS.
# From GitHub
cargo install --git https://github.com/oleksiiluchnikov/heyps.git
# Or clone and build
git clone https://github.com/oleksiiluchnikov/heyps.git
cd heyps
cargo install --path .heyps [OPTIONS] <SCRIPT>...
heyps --stdin [OPTIONS]
# Run a Photoshop script (default app)
heyps render.jsx
# Target Illustrator
heyps -a ai logo.jsx
# Target After Effects, beta version
heyps -a ae -t beta comp.jsx
# Target a specific year
heyps -t 2024 render.jsx
# JSON output
heyps --json render.jsx
# Dry run (preview commands without executing)
heyps --dry-run render.jsx
# Batch execution
heyps script1.jsx script2.jsx script3.jsx
# Read paths from stdin (newline-delimited or JSON array)
echo '["a.jsx", "b.jsx"]' | heyps --stdin
# Stop at first failure in a batch
heyps --fail-fast script1.jsx script2.jsx| Flag | Short | Default | Description |
|---|---|---|---|
<SCRIPT>... |
required | Path(s) to script files (.psjs, .jsx, .js) | |
--app APP |
-a |
ps |
Target app: ps, ai, ae |
--target TARGET |
-t |
latest |
Target version: latest, beta, or a year (e.g. 2024) |
--json |
Output raw JSON | ||
--output FORMAT |
auto | Output format: json, compact, table |
|
--dry-run |
Preview commands without executing | ||
--debug |
Log child-process output to stderr | ||
--quiet |
-q |
Suppress non-essential stderr output | |
--stdin |
Read script paths from stdin | ||
--fail-fast |
Stop at first failure |
When no explicit format flag is given:
- Terminal (TTY): defaults to
tableformat - Piped: defaults to
jsonformat
Single script:
{"ok":true,"app":"ps","appPath":"/Applications/Adobe Photoshop 2025.app","script":"render.jsx","scriptType":"jsx","elapsedMs":1234}Batch (multiple scripts) outputs a JSON array of the above objects.
Errors are written to stderr:
{"ok":false,"error":{"message":"Script file does not exist: foo.jsx"}}| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Runtime error (execution failure) |
| 2 | Usage error (invalid args, missing file) |
| 4 | Partial failure (batch: some succeeded, some failed) |
| Abbreviation | Application |
|---|---|
ps |
Adobe Photoshop |
ai |
Adobe Illustrator |
ae |
Adobe After Effects |
| Extension | Dispatch method |
|---|---|
.psjs |
open -a (Photoshop only) |
.jsx |
osascript (AppleScript do javascript) |
.js |
osascript (AppleScript do javascript) |