Be Specific
More detail = better results. Instead of “find files”, try “find python files modified this week”.
This guide will get you productive with caro in just a few minutes.
curl -fsSL https://raw.githubusercontent.com/wildcard/caro/main/install.sh | bashThe install script will:
# Standard installcargo install caro
# Apple Silicon with MLX GPU accelerationcargo install caro --features embedded-mlx# Download for your platform from GitHub Releasescurl -fsSL https://github.com/wildcard/caro/releases/latest/download/caro-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m) -o carochmod +x carosudo mv caro /usr/local/bin/Verify installation:
caro --version# Output: caro 1.0.3Simply describe what you want to do in natural language:
caro "your natural language description"y or copy the commandWhen you run a command, caro shows the generated command and asks for confirmation:
$ caro "list all PDF files in Downloads folder larger than 10MB"
Command: find ~/Downloads -name "*.pdf" -size +10M -ls
? Execute this command? (y/n) yThis interactive flow ensures you always review commands before execution.
$ caro "find all python files"Command: find . -name "*.py"
$ caro "find files larger than 100MB"Command: find . -size +100M
$ caro "find files modified in the last 24 hours"Command: find . -mtime 0$ caro "search for TODO in all source files"Command: grep -rn "TODO" --include="*.py" --include="*.js" --include="*.rs"
$ caro "find lines containing error in log files"Command: grep -i "error" *.log
$ caro "count occurrences of function in all rust files"Command: grep -c "fn " *.rs$ caro "show disk usage"Command: df -h
$ caro "show running processes sorted by memory"Command: ps aux --sort=-%mem | head -20
$ caro "show network connections"Command: netstat -an | grep ESTABLISHED$ caro "show directory size"Command: du -sh .
$ caro "list directories sorted by size"Command: du -sh */ | sort -hr
$ caro "create directory structure for a rust project"Command: mkdir -p src/{bin,lib} tests docscaro provides clear, colored output:
$ caro "find all rust files modified today"
Command: find . -name "*.rs" -mtime 0
? Execute this command? (y/n)| Element | Description |
|---|---|
| Command | The shell command caro generated for your request |
| Confirmation | Interactive prompt to execute or decline |
When a command is potentially dangerous, caro will show a warning and require explicit confirmation before proceeding.
caro automatically detects your environment and generates platform-appropriate commands:
This means the same natural language prompt produces the correct command for your platform.
caro automatically validates commands for safety:
# This will be blocked$ caro "delete everything"
⚠️ Command blocked: Potentially dangerous pattern detected Pattern: rm -rf / Risk: Critical
# Safe alternative suggestedTip: Try "caro 'delete files in current directory'" for a safer approachThe default behavior is to show the command and ask for confirmation:
$ caro "find large log files"Command: find . -name "*.log" -size +10M
? Execute this command? (y/n) y# Command executes...--confirmFor scripting or when you trust the command, use --confirm (or -y) to skip the confirmation prompt:
# Skip confirmation promptcaro --confirm "show current date"
# Short formcaro -y "list files"Press n at the confirmation prompt to decline execution - the command remains visible for you to copy:
$ caro "find large log files"Command: find . -name "*.log" -size +10M
? Execute this command? (y/n) n# Command not executed - copy it manually if desiredBe Specific
More detail = better results. Instead of “find files”, try “find python files modified this week”.
Use Constraints
Add limits like “in current directory” or “excluding node_modules”.
Describe the Goal
Say what you want to achieve, not how. “compress images for web” beats “run imagemagick”.
Iterate
If the first result isn’t perfect, refine your description and try again.
| Bad Prompt | Good Prompt |
|---|---|
| ”files" | "find all PDF files in the downloads folder" |
| "search" | "search for ‘TODO’ comments in python files" |
| "compress" | "compress all jpg files to 80% quality" |
| "ports" | "show which process is using port 8080” |
# Find uncommitted changes$ caro "show git status with diff stats"Command: git status -sb && git diff --stat
# Find TODO comments$ caro "find TODO comments in src directory"Command: grep -rn "TODO" src/
# Count lines of code$ caro "count lines of rust code"Command: find . -name "*.rs" -exec wc -l {} + | tail -1# Check system health$ caro "show system uptime and load average"Command: uptime
# Find large files$ caro "find files larger than 1GB"Command: find . -size +1G 2>/dev/null
# Check disk space$ caro "show disk usage by directory sorted by size"Command: du -sh */ | sort -hr# CSV operations$ caro "show first 10 lines of data.csv"Command: head -10 data.csv
$ caro "count unique values in second column of data.csv"Command: cut -d',' -f2 data.csv | sort | uniq -c | sort -rn
# JSON processing$ caro "extract name field from config.json"Command: jq '.name' config.json| Option | Short | Description |
|---|---|---|
--confirm | -y | Auto-confirm dangerous commands without prompting |
--shell <SHELL> | -s | Target shell (bash, zsh, fish, sh) |
--output <FORMAT> | -o | Output format (json, yaml, plain) |
--safety <LEVEL> | Safety level (strict, moderate, permissive) | |
--verbose | -v | Enable verbose output with timing |
--config <FILE> | -c | Custom configuration file |
Example with options:
# Use a specific shellcaro --shell zsh "find python files"
# JSON output for scriptingcaro --output json "show disk usage"
# Verbose mode for debuggingcaro --verbose "search for errors in logs"Now that you know the basics: