SlopScore
20 crowdincl. 3 critics

ssh-fleet

⚡ Run commands across all your SSH servers in parallel — lightweight Node.js CLI. Tag-based host selection, YAML/JSON config, JSON output, SFTP transfer.
Open repo on GitHub Open the demogithub.com/flantofun/ssh-fleet
TypeScript · ★ 1 · 0 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)automation
listed 1 hour ago by flantofun · last checked 1 hour ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-01: ⚡ Run commands across all your SSH servers in parallel — lightweight Node.js CLI. Tag-based host selection, YA; its own README says "6-000000?style=flat-square&logo=openai" alt="Built with Codex and GPT-5". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as flantofun. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
⚡ Run commands across all your SSH servers in parallel — lightweight Node.js CLI. Tag-based host selection, YAML/JSON config, JSON output, SFTP transfer.
website
https://github.com/flantofun/ssh-fleet
topics
automationdevopsfleet-managementnodejsparallelremote-executionsshssh-clisysadmintypescript
created
2026-07-20 · pushed 2 months ago · 16 commits · 1 contributor
release
v0.1.0 · 2026-07-20
languages
TypeScript 87%JavaScript 13%
paperwork
contributinglicensereadme 57% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 1 hour ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
automation
ai_generated
mostly
human_touch
light
status
works-on-my-machine
language (detected)
javascripttypescript
topic (detected)
automationdevopsfleet-managementnodejsparallelremote-executionsshssh-clisysadmintypescript
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: ⚡ Run commands across all your SSH servers in parallel — lightweight Node.js CLI. Tag-based host selection, YA; its own README says "6-000000?style=flat-square&logo=openai" alt="Built with Codex and GPT-5". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

Latest Release Node Version CI License npm Built with Codex and GPT-5.6

SSH Fleet

English | 简体中文

⚡ Run commands across all your servers in parallel — from a single, dependency-free CLI.

Install · Quick Start · Commands · Config

ssh-fleet demo


SSH Fleet is a lightweight Node.js CLI for managing and operating on a fleet of SSH hosts. Define your servers once in a YAML or JSON file, then execute shell commands across all (or a subset) of them in parallel, stream results, push or pull files, and get machine-readable JSON output for scripting.

  • 🚀 Parallel execution with configurable concurrency
  • 📜 Multi-line scripts sent directly from a local file
  • 🏷️ Tag-based host selection (--hosts tag:prod)
  • 📊 Multiple output formats — grouped, combined, JSON, silent
  • 🔑 SSH key + password auth, agent forwarding support
  • 📦 Zero runtime deps for the CLI itself — ships as a single bundled file
  • 📝 YAML or JSON config — your fleet as code
  • 🔄 File transfer — push/pull via SFTP
  • ❤️ MIT licensed, TypeScript, thoroughly tested

Install

npm install -g ssh-fleet

Or run ad-hoc with npx:

npx ssh-fleet exec 'uptime'

Quick start

1. Generate a config

ssh-fleet init

This creates ssh-fleet.yml in the current directory:

defaultUser: root
defaultPort: 22
defaultPrivateKeyPath: /Users/you/.ssh/id_rsa

hosts:
  - name: web-1
    host: 192.168.1.10
    tags: [web, prod]
  - name: web-2
    host: 192.168.1.11
    tags: [web, prod]
  - name: db-1
    host: 192.168.1.20
    user: postgres
    tags: [db, prod]

2. List your fleet

ssh-fleet list
Fleet hosts: 3 host(s)
Config: /path/to/ssh-fleet.yml
Tags: db, prod, web

web-1  root@192.168.1.10:22  ✓  [web,prod]
web-2  root@192.168.1.11:22  ✓  [web,prod]
db-1   postgres@192.168.1.20:22  ✓  [db,prod]

3. Run a command everywhere

ssh-fleet exec 'uptime'
 OK  web-1 192.168.1.10 45ms
 11:51:05 up 142 days, 21:36,  2 users,  load average: 0.08, 0.02, 0.01

 OK  web-2 192.168.1.11 42ms
 11:51:05 up 142 days, 21:36,  0 user,  load average: 0.06, 0.02, 0.00

Summary:  2 ok  2 hosts  87ms total

4. Health check at a glance

ssh-fleet status
 OK  web-1 192.168.1.10 1352ms
=== HOSTNAME ===
web-1
=== UPTIME ===
 11:51:05 up 142 days, 21:36,  2 users,  load average: 0.08, 0.02, 0.01
=== LOAD ===
0.08 0.02 0.01 1/377 964834

 OK  web-2 192.168.1.11 1320ms
=== HOSTNAME ===
web-2
=== UPTIME ===
 11:51:05 up 142 days, 21:36,  0 user,  load average: 0.06, 0.02, 0.00
=== LOAD ===
0.06 0.02 0.00 1/197 1452300

Summary:  2 ok  2 hosts  2672ms total

5. Target specific hosts

# By name
ssh-fleet exec 'df -h' --hosts web-1,web-2

# By tag
ssh-fleet exec 'sudo systemctl restart nginx' --hosts tag:web

# All hosts
ssh-fleet exec 'free -m' --hosts all

6. Transfer files

# Push a config file to all web servers
ssh-fleet copy push ./nginx.conf /etc/nginx/nginx.conf --hosts tag:web

# Pull logs from a single host (saved with .hostname suffix)
ssh-fleet copy pull /var/log/syslog ./syslog --hosts web-1

Try it without SSH servers

The Docker demo starts two disposable SSH hosts on your machine, so the complete workflow can be judged without cloud credentials or existing infrastructure.

For the automated walkthrough:

npm install
npm run judge

This builds the CLI, starts the hosts, waits for SSH, exercises commands, scripts, JSON output, targeting, SFTP push/pull, and then removes the containers.

npm install && npm run build
docker compose -f examples/docker-demo/compose.yml up -d --build
node dist/cli.js list --config examples/docker-demo/ssh-fleet.yml
node dist/cli.js exec 'hostname && uptime' --config examples/docker-demo/ssh-fleet.yml
node dist/cli.js run examples/docker-demo/health-check.sh --config examples/docker-demo/ssh-fleet.yml
docker compose -f examples/docker-demo/compose.yml down

Commands

exec <command>

Run a shell command on selected hosts.

Flag Description Default
--hosts <sel> Host selector (names, tag:xxx, or all) all
-c, --concurrency <n> Max concurrent connections 8
--seq Run sequentially instead of in parallel false
-t, --timeout <ms> Per-host timeout none
-o, --output <mode> Output: grouped / combined / json / silent grouped
-f, --fail-fast Stop on first failure false
--config <path> Path to config file auto-discovered
# JSON output for piping into jq
ssh-fleet exec 'hostname' -o json | jq '.[] | select(.exitCode==0) | .name'

run <script-file>

Run a local multi-line shell script on the selected hosts. The script does not need to be copied to the remote machines first and accepts the same execution flags as exec.

cat > deploy.sh <<'EOF'
set -e
cd /srv/my-app
git pull --ff-only
npm ci --omit=dev
sudo systemctl restart my-app
EOF

ssh-fleet run ./deploy.sh --hosts tag:web --concurrency 4 --fail-fast

list

List hosts in the fleet. Flags: --verbose, --json, --tags.

init

Create a starter config. Flags: --force, --json, --path <dir>.

status

Quick health check — runs hostname && uptime on every host.

Configuration

SSH Fleet searches these locations (first match wins):

  1. ./ssh-fleet.yml / .ssh-fleet.yml
  2. ./ssh-fleet.yaml / .ssh-fleet.yaml
  3. ./ssh-fleet.json / .ssh-fleet.json
  4. Parent directories (up to home)
  5. ~/.ssh-fleet.{yml,yaml,json}

Host fields

Field Required Description
name ✅ Unique identifier
host ✅ Hostname or IP
port ❌ SSH port (default 22)
user ❌ SSH user (falls back to defaultUser)
password ❌ Password auth (prefer keys!)
privateKeyPath ❌ Path to private key
passphrase ❌ Passphrase for encrypted key
tags ❌ Array of tags for grouping

Top-level defaults

defaultUser: root
defaultPort: 22
defaultPrivateKeyPath: ~/.ssh/id_rsa

Any host-level field overrides the default.

Why?

Managing 5, 50, or 500 servers shouldn't mean 500 terminal tabs. Tools like Ansible are powerful but heavy; SSH Fleet aims to be the fast, zero-config layer below that — the thing you reach for when you just need to run one command everywhere, right now.

Comparison

Feature ssh-fleet Ansible Fabric pdsh
Setup npm i -g pip + inventory pip apt/brew
Config 1 YAML file inventory + playbooks Python file none
Parallel ✓ ✓ ✓ ✓
Zero deps on remote ✓ ✗ needs Python ✗ needs Python ✓
JSON output ✓ ✓ ✗ ✗
File transfer ✓ ✓ ✓ ✗
Lightweight ✓ (Node.js) ✗ (Python) ✗ (Python) ✓ (C)

Roadmap

  • run command for multi-line scripts from a file
  • Diff mode: show only hosts where output differs
  • Interactive host picker (fzf-style)
  • Docker image for CI pipelines
  • Shell completions (bash, zsh, fish)
  • top command for live resource monitoring

Development

git clone https://github.com/flantofun/ssh-fleet
cd ssh-fleet
npm install
npm run dev -- list          # run via tsx
npm run build                # compile to dist/
node dist/cli.js exec 'uptime'

Built with Codex + GPT-5.6

SSH Fleet was created from scratch through an AI-native vibe coding workflow with Codex using GPT-5.6. The builder supplied the product idea, requirements, iterative feedback, testing, and final decisions; Codex generated and refined the TypeScript implementation, tests, Docker judge environment, documentation, and submission assets. See CODEX_BUILD_LOG.md for the implementation record and verification evidence.

License

MIT © 2026 flantofun

Read the rest on GitHub

Scan report · 2026-10-01
  • ✓ Prohibited terms or links — profanity in body/README
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review — +10 owner has 0 followers

From the balcony · 3 of 4 clapped

  1. Cap'm Slopclapped
    Clear README with what it does, how to install and run it, config examples, and honest disclosure that it's mostly AI-generated with light human touch.
  2. Princessclapped
    Clear working CLI with demo commands, YAML/JSON config, MIT license, declared status 'works-on-my-machine', zero runtime deps, and comprehensive README showing actual usage.
  3. Crusoeclapped
    Zero runtime dependencies, local YAML/JSON config with no telemetry, no credential requests beyond standard SSH keys, and zero known vulnerabilities.

Schnitzel read it and passed. Their reasons are on the balcony, with every other verdict.

Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

0 comments

log in to comment.

report this listing — log in to report