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

rubecli

v0.1.0

Published

Rigs that build themselves. AI-driven automation pipelines from shell scripts.

Downloads

117

Readme

Rube

Rigs that build themselves.

The automation platform that AI agents can actually use. No drag-and-drop. No YAML. Describe what you want, and Claude builds a working pipeline.

Why Rube exists

You want automation, not a chore.

No SaaS. No YAML. No drag-and-drop. No infrastructure to deploy.

You describe what you want. An agent builds it. You get a folder of shell scripts you can read, run, git commit, and forget about.

Automation you own. Code you didn't have to write.

What you get

stale-tickets/
├── steps/
│   ├── fetch.sh        # Get data from Jira
│   ├── transform.sh    # Process with DuckDB
│   └── notify.sh       # Post to Slack
├── out/                # Outputs live here
└── .beads/             # DAG state (dependencies)

Shell scripts. Files. Git-committable. Debug with bash steps/fetch.sh.

Watch it build itself

You: I need to find Jira tickets that haven't been updated
     in 7 days and post them to Slack every morning.

Claude: I'll build a rig for that.

        $ mkdir stale-tickets && cd stale-tickets
        $ rube init
        $ rube step add fetch -d "Get stale tickets" -s '...'
        $ rube step add format -d "Format message" -s '...'
        $ rube step add notify -d "Post to Slack" -s '...'
        $ rube dep add format --needs fetch
        $ rube dep add notify --needs format

        Done. Run it with: rube run

You: Run it.

Claude: $ rube run
        ✔ fetch (2.1s)
        ✔ format (0.1s)
        ✔ notify (0.3s)

        ✓ Completed 3 steps (2.5s)

No UI. No tinkering. The agent did it.

150 integrations built-in

Rube uses Steampipe under the hood. Query any API with SQL:

SELECT key, summary, assignee
FROM jira_issue
WHERE updated < now() - interval '7 days'

Available: jira · slack · github · gitlab · postgres · aws · gcp · azure · pagerduty · datadog · okta · zendesk · 140+ more

Transforms are DuckDB. Secrets are psst. All SQL. All stuff the agent already knows.

Parallel by default

Steps without dependencies run in parallel:

$ rube run
✔ fetch-jira (2.1s)      # ─┐
✔ fetch-github (1.8s)    # ─┼─ parallel
✔ fetch-pagerduty (0.9s) # ─┘
✔ merge (0.3s)           # waits for all three
✔ notify (0.1s)

No configuration. If it can run, it runs.

Get started

# Install
npm install -g rube

# Set up dependencies
rube install

# Then either:

# Option A: Ask Claude to build it
# "Build me a rig that checks for open PRs older than 7 days and posts to Slack"

# Option B: Build it yourself
mkdir my-rig && cd my-rig
rube init
rube step add fetch -d "Get data" -s '#!/bin/bash
curl -s https://api.example.com/data > out/data.json'
rube run

Commands

| Command | What it does | |---------|--------------| | rube install | Install all dependencies | | rube doctor | Check dependencies are installed | | rube init | Initialize a rig | | rube list | List all registered rigs | | rube step add <name> -d "desc" -s 'script' | Add a step | | rube dep add <step> --needs <dep> | Wire dependencies | | rube status | See what's ready, waiting, done | | rube run | Execute the DAG | | rube run --dry | Preview execution plan | | rube secrets set <name> | Store a secret | | rube secrets list | List stored secrets | | rube export | Generate Dockerfile + compose |

Runs anywhere

Local: rube run

GitHub Actions: Free cron, no infra. rube export gives you a Docker image with everything baked in.

# .github/workflows/stale-tickets.yml
name: Stale tickets
on:
  schedule:
    - cron: '0 9 * * *'  # Every day at 9am
jobs:
  run:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: docker build -t stale-tickets .
      - run: docker run --env-file .env stale-tickets
        env:
          JIRA_TOKEN: ${{ secrets.JIRA_TOKEN }}
          SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}

Commit. Push. Your automation runs forever for free.

Docker: rube export generates Dockerfile + compose.

Philosophy

  1. Shell scripts are fine. Stop overthinking.
  2. Files over memory. Steps communicate via out/.
  3. Git is truth. Commit your rigs.
  4. Agents can drive it. That's the point.

Requirements

  • Node.js 20+

All other dependencies are installed automatically via rube install.

Credits

License

MIT