Ghost-CLI is the official Node.js command-line tool for installing and updating Ghost, the open-source publishing platform, and it is aimed at developers and site owners who run Ghost themselves — on a production Linux server or locally for theme work.
What it is
Ghost-CLI is a JavaScript command-line tool, published to npm as ghost-cli and released under the MIT licence by the Ghost Foundation, that handles the installation and updating of Ghost. It lives in the Node.js ecosystem: it is installed globally through npm, after which the ghost command is available anywhere on the system rather than being tied to a single project directory. The repository topics — blogging, cms, headless-cms, jamstack, journalism, publishing — describe the kinds of sites Ghost serves rather than features of the CLI itself, which is concerned with the server side of running one.
The concrete problem it solves is the manual provisioning that otherwise precedes a working Ghost site. Standing Ghost up on a Linux server by hand means wiring a reverse proxy, TLS certificates and a process supervisor around a Node application; ghost install performs that production Linux setup for you, including Nginx, SSL and Systemd. For work that does not need a server at all, ghost install local produces a local setup intended for theme development and testing, so a developer gets a running instance without assembling one.
Key capabilities
- ghost install provisions a production Linux setup including Nginx, SSL and Systemd.
- ghost install local creates a local Ghost instance intended for theme development and testing.
- Installing and updating Ghost is the tool's stated purpose: "CLI Tool for installing & updating Ghost".
- Prerelease builds are published to npm under the next tag and installed with npm install -g ghost-cli@next.
- Work on the CLI itself uses pnpm: pnpm install in a cloned workspace, then pnpm link, after which ghost runs anywhere on the system.
- Releases are cut from the Release workflow on main by choosing a bump type — auto, patch, minor, major or dry run — after which the Publish workflow publishes to npm, creates the vx.y.z tag and opens the GitHub Release.
- Release notes are generated by scripts/release-notes.js from emoji-prefixed commits since the previous tag, previewable with pnpm release-notes v1.30.0 v1.30.1, while pnpm test runs the test suite.
Who uses it and how
- Operators self-hosting Ghost on their own Linux servers, for whom ghost install leaves an HTTPS-enabled site behind Nginx and managed by Systemd.
- Theme developers who want a local instance to build and test against through ghost install local.
- Publishing projects matching the repository topics — blogging, journalism, headless-cms, jamstack — where Ghost is the content backend and the CLI manages the server beneath it.
- Maintainers cutting releases from main through the Release workflow, and contributors running pnpm install, pnpm link and pnpm test.
Getting started
Install it globally with npm install -g ghost-cli@latest, then run ghost install for a production Linux setup or ghost install local for a local instance. Prerelease builds come from the same package with npm install -g ghost-cli@next.
How it compares
No similar tools and no list of paid products it replaces are named in the facts supplied for this entry, so it stands alone in this registry on those axes. What the facts do establish is its position as the Ghost Foundation's own MIT-licensed tooling, distributed on npm as ghost-cli, which is the most direct comparison point available here.
When to use it — and when not to
Anyone taking the production path must still operate the Linux server that ghost install configures: Nginx, the SSL certificates and the Systemd service remain theirs to run and renew. Anyone without a Linux host to administer, or who would rather not own a reverse proxy and certificate lifecycle, should look elsewhere first. The README excerpt is weighted towards contributor and release-process documentation and its compatibility note about Ghost versions is truncated, so supported version ranges should be confirmed in the repository before planning an upgrade.
project readme (upstream, from github) — read inline
Ghost-CLI

Basic Setup
npm install -g ghost-cli@latest
ghost install (for a production linux setup, including Nginx, SSL, and Systemd)
ghost install local (for a local setup, useful for theme development/testing)
NOTE: This CLI is not designed to work with any Ghost versions /Ghost-CLI path/to/your/workspace`
cd path/to/your/workspace
pnpm install
To run the CLI for testing:
pnpm link
ghost (can run anywhere on the system)
Running tests
pnpm test
Publishing a new version
Releases are cut from the Release workflow. Run it from main and pick a bump type:
auto (default) — minor if there are ✨ commits since the last release, otherwise patch
patch / minor / major — force a specific bump
dry run — do everything except push, to preview the version
From there it's automatic:
- The Release workflow runs the tests, then pushes a
chore(release): x.y.z commit to main
- The Publish workflow publishes that version to npm, creates the
vx.y.z tag, and creates the GitHub Release
- Release notes are generated by
scripts/release-notes.js from the emoji-prefixed commits since the previous tag — see the commit message convention
To preview the notes for a release locally:
pnpm release-notes v1.30.0 v1.30.1
The Release workflow pushes with the GST_TOKEN PAT. A push made with the default GITHUB_TOKEN would not trigger the Publish workflow, so that token needs write access to this repo.
Publishing a prerelease
Prereleases are manual — the Release workflow only cuts stable versions.
- Branch off
main and set the prerelease version in package.json by hand, e.g. 1.31.0-beta.0
- Push the branch
- Run the Publish workflow via "Run workflow", selecting your branch as the ref, with
mode: publish and npm_tag: next
Install it with:
npm install -g ghost-cli@next
Keep the prerelease on a branch — a prerelease version in a chore(release): commit on main would be published under latest. The manual dispatch also skips git tagging and the GitHub Release, so a prerelease leaves no tag behind.
Use mode: dry-run to preview the tarball without publishing.
Copyright & License
Copyright (c) 2013-2026 Ghost Foundation - Released under the MIT license. Ghost and the Ghost Logo are trademarks of Ghost Foundation Ltd. Please see our trademark policy for info on acceptable usage.