Skip to content

devabdool/CmdGPT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CmdGPT

CI npm version License: MIT GitHub Stars

CmdGPT is an AI-powered terminal assistant that lets developers execute commands using natural language. It detects your project type, interprets your request, generates the right commands, and executes them safely.

πŸ’‘ No API key required β€” works fully offline using built-in pattern matching. Optionally connect OpenAI or Anthropic for smarter responses.

cmdgpt start my app
cmdgpt show my docker containers
cmdgpt push my code
cmdgpt setup laravel project
cmdgpt fix

⚑ CmdGPT in Action

🎬 Demo GIF coming soon β€” see assets/README.md for instructions on recording your own.

CmdGPT Demo

Run cmdgpt fix after a failed command β€” CmdGPT analyzes the error and suggests or applies the fix automatically.


Getting Started

npm install -g @devabdool/cmdgpt

Then just type what you want to do:

cmdgpt start my app
# β†’ Detects your project type and runs the right start command

cmdgpt fix
# β†’ Analyzes your last terminal error and suggests a fix

cmdgpt explain docker compose up -d
# β†’ Explains what the command does in plain English

No configuration needed. For AI-powered responses, optionally add your API key:

export OPENAI_API_KEY=sk-...   # or ANTHROPIC_API_KEY

Features

Feature Description
🧠 Natural Language Execution Convert plain English into terminal commands
πŸ” Project Detection Auto-detect Laravel, Node, React, Next.js, Django, Docker, Kubernetes, Flutter, Go, Python, and more
πŸ” Security Filter Block dangerous commands like rm -rf /, shutdown, mkfs, fork bombs
πŸ› Error Analyzer Explain terminal errors and suggest or apply fixes
πŸ’‘ Command Explainer Describe what any shell command does
πŸš€ Project Setup Scaffold new projects with a single command
πŸ”Œ Plugin Architecture Modular plugins for Laravel, Node, Docker, Git, Flutter, Kubernetes
πŸ€– Multi-Provider AI Optional AI-powered interpretation via OpenAI (GPT-4o-mini) or Anthropic (Claude)
βš™οΈ Provider Config Choose your AI provider with cmdgpt config set provider <openai|anthropic>

Installation

npm install -g @devabdool/cmdgpt

Or run locally after cloning:

git clone https://github.com/devabdool/CmdGPT.git
cd CmdGPT
npm install
npm link          # makes `cmdgpt` available globally

Real-World Examples

🐘 Run a Laravel App

cd my-laravel-project
cmdgpt start my app
# β†’ php artisan serve

🐳 Fix a Docker Error

# After a failed `docker compose up`:
cmdgpt fix
# β†’ CmdGPT reads the error, explains the cause, and suggests a fix

cmdgpt fix --error "Cannot connect to the Docker daemon"
# β†’ sudo systemctl start docker

πŸš€ Push Code to GitHub

cmdgpt push my code
# β†’ git add . && git commit -m "chore: update files" && git push

πŸ› οΈ Set Up a Brand-New Project

cmdgpt setup react
# β†’ npx create-react-app my-app

cmdgpt setup laravel
# β†’ composer create-project laravel/laravel my-app

☸️ Manage Kubernetes Pods

cmdgpt list pods
# β†’ kubectl get pods

cmdgpt restart deployment api
# β†’ kubectl rollout restart deployment/api

Usage

Natural Language Command Execution

cmdgpt start my app
cmdgpt run "start my app"
cmdgpt run --dry-run "start my app"   # preview without executing

CmdGPT detects your project type and maps the intent:

Project Intent Command(s)
Laravel start my app php artisan serve
Node.js start my app npm start
Flutter start my app flutter run
Django start my app python manage.py runserver

Docker Commands

cmdgpt show my docker containers    # β†’ docker ps
cmdgpt show all containers          # β†’ docker ps -a
cmdgpt stop containers              # β†’ docker compose down
cmdgpt start containers             # β†’ docker compose up -d

Git Commands

cmdgpt push my code                 # β†’ git add . && git commit -m "update" && git push
cmdgpt git status                   # β†’ git status
cmdgpt git log                      # β†’ git log --oneline -20

Kubernetes Commands

cmdgpt list pods                    # β†’ kubectl get pods
cmdgpt get services                 # β†’ kubectl get services
cmdgpt apply config                 # β†’ kubectl apply -f .

Explain a Command

cmdgpt explain docker compose up -d
cmdgpt explain git rebase
cmdgpt explain kubectl get pods

Fix Terminal Errors

# Save an error to analyze later
cmdgpt save-error "npm ERR! Cannot read properties of undefined"

# Analyze and optionally fix
cmdgpt fix

# Or pass error text directly
cmdgpt fix --error "bash: flutter: command not found"

Setup a New Project

cmdgpt setup laravel
cmdgpt setup react
cmdgpt setup flutter
cmdgpt setup node

Detect Project Type

cmdgpt detect
# βœ” Project type: Next.js (React) (nextjs)

View and Set Configuration

# Show current config
cmdgpt config get

# Set AI provider
cmdgpt config set provider openai      # use OpenAI (GPT-4o-mini by default)
cmdgpt config set provider anthropic   # use Anthropic (Claude)

# Override the model used by a provider
cmdgpt config set openaiModel gpt-4o
cmdgpt config set anthropicModel claude-3-5-sonnet-20241022

# Show a single key
cmdgpt config get provider

AI Provider Integration (Optional)

CmdGPT works fully offline using built-in pattern matching. For advanced AI-powered interpretation, configure a provider.

OpenAI

export OPENAI_API_KEY=sk-...
# or pin it in config:
cmdgpt config set provider openai

CmdGPT will use GPT-4o-mini by default. Override:

cmdgpt config set openaiModel gpt-4o

Anthropic (Claude)

export ANTHROPIC_API_KEY=sk-ant-...
# or pin it in config:
cmdgpt config set provider anthropic

CmdGPT will use Claude 3 Haiku by default. Override:

cmdgpt config set anthropicModel claude-3-5-sonnet-20241022

Provider Priority

When both API keys are set, CmdGPT picks the provider in this order:

  1. provider field in ~/.cmdgpt.json (set with cmdgpt config set provider)
  2. OPENAI_API_KEY env var β†’ openai
  3. ANTHROPIC_API_KEY env var β†’ anthropic
  4. No AI (offline pattern matching only)

Project Structure

cmdgpt/
β”œβ”€β”€ bin/
β”‚   └── cmdgpt.js          # CLI entry point
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ config.js           # Read/write ~/.cmdgpt.json; resolve provider/model/key
β”‚   β”œβ”€β”€ aiProvider.js       # Unified AI provider (OpenAI + Anthropic)
β”‚   β”œβ”€β”€ projectDetector.js  # Detects project type from working directory files
β”‚   β”œβ”€β”€ aiInterpreter.js    # Interprets natural language into commands
β”‚   β”œβ”€β”€ commandExecutor.js  # Executes commands sequentially with streaming output
β”‚   β”œβ”€β”€ securityFilter.js   # Blocks dangerous commands
β”‚   └── errorAnalyzer.js    # Analyzes terminal errors and suggests fixes
β”œβ”€β”€ plugins/
β”‚   β”œβ”€β”€ laravel.js          # Laravel / PHP commands
β”‚   β”œβ”€β”€ node.js             # Node.js / React / Next.js / Vue / Angular commands
β”‚   β”œβ”€β”€ docker.js           # Docker / Docker Compose commands
β”‚   β”œβ”€β”€ git.js              # Git commands
β”‚   β”œβ”€β”€ flutter.js          # Flutter / Dart commands
β”‚   └── kubernetes.js       # Kubernetes / kubectl commands
β”œβ”€β”€ utils/
β”‚   └── logger.js           # Colored console logger
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ config.test.js
β”‚   β”œβ”€β”€ securityFilter.test.js
β”‚   β”œβ”€β”€ projectDetector.test.js
β”‚   β”œβ”€β”€ aiInterpreter.test.js
β”‚   └── errorAnalyzer.test.js
└── package.json

Supported Project Types

Indicator File Detected Type
artisan Laravel
pubspec.yaml Flutter
manage.py Django
requirements.txt / setup.py / pyproject.toml Python
go.mod Go
docker-compose.yml Docker
Dockerfile Docker
package.json (with next) Next.js
package.json (with react) React
package.json (with vue) Vue.js
package.json (with @angular/core) Angular
package.json (with express) Express.js
package.json (with @nestjs/core) NestJS
package.json Node.js
Gemfile Ruby / Rails
pom.xml / build.gradle Java / Spring
Cargo.toml Rust

Security

CmdGPT blocks dangerous commands before execution. Blocked patterns include:

  • rm -rf / and variants
  • shutdown, reboot, halt, poweroff
  • mkfs, dd if=... of=/dev/...
  • sudo rm, sudo mkfs
  • Fork bombs (:(){ :|:& };:)
  • Disk-wiping commands

All commands are shown to the user with a confirmation prompt before being executed.


Development

# Install dependencies
npm install

# Run tests
npm test

# Run CLI locally
node bin/cmdgpt.js --help

Plugin API

Each plugin exports a resolve(intent) function and a commands map:

// plugins/myPlugin.js
const commands = {
  'my intent': ['my-tool command'],
};

function resolve(intent) {
  const lower = intent.toLowerCase();
  for (const [key, cmds] of Object.entries(commands)) {
    if (lower.includes(key)) return cmds;
  }
  return null;
}

module.exports = { resolve, commands };

Register your plugin in core/aiInterpreter.js by adding it to PROJECT_PLUGIN_MAP.


Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines on how to get started.


License

MIT Β© devabdool

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors