Ghost-CLI is a free, open source content management systems (cms) project written in JavaScript and released under MIT. It has 500 GitHub stars, 239 forks and 4 open issues, and was last pushed 9 hours ago. On this registry it ranks #68 of 69 tracked projects in Content Management Systems (CMS), with 5 head-to-head comparisons available.

What is Ghost-CLI?

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

CI Coverage Status npm version

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`
  1. cd path/to/your/workspace
  2. 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:

  1. The Release workflow runs the tests, then pushes a chore(release): x.y.z commit to main
  2. The Publish workflow publishes that version to npm, creates the vx.y.z tag, and creates the GitHub Release
  3. 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.

  1. Branch off main and set the prerelease version in package.json by hand, e.g. 1.31.0-beta.0
  2. Push the branch
  3. 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.

Frequently asked questions

Is Ghost-CLI free to use?

Ghost-CLI is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Ghost-CLI do?

CLI Tool for installing & updating Ghost

What is Ghost-CLI written in?

Ghost-CLI is primarily written in JavaScript. Its source is publicly available at https://github.com/TryGhost/Ghost-CLI, and it has 500 GitHub stars.