alt.hn

3/31/2026 at 4:12:29 PM

Scotty: A beautiful SSH task runner

https://freek.dev/3064-scotty-a-beautiful-ssh-task-runner

by speckx

3/31/2026 at 7:54:14 PM

They don't mention a twinkle that many task runners seem keen to omit: how do you handle things where there are human steps involved and not everything is automated? How do you track what has worked and what is still left to do if things go sidesways?

I built baker (https://github.com/coezbek/baker) for this some time ago (pre-LLM mostly). It uses markdown with embedded bash and ruby commands to give you a checklist which is run both automated for commands or with human in the loop for things which aren't automated (like login to some admin panel and generate that key, copy it here).

The checklist gets checked off both by human actions (you confirm that you did it) and automated e.g. success bash command runs. So you keep a markdown artifact on where you are in your project and can continue later.

You can wrap commands to run via SSH (of course clunkier than what scotty here does, but you can select a port for SSH).

by oezi

3/31/2026 at 6:11:58 PM

> It lets you define deploy scripts and other remote tasks

Ok.

> run them from your terminal and watch every step as it happens

> and watch every step as it happens

Yes, this is usually how scripts work.

> When everything finishes, you get a summary table with timing for each step.

> If a task fails, its output is shown and execution stops right there so you can investigate.

Yes, I write my larger scripts to do such things...

> Writing plain bash instead of Blade

Yes, probably a good idea.

Call me crazy (you're crazy!) but I'm not seeing the point.

by qmr

3/31/2026 at 7:35:31 PM

It also (criminally for an SSH tool) appears for now to only work when the server uses the SSH default port 22:

https://github.com/spatie/scotty/issues/1

Literally would be one of the first things I would have tested personally!

by giobox

3/31/2026 at 6:14:04 PM

This is where I stopped reading:

> Scotty was built with the help of AI

So it sounds like my heuristic worked. =)

by SrslyJosh

3/31/2026 at 8:12:29 PM

I made something similar years ago, a long one-liner.

  tar cpf - provision/ | ssh ubuntu@192.168.1.99 "tar xpf - -C /tmp && cd /tmp/provision && bash /tmp/provision/bootstrap.sh && rm -rf /tmp/provision"
Heres is the full use: https://gist.github.com/mariocesar/8e674ec40dad6b94114d2a44d...

I named "Ansible for the Frugal"

by mariocesar

3/31/2026 at 8:32:29 PM

Ansible only exists because of an influx of people who don't know how to do this.

by wang_li

3/31/2026 at 5:20:55 PM

The most obvious question, I know, but... why not just use plain Bash?

by wackget

3/31/2026 at 6:51:55 PM

Or something like Ansible? Which is battle tested, provides idempotency for most things, and has a large library of tasks it knows how to do.

by SoftTalker

3/31/2026 at 8:40:30 PM

I've been writing my own "task runner" which seems to have some of the same features. I'd say some pros: A nice view of that has run (what has failed, etc.) - which otherwise could be drowned-out by stderr and stdout. Timing information for each "task". Can organize nested tasks. Save all in a structured log.

by ks2048

3/31/2026 at 5:55:46 PM

Scotty doesn't know...

by mathfailure

3/31/2026 at 6:58:43 PM

every sunday

by Piraty

3/31/2026 at 6:26:30 PM

It's in the title: "a beautiful"

It looks nicer.

I use good old GNU Make.

by metalliqaz

3/31/2026 at 8:42:49 PM

Just use (the good parts of) Ansible

by tkiolp4

3/31/2026 at 7:53:15 PM

Feels like Ansible does the same thing, just with nicer output

by mariocesar

3/31/2026 at 8:07:55 PM

Feels like Ansible has more in the pros column than just nicer output, imo

by verdverm

3/31/2026 at 9:24:09 PM

.

by lofaszvanitt

3/31/2026 at 9:22:24 PM

I founded and developed a similar concept many years back of a web-based SSH dashboard and management console (Commando.io; which I sold). Now a days I use Semaphore UI [1] which uses Ansible playbooks under the hood in my homelab. Pretty happy with it, though setup and configuration did take a bit to get up and running.

[1] https://github.com/semaphoreui/semaphore

by nodesocket

3/31/2026 at 8:01:58 PM

alias bones='scotty doctor'

by graybeardhacker

3/31/2026 at 7:51:50 PM

The naming is perfect — Scotty from Star Trek was always the guy making impossible things happen on impossible timelines. SSH task runners have always felt like they should be simpler than they are, curious how this compares to Fabric or Ansible for lightweight use cases.

by theaicloser

3/31/2026 at 8:26:16 PM

Fabric was my first thought. It's like this, but widely used and well-tested.

by kstrauser