Skip to content

Automating GhostDeck with the CLI

Dawid Wygoda edited this page Jul 14, 2026 · 1 revision

Automating GhostDeck with the CLI

Your fan profiles, scriptable. One exe, seven commands, endless combinations.

Since v1.21 the same GhostDeck.exe that sits in your tray is also a command-line tool. No companion binary, no API keys, no daemon — arguments in, action out:

GhostDeck.exe --profile Silent

That's it. This post shows what's under the hood and what you can build with it. The dry reference (every command, exit codes, the full JSON schema) lives in docs/CLI.md.


The commands

You type You get
--profile Silent (or Balanced / Extreme / SuperBattery) profile switch, incl. your assigned fan-curve preset
--cycle next profile
--fanboost on / off both fans at 100% / back to normal
--curve "Night quiet" / --curve auto apply a saved curve preset / back to stock fans
--overlay on / off gaming overlay (app must be running)
--panic the safe-state reset: Fan Boost off, Balanced, fans auto
--status the current state as JSON

Exit codes are script-friendly: 0 OK, 1 refused/failed, 2 bad usage.

One CLI, two brains

The clever part is who executes the command:

  • App running? The command travels over a local named pipe to the live instance and runs through the exact same code paths as the UI — same safety gates (model tier, experimental opt-in), same on-screen toast, same entry in the change history. Your script can't do anything the buttons can't.
  • App closed? A one-shot mode loads your settings, applies the same gates, talks to the EC directly and exits. Nothing stays resident.

Either way you need an elevated context (EC access requires admin — same as the app itself). A scheduled task with "run with highest privileges" handles that neatly.

Recipes to steal

🌙 Quiet nights, automatically. Two Task Scheduler entries and your laptop minds its manners:

  • 22:00 → GhostDeck.exe --profile Silent
  • 07:00 → GhostDeck.exe --profile Balanced

🎛️ Stream Deck as a fan console. One System → Open action per key: a key for each profile, one for --fanboost on, and a big red one for --panic. Instant physical fan controls.

🎮 A game wrapper that cleans up after itself:

GhostDeck.exe --profile Extreme
Start-Process -Wait "C:\Games\game.exe"
GhostDeck.exe --profile Silent

Full power for the game, silence the moment you quit.

📊 Poor man's watchdog. --status returns JSON, so PowerShell can react to anything:

$s = GhostDeck.exe --status | ConvertFrom-Json
if ($s.cpuTemp -gt 90) { GhostDeck.exe --fanboost on }

(For pure alerting, the built-in temperature alert from v1.20 does this without any script — but now you can also act on it your way.)

⌨️ AutoHotkey, for the keyboard people:

^!F11::RunWait "C:\Tools\GhostDeck.exe --curve ""Night quiet""",, "Hide"

The fine print

  • Output is English-only on purpose — scripts shouldn't break when you change the UI language.
  • --overlay is the one command that needs the app running (the overlay is its window).
  • Writes on experimental models still require the in-app opt-in first — the CLI respects every safety decision you made in Settings.

Built something neat with it — a Rainmeter panel, a Home Assistant hook, a macro pad layout? Show it off in Discussions. 👻

Clone this wiki locally