Know what you want but can't remember the exact flags? Describe it in English, get the command that works. Build terminal confidence while staying safe.
What you hire Caro to do
Describe what you want in plain English, get the exact command that works.
Trigger: Can't remember exact flag syntax
Understand what commands do, not just copy-paste them blindly.
Trigger: Running unfamiliar command for first time
One command to install. One command to try. No complex setup required.
Trigger: Colleague recommended Caro
Get started in under a minute
Installing caro... Done! Run `caro --help` to get started.
Generated command: find . -mmin -60 -type f -ls Execute? (y/N)
Command: find . -mmin -60 -type f -ls Breakdown: find . - Start searching from current directory -mmin -60 - Modified within last 60 minutes -type f - Only regular files (not directories) -ls - List in long format with details
Generated command: rm -rf ./* BLOCKED: Dangerous pattern detected Risk Level: HIGH Pattern: Bulk deletion with wildcard Safer alternatives: - Be specific: rm -rf ./build ./dist - Use trash: trash ./* - Test first: ls ./*
50+ examples across common tasks
find . -name "*.js" -mtime 0 -type f du -ah . | sort -rh | head -10 find . -name "node_modules" -type d -prune -exec rm -rf {} + find . -name "*.py" -type f -exec cat {} + | wc -l find . -type f -exec md5sum {} + | sort | uniq -d -w32 tar -czvf "config-backup-$(date +%Y%m%d).tar.gz" ~/.config grep -rn "TODO" --include="*.{js,ts,py,rs}" . find . -name "*.py" -exec sed -i 's/\t/ /g' {} + grep -oE "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" file.txt diff --color -u file1.txt file2.txt | grep -E "^[+-]" sed -i '/^$/d' file.txt sort -t, -k3 -n data.csv git log --author="$(git config user.name)" --since="1 week ago" --oneline git bisect start HEAD v1.0 && git bisect run ./test.sh git reset --soft HEAD~1 git log -p --follow -- path/to/file.js git branch -a --contains <commit-hash> git branch --merged | grep -v "\*\|main\|master" | xargs -n 1 git branch -d lsof -ti:3000 | xargs kill -9 ps aux --sort=-%mem | head -10 nohup ./script.sh > output.log 2>&1 & watch -n 2 "kubectl get pods" ps aux | awk '$8=="Z" {print}' timeout 30s ./long-running-script.sh curl -C - -O https://example.com/large-file.zip curl -Is https://example.com | head -1 curl -s ifconfig.me nc -zv example.com 443 ss -tlnp sudo tcpdump -i any -n port 80 docker system prune -af --volumes docker logs --tail 100 <container-id> docker cp <container-id>:/path/to/file ./local-copy docker exec -it <container-id> /bin/sh docker stats --no-stream docker inspect --format='{{.Config.Image}}' <container-id> Caro breaks down complex commands so you understand each part
find . -name "*.log" -mtime +7 -delete find The find command - searches for files . Start searching from current directory -name "*.log" Match files ending in .log -mtime +7 Modified more than 7 days ago -delete Delete matched files (careful!) find . -name "*.log" -mtime +7 -print tar -czvf backup.tar.gz ./src tar Tape archive utility - bundles files -c Create a new archive -z Compress with gzip -v Verbose - show files being processed -f backup.tar.gz Output filename ./src Directory to archive grep -rn --include="*.py" "import os" . grep Global Regular Expression Print - search text -r Recursive - search subdirectories -n Show line numbers --include="*.py" Only search Python files "import os" Pattern to search for . Start from current directory ps aux | grep node | grep -v grep | awk '{print $2}' | xargs kill ps aux List all processes with details | grep node Filter to lines containing "node" | grep -v grep Exclude the grep process itself | awk '{print $2}' Extract second column (PID) | xargs kill Pass PIDs to kill command curl -X POST -H "Content-Type: application/json" -d '{"key":"value"}' https://api.example.com/endpoint curl Client URL - transfer data to/from server -X POST HTTP method (default is GET) -H "..." Add HTTP header -d '{"key":"value"}' Request body data https://... Target URL Learn from common pitfalls
rm -rf * rm -rf ./* chmod 777 file chmod 755 file cat file | grep pattern grep pattern file ps aux | grep pattern | awk '{print $2}' pgrep -f pattern find . -name *.txt find . -name "*.txt" curl url | sudo bash curl url -o script.sh && cat script.sh && sudo bash script.sh Time spent getting commands to work
| Task | With Caro | Google/Stack Overflow | Man Pages |
|---|---|---|---|
| Find large files | 2s Describe intent | 2-5min Search, read, copy, adapt | 5-10min Read pages of documentation |
| Complex pipe chain | 3s One natural description | 5-10min Multiple searches, combine | 15+min Learn each tool separately |
| Platform-specific syntax | 2s Caro detects platform | 5min Find platform-specific answer | 10min Cross-reference BSD vs GNU |
Features that help you grow
Break down any command into understandable parts. Learn what each flag does.
caro --explain "find . -name '*.log' -mtime +7" Caro knows your OS, shell, and current directory. Commands work first try.
# On macOS: Uses BSD find syntax
# On Linux: Uses GNU find syntax Learn good habits from day one. Caro warns before dangerous operations.
# rm -rf /* β BLOCKED
# Shows why and suggests safer alternatives Runs locally on your machine. No waiting for API calls. Works offline.
# <2s on Apple Silicon
# No internet required Build your personal command library. Caro remembers what worked.
caro history
# See your past commands and reuse them Start simple, grow advanced. Caro matches your skill level.
# Beginner: Simple commands
# Advanced: Complex pipe chains No account. No API key. No data collection. Just safer shell commands.
bash <(curl --proto '=https' --tlsv1.2 -sSfL https://setup.caro.sh) Then run:
caro "find files modified in the last 7 days" Prefer to build from source? See all installation options β