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
π¬ Demo GIF coming soon β see
assets/README.mdfor instructions on recording your own.
Run
cmdgpt fixafter a failed command β CmdGPT analyzes the error and suggests or applies the fix automatically.
npm install -g @devabdool/cmdgptThen 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 EnglishNo configuration needed. For AI-powered responses, optionally add your API key:
export OPENAI_API_KEY=sk-... # or ANTHROPIC_API_KEY| 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> |
npm install -g @devabdool/cmdgptOr run locally after cloning:
git clone https://github.com/devabdool/CmdGPT.git
cd CmdGPT
npm install
npm link # makes `cmdgpt` available globallycd my-laravel-project
cmdgpt start my app
# β php artisan serve# 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 dockercmdgpt push my code
# β git add . && git commit -m "chore: update files" && git pushcmdgpt setup react
# β npx create-react-app my-app
cmdgpt setup laravel
# β composer create-project laravel/laravel my-appcmdgpt list pods
# β kubectl get pods
cmdgpt restart deployment api
# β kubectl rollout restart deployment/apicmdgpt start my app
cmdgpt run "start my app"
cmdgpt run --dry-run "start my app" # preview without executingCmdGPT 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 |
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 -dcmdgpt push my code # β git add . && git commit -m "update" && git push
cmdgpt git status # β git status
cmdgpt git log # β git log --oneline -20cmdgpt list pods # β kubectl get pods
cmdgpt get services # β kubectl get services
cmdgpt apply config # β kubectl apply -f .cmdgpt explain docker compose up -d
cmdgpt explain git rebase
cmdgpt explain kubectl get pods# 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"cmdgpt setup laravel
cmdgpt setup react
cmdgpt setup flutter
cmdgpt setup nodecmdgpt detect
# β Project type: Next.js (React) (nextjs)# 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 providerCmdGPT works fully offline using built-in pattern matching. For advanced AI-powered interpretation, configure a provider.
export OPENAI_API_KEY=sk-...
# or pin it in config:
cmdgpt config set provider openaiCmdGPT will use GPT-4o-mini by default. Override:
cmdgpt config set openaiModel gpt-4oexport ANTHROPIC_API_KEY=sk-ant-...
# or pin it in config:
cmdgpt config set provider anthropicCmdGPT will use Claude 3 Haiku by default. Override:
cmdgpt config set anthropicModel claude-3-5-sonnet-20241022When both API keys are set, CmdGPT picks the provider in this order:
providerfield in~/.cmdgpt.json(set withcmdgpt config set provider)OPENAI_API_KEYenv var βopenaiANTHROPIC_API_KEYenv var βanthropic- No AI (offline pattern matching only)
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
| 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 |
CmdGPT blocks dangerous commands before execution. Blocked patterns include:
rm -rf /and variantsshutdown,reboot,halt,poweroffmkfs,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.
# Install dependencies
npm install
# Run tests
npm test
# Run CLI locally
node bin/cmdgpt.js --helpEach 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.
Contributions are welcome! Please see CONTRIBUTING.md for guidelines on how to get started.
MIT Β© devabdool
