Start here

Usage

One sentence in, one shell command out. Everything else on this page is about the edges of that contract.

The shape of a request

smartly <your request in plain English>

No quoting required — everything after the flags is the sentence. smartly generates one shell command and, by default, runs it immediately.

smartly show hidden files sorted by size
ls -lahS
smartly replace api.example.com with api.internal in every yaml file
find . -name '*.y*ml' -exec sed -i '' 's/api\.example\.com/api.internal/g' {} +

What you get

One command line. Pipes, && and redirects inside that line are fine. smartly will not produce a multi-step script — if a request genuinely needs several steps, ask for the steps one at a time.

A command for your operating system. smartly accounts for GNU (Linux) versus BSD (macOS) userland differences, so the same request produces sed -i '' on macOS and sed -i on Linux.

A command grounded in where you are. By default smartly sends a capped directory listing plus your git branch, status and worktrees, so a request like “delete all my branches that are already merged into main” resolves against what is actually there. See Context for the three levels and what each one sends.

Per-invocation flags

These override configuration for a single call and change nothing on disk.

FlagEffect
--provider <name>Use anthropic, openai, claude-cli or codex-cli for this call.
--model <name>Override the model for whichever provider is active.
--context <level>Use none, light or full context for this call.
--confirmForce the [y/N] prompt, whatever the configured mode.
-y, --yesForce auto-run, whatever the configured mode.
--dry-runPrint the command. Ask nothing, run nothing.

--confirm and -y/--yes are mutually exclusive.

smartly --provider codex-cli --context none show me disk usage by directory
smartly --dry-run delete all my branches that are already merged into main
smartly --confirm kill whatever is listening on port 3000

Trying a provider without committing to it

--provider and --model are the cheapest way to compare backends, because neither writes to your config file:

smartly --provider claude-cli --model haiku --dry-run list the largest files here

If that provider needs setup you have not done yet, smartly fails with an actionable error rather than quietly falling back to another one. See Providers.

Limitations

  • One shell command line per invocation. No multi-step scripts.
  • bash and zsh on Linux and macOS. Windows and PowerShell are not supported yet.
  • The OpenAI provider ships with no default model — you must set providers.openai.model yourself.
  • claude-cli and codex-cli need the respective CLI installed and separately logged in, and their error classification is best-effort.