shellgym logo

shellgym

Shell Gym - an Interactive Linux Command-Line Trainer

Website GitHub

What is it?

What it is

Shell Gym is a background daemon with a built-in web UI that turns any Linux box into an interactive command-line trainer.

Why it exists

To provide hands‑on practice and repetition so that Linux concepts like file navigation, stdio redirection, and signals become fluent muscle memory, which reading alone cannot achieve.

Who should use it

Shell Gym is ideal for Linux users who want hands‑on practice with the command line—students learning shell basics, developers sharpening their terminal skills, and sysadmins building muscle memory for everyday tasks. It’s especially useful for anyone who prefers learning by doing rather than reading documentation.

Who should avoid it

Avoid using Shell Gym on a production or shared system, or on a machine where you cannot afford to create or delete files, processes, or ports. It also requires root access and a disposable Linux host, so users without such an environment or those who cannot run commands as root should not use it.

How it works

A quick walkthrough in plain English

How shellgym works

Step 1 of 3

You interact with it

Open shellgym, send a request, or connect it to your stack.

Features

Interactive Linux command-line trainer with split-screen UI
Observation via procfs and kernel proc connector without shell modifications
Custom learning paths with modular structure (modules, units, tasks)
Progress persistence across daemon restarts and system reboots
No setup required for online playground (Ubuntu VM preconfigured)
Supports parametric units (randomized parameters, state dependencies)
Built-in validation engine with reference solutions

Advantages

  • Hands-on practice for real terminal skills without theoretical learning
  • No need to modify the user's shell environment
  • Progress is saved locally, allowing resumption after interruptions
  • Open-source and customizable learning paths
  • Online playground available for quick access without local setup
  • Uses standard Linux tools (procfs, netlink) for observation
  • Skills learned transfer directly to any Linux terminal

Disadvantages

  • Requires a disposable Linux host (VM or cloud instance) due to system state changes
  • Progress may break if system state is altered externally (e.g., files deleted)
  • Must run as root, which could pose security risks on shared systems
  • Split-screen setup may require additional configuration on some terminals
  • Custom learning paths require authoring effort (YAML/Markdown files)
  • No built-in check button; relies on system state changes for validation
  • Limited to Linux environments only

Installation

native

arch=$(uname -m | sed 's/x86_64/amd64/; s/aarch64/arm64/')
curl -L "https://github.com/iximiuz/shellgym/releases/latest/download/shellgym_linux_${arch}.tar.gz" | tar xz

FAQ

How do I use Shell Gym to practice commands?

Shell Gym is a trainer that works alongside your terminal. You should open your terminal and the Shell Gym web UI in a split-screen view. You type real commands into your regular terminal, and the trainer automatically detects when you have completed the assigned task (rep).

Does Shell Gym modify my shell or terminal environment?

No. Shell Gym uses 'zero instrumentation,' meaning it does not inject any prompt hooks, wrappers, or special functions into your shell. It observes system changes from the outside using procfs, the kernel proc connector, and plain state checks.

Is it safe to run Shell Gym on my primary computer?

Because Shell Gym asks you to perform real actions on a live system (like killing processes or creating files), it is highly recommended to use it only on a disposable Linux host, such as a local VM (VirtualBox, Lima), a cloud instance (EC2, DigitalOcean), or an iximiuz Labs playground.

How does the progress tracking work?

Progress is persisted on disk (defaulting to `/var/lib/shellgym`). You can stop your session and resume later, even after reboots. However, if the system state changes (e.g., a file required for a task is deleted by another process), the progress for that unit may need to be reset.

Can I create my own custom learning paths?

Yes. Shell Gym defines a directory-based format for learning paths. A path consists of modules and units (reps) defined via markdown and YAML frontmatter, allowing you to create custom curricula with specific setup scripts and verification tasks.

Loading documentation…
View on GitHub

Featured in Videos

YouTube tutorials and walkthroughs for shellgym

Alternatives

Similar projects ranked by category, topics, and text overlap.

Compare
shellgym | MushyBook