Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 21:22
· 14 commits to main since this release

Tell your shell what you mean. smartly 0.1.0 turns a plain
English sentence into one executable shell command.

Install

go install github.com/rizwanreza/smartly-cli/cmd/smartly@v0.1.0

Or download a binary below (macOS and Linux, amd64 and arm64 — verify
with checksums.txt).

Docs: https://rizwanreza.github.io/smartly-cli/

The first public release of smartly.

$ smartly delete all my branches that are already merged into main
→ git branch --merged main | grep -vE '^\*| main$' | xargs git branch -d

What's in it

Four LLM backends behind one interface. anthropic and openai use
API keys; claude-cli and codex-cli shell out to your already-logged-in
claude/codex CLI session instead — no separate key, no separate bill.
The openai provider accepts any OpenAI-compatible endpoint via
base_url (Fireworks, vLLM, LM Studio, Azure OpenAI).

Three execution modes. auto runs the generated command immediately
(the default — deliberately). confirm always asks. confirm-destructive
asks only when a local static classifier thinks the command changes
something — ls runs straight through, rm -rf stops and explains
itself, and anything the classifier doesn't recognize also asks, on the
principle that a seatbelt that silently passes what it doesn't recognize
is worse than no seatbelt. --confirm, -y, and --dry-run override
per invocation.

It knows where it is. By default smartly sends a capped directory
listing and your git branch/status/worktrees, so "all my merged branches"
resolves against your actual repository. It also generates commands for
your OS — sed -i '' on macOS, sed -i on Linux.

Interactive onboarding. smartly onboard walks through every setting
with a keyboard-driven flow: it detects which providers are actually
available, never asks for an API key (it checks the environment and
prints the export line if missing), requires a second confirmation before
enabling shell-history context, and writes nothing until you approve the
final config.

Shell integration. eval "$(smartly init zsh)" (or bash) makes
generated cd and export commands affect the shell you're typing in —
a subprocess can't do that on its own.

An honest audit trail. Every request and outcome is appended to a
JSONL history log, including the classifier's risk verdict for every
command — so even in auto mode you can go back and see exactly what ran
without asking.

Worth knowing

  • Auto-run is the default, including for destructive commands. Put
    --dry-run on your first few requests, or run smartly onboard and
    pick a confirmation mode.
  • The destructive-command classifier is a best-effort seatbelt, not a
    sandbox — false negatives are possible by construction.
  • Windows/PowerShell isn't supported yet.