npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

easycmd-cli

v1.0.0

Published

Highly customizable terminal command system with native command support

Readme

EasyCmd - Universal Remote CLI

From command memorization to universal control. Built for today's developers. Designed for tomorrow's infrastructure.


📖 Table of Contents


💡 Why EasyCmd Exists

The Problem Every Developer Faces

# Which one was it again?
touch file.txt  # or... New-Item? or... type nul >?
mkdir folder    # or... md? or... New-Item -ItemType Directory?
mv old new      # or... move? or... Rename-Item?

The reality: We all waste time:

  • 🔍 Googling "how to rename file in terminal" for the 100th time
  • 🤔 Context switching between different command conventions
  • 😤 Dealing with platform differences (Windows vs Mac vs Linux)
  • ⌨️ Remembering complex syntax and flags

The Personal Solution

Instead of fighting the system, customize it:

# Your way, your commands
create-file hello.txt "Hello World"
rename-file old.txt new.txt
make-folder my-project

# Even better - YOUR personal aliases
dadoP myfile.txt          # Dad's personal command
cf notes.md               # Custom alias for create-file
mkf components            # Your shortcut for make-folder

The Bigger Picture

What started as "I can't remember mkdir" evolved into something far more powerful:

"What if I could control my entire development environment from my phone?"


🌟 The Vision: Universal Remote CLI

Imagine This Scenario

You're on the couch / on the train / at a coffee shop / on vacation

And you need to:

  • ✅ Start a server on your laptop
  • ✅ Check if a process is running
  • ✅ Deploy your application
  • ✅ Run tests
  • ✅ Check logs
  • ✅ Restart a service

Currently: You need to be at your laptop

With EasyCmd:

Phone → SSH → Your Laptop → EasyCmd → Execute Command

🚀 Quick Start

Installation

npm install -g easycmd

Your First Commands

# Use built-in commands
create-file hello.txt "My first file"
make-folder my-project
rename-file hello.txt welcome.txt

# Create your custom aliases
easy bind cf --alias create-file
easy bind mkf --alias make-folder

# Now use your shortcuts
cf myfile.txt "So easy!"
mkf components

Create Powerful Macros

# Complex workflow → Single command
easy bind deploy --macro "npm run build && docker build -t myapp . && docker push myapp"

# Now just:
deploy

🎯 Evolution Path

Phase 1: Simple Command Aliases ✅ Current

Stop remembering platform-specific syntax:

# Before
touch file.txt          # Mac/Linux
type nul > file.txt     # Windows
New-Item file.txt       # PowerShell

# After
create-file file.txt    # Everywhere

Benefits:

  • 🎯 Memorable command names
  • 🌍 Cross-platform compatibility
  • 🧠 Reduced cognitive load
  • ⚡ Faster workflow

Phase 2: Custom Workflows ✅ Current

Automate complex operations:

# Traditional (error-prone, tedious)
npm run build
npm run test
docker build -t myapp .
docker push myapp:latest
kubectl apply -f deployment.yaml

# EasyCmd (one command, automated)
easy bind ship --macro "npm run build && npm test && docker build -t myapp . && docker push myapp && kubectl apply -f deployment.yaml"

ship  # That's it!

Benefits:

  • ⚡ Faster execution
  • 🎯 Zero errors
  • 📝 Reproducible workflows
  • 🤝 Shareable with team

Phase 3: Remote Control 🔮 Future Vision

Control your laptop from your phone:

# SSH from phone
ssh your-laptop

# Run your custom commands
start-dev-server
check-logs
restart-database
deploy-production

# All from your phone!

Benefits:

  • 📱 Mobile-friendly commands
  • 🌍 Work from anywhere
  • ⚡ Quick emergency fixes
  • 🎯 No laptop needed

Phase 4: Smart Remote CLI 🔮 Future Vision

Voice control and automation:

# Voice command
"Start my development environment"
→ Executes: start-postgres, start-redis, start-dev-server

# Mobile app with buttons
[Deploy] [Test] [Logs] [Status] [Restart]

# Scheduled automation
"Run backup every night at 2 AM"
"Pull latest code every morning at 8 AM"

Phase 5: Universal Control Center 🔮 Ultimate Vision

Multi-machine orchestration:

# Control all your machines
easy exec --machine laptop deploy
easy exec --machine server restart
easy exec --machine raspberry-pi check-sensors

# Monitor everything
easy status --all
→ Laptop: Running ✅
→ Server: 3 containers up ✅
→ Pi: Temperature OK ✅

# Ultimate automation
easy bind morning-routine --macro "
  laptop: start-dev-env
  server: check-health
  pi: update-sensors
  notification: send-status
"

💼 Real-World Use Cases

Use Case 1: Remote Development

Scenario: You're away from your laptop but need to check your dev server

# SSH from phone
ssh your-laptop

# Quick checks
check-server        # Is dev server running?
restart-dev         # Restart if needed
dev-logs            # Check what's happening

# All from your phone keyboard!

Use Case 2: Emergency Production Fixes

Scenario: Production is down, you're not at your desk

# SSH to production server
ssh production-server

# Quick diagnosis
check-health
check-errors

# Quick fix
restart-app
clear-cache

# Crisis averted from your phone!

Use Case 3: Daily Workflow Automation

Scenario: Repetitive tasks slow you down

# Morning routine
easy bind morning --macro "docker-compose up -d && npm run dev && code ."
morning  # Start your day with one command

# Deployment workflow
easy bind ship --macro "npm run build && npm test && docker build -t myapp . && docker push myapp"
ship  # Deploy with confidence

# Cleanup routine
easy bind cleanup --macro "docker system prune -f && npm cache clean --force"
cleanup  # Clean workspace

Use Case 4: Multi-Machine Control

Scenario: You manage multiple servers

# Your laptop
ssh laptop
start-dev

# Your home server
ssh server
check-containers

# Your Raspberry Pi
ssh pi
check-temperature

# All using YOUR custom commands across all machines

💡 Why This Makes Sense

1. You Already SSH Into Your Laptop

Many developers already:

  • SSH from phone using Termius, JuiceSSH, etc.
  • Need to run commands remotely
  • Struggle with complex commands on mobile keyboard

2. Mobile Keyboards Are Terrible for Long Commands

Typing on phone:

docker ps -a --filter "status=running" --format "table {{.Names}}\t{{.Status}}"

vs

running-containers

Which would you rather type on a phone?


3. One System, Many Interfaces

Desktop Terminal → EasyCmd Commands
       ↓
Phone SSH → Same Commands
       ↓
Voice Assistant → Same Commands
       ↓
Web Dashboard → Same Commands
       ↓
Automation Scripts → Same Commands

Result: Learn once, use everywhere


4. Customization = Personal Remote

Your laptop, your commands:

# Instead of generic commands:
docker ps
kubectl get pods
git status

# Your personalized remote:
my-containers
my-services
my-status

📦 Installation

Prerequisites

  • Node.js >= 16.0.0
  • npm >= 7.0.0

Install Globally

npm install -g easycmd

Setup PATH (Automatic)

EasyCmd automatically adds custom commands to your PATH. If needed, manually add:

For Bash/Zsh:

export PATH="$HOME/.easycmd/bin:$PATH"

For Windows PowerShell:

$env:PATH += ";$env:USERPROFILE\.easycmd\bin"

Verify Installation

easy --version
easy list

✨ Features

Core Features

  • Cross-Platform: Works on Windows, macOS, and Linux
  • Custom Aliases: Create shortcuts to built-in commands
  • Shell Macros: Chain multiple commands into one
  • Persistent Config: All customizations saved automatically
  • Interactive Mode: Guided command creation
  • Native Execution: Commands run as native terminal commands
  • No Prefix Required: create-file not easycmd create-file

Built-in Commands

  • create-file - Create files with optional content
  • rename-file - Rename files
  • make-folder - Create folders (with nested support)
  • move-folder - Move/rename folders
  • delete-file - Delete files
  • delete-folder - Delete folders (with force option)

Management Commands

  • easy bind - Create custom commands
  • easy unbind - Remove custom commands
  • easy list - List all commands
  • easy config - Show configuration
  • easy path - Show PATH setup instructions

📚 Command Reference

Creating Custom Commands

Alias Commands

Create shortcuts to existing commands:

# Basic alias
easy bind cf --alias create-file

# Alias with description
easy bind mkf --alias make-folder --description "Quick folder maker"

# Use it
cf myfile.txt "Content here"
mkf myfolder

Macro Commands

Create custom shell commands:

# Simple macro
easy bind hello --macro "echo 'Hello World'"

# Complex workflow
easy bind deploy --macro "npm run build && docker build -t myapp . && docker push myapp"

# Git shortcuts
easy bind gst --macro "git status"
easy bind gp --macro "git push origin main"

# Use it
hello
deploy
gst

Interactive Mode

# Launch interactive command builder
easy bind

# Follow the prompts:
# - Command name
# - Type (alias or macro)
# - Target/shell command
# - Description

Managing Commands

List Commands

# List all commands
easy list

# List only custom commands
easy list --custom

# List only default commands
easy list --default

# Verbose output
easy list --verbose

# JSON output
easy list --json

# Search commands
easy list --search git

Remove Commands

# Remove a command
easy unbind dadoP

# Remove without confirmation
easy unbind hello --yes

# Remove multiple commands
easy unbind cmd1 cmd2 cmd3

View Configuration

# Show configuration info
easy config

# Show PATH setup instructions
easy path

Command Options

Force Overwrite

# Override existing command
easy bind mycommand --alias create-file --force

Help

# Get help for any command
create-file --help
easy bind --help
easy --help

🗺️ Roadmap

Version 1.x - Foundation ✅ Current

  • ✅ Custom command aliases
  • ✅ Shell macro support
  • ✅ Cross-platform compatibility
  • ✅ Persistent configuration
  • ✅ PATH automation
  • ✅ Interactive mode

Version 2.x - Remote Execution 🔮 Planned

  • 🔄 REST API for command execution
  • 🔄 WebSocket support for real-time output
  • 🔄 Authentication & authorization
  • 🔄 Multi-machine orchestration

Version 3.x - Cloud Integration 🔮 Planned

  • 📋 Cloud service integrations (AWS, Azure, GCP)
  • 📋 Container orchestration (Docker, Kubernetes)
  • 📋 CI/CD pipeline integration
  • 📋 Team collaboration features

Version 4.x - Enhanced Interfaces 🔮 Planned

  • 📋 Web-based dashboard
  • 📋 Mobile application
  • 📋 Voice command integration
  • 📋 VSCode extension

Version 5.x - Enterprise Features 🔮 Planned

  • 📋 Role-based access control
  • 📋 Audit logging
  • 📋 Compliance reporting
  • 📋 SSO integration

🎯 The Journey

Where We Started

Problem: "I keep forgetting mkdir vs make-folder"

Where We Are Now

Solution: Custom terminal commands with easy aliases

Where We're Going

Vision: Universal remote control for your entire development environment

The Path Forward

v1.0: Custom Commands ✅
  ↓
v2.0: Remote Execution
  ↓
v3.0: Multi-Machine Support
  ↓
v4.0: Web Dashboard
  ↓
v5.0: Voice Control
  ↓
v6.0: Mobile App

💭 Philosophy

It's Not About the Commands

It's about control and accessibility:

  • Control your machines your way
  • Access your workflow from anywhere
  • Automate everything you do repeatedly

It's Not About Replacing SSH

It's about making SSH usable on mobile:

  • Hard to type on phone → Easy custom commands
  • Hard to remember syntax → Memorable aliases
  • Complex workflows → Single commands

It's Not About Another Tool

It's about unifying your workflow:

  • One system to learn
  • Works everywhere
  • Grows with you

🌍 Mission Statement

"Make your development environment accessible from anywhere, controlled with commands you choose, automated the way you want."

Not Just For You

  • Teams can share command definitions
  • Projects can include standard commands
  • Organizations can standardize workflows
  • Beginners can use simple commands instead of complex syntax

The Ultimate Goal

Your phone becomes a remote control for your entire development environment.

No more:

  • "I need my laptop to do this"
  • "Let me SSH and type this complex command"
  • "I can't remember the exact syntax"

Just:

  • Pull out phone
  • Open terminal app
  • Run your custom command
  • Done

🚀 Why This Will Work

1. Builds on Existing Tools

  • SSH (already widely used)
  • Terminal (universal)
  • Node.js (cross-platform)

2. Solves Real Problems

  • Command memorization
  • Mobile typing difficulty
  • Workflow automation

3. Scales Naturally

Individual → Team → Organization → Community

4. Progressive Enhancement

  • Start simple (aliases)
  • Add complexity (macros)
  • Go advanced (remote control)
  • Get powerful (multi-machine)

🤝 Contributing

We welcome contributions! Here's how you can help:

Report Bugs

  • Open an issue on GitHub
  • Describe the bug clearly
  • Include steps to reproduce
  • Mention your OS and Node.js version

Suggest Features

  • Open a feature request
  • Explain the use case
  • Describe the expected behavior

Submit Pull Requests

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Write tests
  5. Submit a PR

Spread the Word

  • Star the repository
  • Share with other developers
  • Write blog posts
  • Create tutorials

📄 License

MIT License - see LICENSE file for details


🔗 Links

  • npm: https://npmjs.com/package/easycmd
  • GitHub: https://github.com/yourusername/easycmd
  • Issues: https://github.com/yourusername/easycmd/issues
  • Discussions: https://github.com/yourusername/easycmd/discussions

🎊 From Frustration to Innovation

It started with frustration: "Why can't I remember simple commands?"

It became a solution: "I'll create my own memorable commands!"

It evolved into a tool: "Others have this problem too!"

It's growing into a platform: "This could control everything!"

It will be a revolution: "Universal remote CLI for all developers!"


💬 Support

  • Documentation: Coming soon
  • Community: GitHub Discussions
  • Email: [email protected] (coming soon)

EasyCmd: From command memorization to universal control. Built for today's developers. Designed for tomorrow's infrastructure.


Made with ❤️ by developers, for developers