A command-line interface for RESTHeart plugin developers to automate the local install, build, run, and restart workflow.
Developing RESTHeart plugins often means repeating the same manual loop:
- install or update RESTHeart locally
- build plugin JARs with Maven or Gradle
- copy and deploy artifacts
- restart the server and verify status
RESTHeart CLI (rh) removes this friction by turning that loop into a small set of predictable commands. It is focused on faster feedback during local development and less operational overhead while iterating.
RESTHeart CLI (rh) streamlines development and management of RESTHeart Java applications. It provides a single interface for common tasks such as:
- Installing and updating RESTHeart
- Building and deploying Java plugins
- Starting and stopping RESTHeart instances
- Watching for code changes and automatically rebuilding/redeploying
- Faster development loop: rebuild and restart automatically while coding
- Fewer manual steps: one CLI for build, deploy, run, status, and kill
- Safer local operations: explicit process and port management commands
- Better version flexibility: install from GitHub releases or local SNAPSHOT builds
You will typically begin with a Maven or Gradle project. Refer to the official documentation for detailed instructions on implementing custom plugins.
You can use Maven or Gradle projects. By default, rh auto-detects the build system from project files.
- Node.js (v18 or later)
- Java JDK (v21 or later)
- Maven (3.8 or later) or Gradle (7 or later), if not using the corresponding wrapper
npm install -g @softinstigate/rh
# or use npx without global install:
npx @softinstigate/rh --helpgit clone https://github.com/SoftInstigate/restheart-cli.git
cd restheart-cli
npm install
npm link# Install RESTHeart (latest version)
rh install
# Build and deploy your plugin
rh build
# Run RESTHeart
rh run
# Enable file watching (auto-rebuild on changes)
rh watchExpected outcomes:
rh installdownloads and installs RESTHeart into.cache/restheartin your project directory.rh buildruns the auto-detected build system (Maven or Gradle) and deploys generated plugin JARs into RESTHeart's plugins directory.rh runstarts RESTHeart (default HTTP port: 8080).rh watchmonitors source/config changes and automatically rebuilds/restarts RESTHeart.
๐ Look at the Usage Guide for more practical examples for common workflows.
Install or update RESTHeart to a specific version, or from a local build:
rh install [version|path] [--force]Options:
version|path: RESTHeart version (e.g., "latest", "9.4.0") or path to core/target directory (default: "latest")--force,-f: Force reinstallation even if already installed
Examples:
# Install the latest version from GitHub releases
rh install
# Install a specific version from GitHub releases
rh install 9.4.0
# Install from local RESTHeart build (after mvn package)
rh install ~/restheart/core/target
# Install from local build (relative path)
rh install ../restheart/core/target
# Force reinstall from local build
rh install ~/restheart/core/target --forceWorking with RESTHeart SNAPSHOT builds:
To work with a locally built SNAPSHOT version of RESTHeart:
# 1. Build RESTHeart core
cd ~/restheart
mvn clean package # builds to core/target/
# 2. Install from local build in your plugin project
cd ~/my-restheart-plugin
rh install ~/restheart/core/target
# 3. Start development (choose one mode)
# Option A: run once
rh run
# Option B: watch mode (auto-rebuild/restart on changes)
rh watchBuild and deploy RESTHeart plugins from the current directory:
rh buildThis command:
- Builds the project using the selected build system (auto-detected Maven or Gradle)
- Deploys the built JARs to the RESTHeart plugins directory
Start or restart RESTHeart with optional configuration:
rh run [restheart-options..] [--build] [--port PORT]Options:
restheart-options: Options to pass directly to RESTHeart (after -- separator)--build,-b: Build and deploy the plugin before running RESTHeart--port,-p: HTTP port for RESTHeart to listen on
Examples:
# Run with default settings
rh run
# Run with custom configuration file
rh run -- -o etc/localhost.yml
# Build before running
rh run --buildStop any running RESTHeart instances:
rh kill [--port PORT]Options:
--port,-p: HTTP port of the RESTHeart instance to kill
Watch for source changes, automatically rebuilding and restarting RESTHeart:
rh watch [--build] [--port PORT] [--debounce-time MS]Options:
--build,-b: Build and deploy the plugin before starting the watch process--port,-p: HTTP port for RESTHeart to listen on--debounce-time: Time in milliseconds to wait after the last file change before rebuilding (default: 1000)
Example:
# Watch source files with custom configuration
rh watch -- -o etc/localhost.ymlCheck if RESTHeart is currently running:
rh status [--port PORT]Options:
--port,-p: HTTP port of the RESTHeart instance to check
These options can be used with any command:
--version: Display the version number of RESTHeart CLI--debug,-d: Run in debug mode with additional diagnostic information--verbose,-v: Show verbose output including debug messages--quiet,-q: Show only error messages and suppress other output--timestamps,-t: Add timestamps to log messages for better traceability--build-system: Build system preference (auto,maven,gradle) used by build/deploy workflows--help,-h: Show help information
RESTHeart CLI uses a configuration system that manages:
- Repository directory (current working directory)
- Cache directory (
.cachein the repository directory) - RESTHeart directory (
.cache/restheartin the repository directory) - HTTP port (default: 8080)
- Debug mode (default: false)
- Build system preference (default:
auto)
These settings can be modified through command-line options or directly in the code.
A typical development workflow with RESTHeart CLI:
- Install RESTHeart:
rh install - Start with file watching:
rh watch - Make changes to your code
- RESTHeart CLI automatically detects changes, rebuilds and restarts
- Check status:
rh status - When done, stop RESTHeart:
rh kill
๐ Look at the Usage Guide for more practical examples for common workflows.
Check the log file in the repository directory (restheart.log) for error details.
Ensure your selected build tool (Maven or Gradle) is correctly installed and the project structure is valid.
Use rh kill to stop any running instances, or specify a different port with --port.
For more detailed information, enable debug mode:
rh --debug [command]For maintainers who need to publish a new version to npmjs.com:
- You must be logged in to npm:
npm login - You must have publish permissions for the
@softinstigate/rhpackage
-
Update the version in
package.json:npm version patch # for bug fixes npm version minor # for new features npm version major # for breaking changes
-
Run quality checks:
npm run lint:check npm run format:check
-
Publish to npm:
npm publish --access public
-
Push the version tag to GitHub:
git push && git push --tags
After publishing, verify the package is available:
npm view @softinstigate/rhMIT
- SoftInstigate info@softinstigate.com