Analysis updated 2026-07-03 · repo last pushed 2015-03-27
Write deployment scripts that change directories and set environment variables across multiple commands on a remote server.
Build infrastructure automation tools that need to escalate privileges mid-session using sudo or switch users within a persistent shell.
Create configuration management scripts in Ruby that interact with a remote server conversationally rather than running one-off commands.
| mitchellh/net-ssh-shell | mitchellh/virtuoso | dawarich-app/atlas | |
|---|---|---|---|
| Stars | 79 | 32 | 21 |
| Language | Ruby | Ruby | Ruby |
| Last pushed | 2015-03-27 | 2010-12-15 | — |
| Maintenance | Dormant | Dormant | — |
| Setup difficulty | easy | moderate | hard |
| Complexity | 2/5 | 2/5 | 4/5 |
| Audience | developer | developer | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Installs as a standard Ruby gem requiring Net::SSH version 2.
Net-ssh-shell is a Ruby library that lets you run commands on a remote server as if you were typing them into the same terminal session. Normally, when you run commands on a remote machine programmatically, each command runs in its own isolated bubble. This library changes that by keeping a single, persistent shell open, so anything you do in one command carries over to the next. The key benefit is statefulness. If you run "cd /usr/local" to change directories and then run "pwd" to see where you are, the second command remembers the directory change from the first. You can also set environment variables in one command and use them in the next. Without this library, you would need to chain everything into a single command or manage complex state tracking yourself. It works as an extension to Net::SSH, a popular Ruby library for connecting to remote servers. You open a connection, start a shell session, and then execute commands one after another within that session. Each command returns an object that includes details like the exit status and the command that was run, so you can check whether things succeeded. The library also supports "subshell" environments, meaning you can switch users or enter a privileged shell like "sudo bash" and continue running commands within that elevated context. This would be useful for anyone building infrastructure automation, deployment scripts, or configuration management tools in Ruby. For example, if you are writing a script that connects to a server, switches to a specific directory, sets some environment variables, and then runs a build command, this library lets you write those steps naturally instead of cramming them into a single line. It is also handy for scenarios where you need to escalate privileges mid-session or interact with shells that expect a ongoing conversation rather than one-off commands. The project is relatively small and focused, doing one thing well rather than trying to be a full automation framework. It requires Net::SSH version 2 and installs as a standard Ruby gem.
A Ruby library that keeps a persistent shell session open on a remote server, so commands share state like directory changes and environment variables across multiple executions.
Mainly Ruby. The stack also includes Ruby, Net::SSH, RubyGems.
Dormant — no commits in 2+ years (last push 2015-03-27).
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.