The AI assistant that lives in your terminal — and answers to you.
Review code, ask questions, write code, and prove your agents actually work — all from the command line. Bring your own model, edit every prompt, wire it into CI. Small, cross-platform, and no vendor lock-in.
npm install gaunt-sloth@alpha -g
Installs the gaunt-sloth, gsloth and gth commands — same CLI, three names.
▄█▀▀▀▀▀▀▀▀█▄
▄▀█▄█▀▀▀▀▀▀█▄█▀▄
█ ▀█▄▀ ▀▄█▀ █
▀▄▀▀ ██████ ▀▀▄▀
▀██████████▀
┏┓ ┏┓┓ ┓
┃┓┏┓┓┏┏┓╋ ┗┓┃┏┓╋┣┓ v2.0.0-alpha
┗┛┗┻┗┻┛┗┗ ┗┛┗┗┛┗┛┗
your-model
~/code/
Judge: profile "strict" (model: your-model)
PASS contract-list [admin]
PASS contract-list [limited]
PASS budget-read [admin]
FAIL budget-read [limited]
— must_not_contain matched "2.4M"
— must_call: no tool matched mcp__ledger__*
EVAL RESULT: 3/4 cell(s) passed, 1 failed.
Results written to eval/out/authz
The restricted role answered with a number it should never have seen — and never called the server it was meant to. Proven by the tool trace, not by reading transcripts.
Built For Developers
An agent you can test, script, and own.
Asking a model about a file is table stakes now. These are the parts you won't find in the other CLI agents.
Test any agent — not just this one
Point a suite at Gaunt Sloth's own agent, an external ADK or AG-UI agent, or a live MCP server. Assertions grade the tool trace, so a case fails unless the right tool was really called — however plausible the prose. Diff a run against yesterday's to catch what regressed.
gaunt-sloth eval eval/ --compare-to out/last
One profile per role, per model
An identity profile is a config directory with its own model, prompts, MCP connections, auth headers and allowed tools. Run the same suite once per profile and you've proven your authorization rules — admin gets the data, the restricted user gets a refusal — with evidence instead of transcripts.
gaunt-sloth ask "list the contracts" -i limited
It runs your tests, on your terms
One setting, five rungs. An auto-rater judges each shell command before it runs — your test suite goes through, rm -rf stops and asks. Say yes once, for the session, or for good. Widening what's allowed is always something you write in a file you can read, never something inferred from one answer.
gaunt-sloth code "add a retry and make tests pass"
Reviews that don't argue back
Review PRs, diffs, and files with requirements pulled straight from GitHub or Jira. Reviews are stateless, so no one can talk it into changing its verdict — and they drop cleanly into CI to post results as PR comments.
git --no-pager diff | gaunt-sloth review
Prompts are scripts, not chats
Write a prompt as a markdown file and run it near-deterministically — it streams to stdout, pipes like any Unix tool, and exits non-zero when it fails. batch fans one script across a matrix of models and inputs; workflow orchestrates several calls from plain JS.
gaunt-sloth exec release-notes.md > NOTES.md
No black box, no lock-in
Every prompt is a markdown file you can edit, and one command prints exactly what would be sent before you spend a call. Swap between Anthropic, Google, OpenAI, Groq, DeepSeek, xAI, OpenRouter or a local on-prem model from config alone. Your keys, your machine, MIT licensed.
gaunt-sloth get review prompt
Interactive TUI
You see what it is about to do
A one-shot command hands you the result once it is already done. The full-screen session shows every tool call as it happens — and stops on the ones your approvals policy says you should decide yourself.
> add a retry to the fetch helper and get the suite green
▸ ✓ 📁 read_file(path=src/fetchHelper.ts) [done]
▾ ✓ 📁 edit_file(path=src/fetchHelper.ts) [done]
+ if (attempt < maxRetries) return backoff(attempt);
- throw err;
▸ ✓ 🔧 shell(command=npm test) [done]
Test Files 1 passed (1)
… (+6 more lines)
The agent wants to run a shell command via shell
git push origin main
⚠ Auto-rater (destructive): pushes to a shared remote — this tool cannot un-push it.
[s]/[a] will remember this exact command
stored as git push origin main
Approve? [o]nce [s]ession [a]lways [N]o
code · model: your-model · turns: 3 · ready · approvals: Auto safe (auto-rater)
The tests ran without asking. The push did not. Which commands stop for you is a rung you set and a deny list you can read — never a guess the agent makes in the moment.
Supported Model Providers & Ecosystem Integrations
Real Jobs
What people actually point it at
Three jobs it finishes end to end. Each starts with a problem, not a command.
Security said no to the cloud review bot
Your code cannot go to a third-party review service, so pull requests go unreviewed when nobody has time. Run the review yourself instead — against a local model if that is what your policy allows. It is stateless, so there is no conversation to argue the verdict down, and it exits non-zero, so it gates the build like any other check.
git --no-pager diff | gth review
Nobody knows if the MCP server still works
You shipped an MCP server. Someone rewords a tool description and behaviour changes like
a code change — except nothing compiles and no test fails. Write the cases as YAML and
run them in CI. Lock the agent to the server's own tools with
allowedTools so it cannot quietly answer from the
source tree and hand you a green run that tested nothing.
gth eval eval/mcp-server.yaml
You think the restricted role is restricted
An agent answers correctly for an admin. Does it refuse for everyone else, or does it answer from something it read earlier? Give each role its own identity profile — its own model, credentials and allowed tools — and run one suite across all of them. The assertions read the tool trace, so a leak fails the run instead of reading plausibly.
gth eval eval/authz-matrix.yaml
Quickstart
Four lines to a useful answer
Needs Node.js 24 or newer. Swap anthropic for any
provider you have a key for — or point it at a local model and skip the key entirely.
$ npm install -g gaunt-sloth@alpha
Installs the gaunt-sloth, gsloth and gth commands — same CLI, three names.
$ gth init anthropic
Scaffolds .gsloth.config.json and the editable markdown prompts, in this project.
$ export ANTHROPIC_API_KEY=sk-ant-...
Your key, your account, your bill. Nothing is proxied through us.
$ gth ask "what does this project do?" -f README.md
Then try gth review, gth code, or gth on its own for an interactive session.
The documentation walks through providers, CI recipes, running a free local model, and writing eval suites.
FAQ
The questions people ask first
Does my code leave my network?
That is entirely your choice, because there is no Gaunt Sloth server anywhere in the path. Point it at a local Ollama or LM Studio endpoint and nothing leaves the machine. Point it at a hosted provider and the request goes straight from your terminal to that provider, under your own API key.
What does it cost?
Gaunt Sloth is free and MIT licensed. There is no account, no seat, and no plan. You bring your own API key and pay your model provider directly for what you use — or run a local model and pay nothing at all.
Which models does it work with?
Anthropic, Google (Vertex AI and AI Studio), OpenAI, Groq, DeepSeek, xAI, OpenRouter, Hugging Face, and local Ollama or LM Studio endpoints — plus any other LangChain.js-compatible provider through JavaScript config. Switching is a config change, never a code change.
What do I need installed?
Node.js 24 or newer and npm 11 or newer. That is the whole list. It runs on Linux, macOS and Windows, and the dependency tree is deliberately small — CommanderJS plus LangChain and LangGraph.
Can it run in CI?
Yes, and it is built for it. review is stateless
and exits non-zero on failure. exec runs a
markdown prompt non-interactively and streams to stdout, so it pipes.
eval separates exit code 1, meaning your agent
regressed, from exit code 2, meaning the harness itself broke — so a pipeline can treat
them differently.
Will it run commands without asking me?
You choose, on a five-rung ladder. On the default rung an auto-rater rates each shell command and approves what it rates safe, bringing anything questionable to you. Being precise about what that means: Gaunt Sloth can still rewrite and delete files in your working folder without asking — "safe" means each action is checked for reaching outside that folder or harming your system, not that nothing changes.
Can I see what it sends the model?
All of it. Every system prompt is a markdown file in your repository that you can read,
edit and commit. Running gth get review prompt
prints exactly what would be sent, before you spend a call on it.
Is it really open source?
MIT licensed, developed in the open on GitHub, published on npm. Session history and usage insights are stored locally on your machine and are opt-in. Version 2.0 is in alpha, so expect sharp edges and pin your version if you depend on it.
Ready to take control of your CLI assistant?
Install Gaunt Sloth in seconds. Cross-platform, lightweight, and ready for your workflow.