shellgym
Shell Gym - an Interactive Linux Command-Line Trainer
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
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 xzFAQ
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.
Featured in Videos
YouTube tutorials and walkthroughs for shellgym
Alternatives
Similar projects ranked by category, topics, and text overlap.