npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

jansible

v0.2.0

Published

[![Node.js >=14](https://img.shields.io/badge/node-%3E%3D14-339933?logo=node.js&logoColor=white)](https://nodejs.org/) [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE) [![SSH](https://img.shields.io/badge/transport-SSH-4B32C

Readme

jansible

Node.js >=14 License: MIT SSH

jansible is a tiny CLI for running the same command across multiple hosts.

Despite the name, it is not a replacement for Ansible. It does not provide idempotency, state management, playbooks, or convergence. It is only meant for simple batch command execution over SSH.

What it does

  • reads a host list from config.json
  • runs the same command on all hosts over ssh
  • executes hosts in parallel
  • prints each host result as soon as it finishes
  • can save combined output to a file

What it does not do

jansible is intentionally small. It does not handle:

  • idempotent deployment
  • drift detection
  • rollback
  • inventory orchestration
  • role / playbook workflows

If you need those features, use Ansible instead.

Why use it

Use jansible when you just want a lightweight tool to run one command on several machines, especially for:

  • quick inspection
  • read-only checks
  • small maintenance tasks
  • temporary ad-hoc operations

Node.js compatibility

jansible is built with a relatively low target and is intended to work with older Node.js versions.

Recommended runtime: >= Node.js 14+

Usage

jansible -e "uptime"
jansible -s -e "systemctl restart nginx"
jansible -e "systemctl status nginx"
jansible -o result.txt -e "df -h"

Options

  • -s, --sequential: run hosts one by one in config order
  • -e, --exec: command to execute
  • -o, --output: write output to a file
  • -h, --help: show help
  • -v, --version: show version

Configuration

Create a config.json file:

{
  "hosts": [
    {
      "ip": "192.168.1.10",
      "user": "root",
      "port": "22",
      "password": "your-password"
    },
    {
      "ip": "192.168.1.11"
    }
  ],
  "common": {
    "user": "root",
    "port": "22"
  }
}

Fields

  • ip: host address
  • user: SSH username
  • port: SSH port
  • password: SSH password; when set, jansible will try to use sshpass

Merge behavior

  • each item in hosts is one target machine
  • common provides default values
  • host-level values override common

How it works

jansible is basically a thin wrapper around the system ssh command.

That means:

  1. it depends on ssh being available on your machine
  2. if you use password authentication, sshpass also needs to be installed
  3. it does not inspect remote state before running commands
  4. repeated runs may produce different results
  5. command safety and repeatability are your responsibility

Example

jansible -o report.txt -e "systemctl status nginx"

This runs the same command on every configured host and writes the collected output to report.txt.

License

MIT. See LICENSE.