| Crates.io | runtool |
| lib.rs | runtool |
| version | 0.3.5 |
| created_at | 2026-01-18 08:40:00.548004+00 |
| updated_at | 2026-01-19 14:49:33.169135+00 |
| description | a.k.a. run: the bridge between human and AI tooling |
| homepage | |
| repository | https://github.com/nihilok/run |
| max_upload_size | |
| id | 2052056 |
| size | 16,940 |
The bridge between human and AI tooling
Define functions in a Runfile. Your AI agent discovers and executes them via the built-in MCP server. You run them from the terminal too with instant startup and tab completion. Shell, Python, Node—whatever fits the task.
# @desc Search the codebase for a pattern
# @shell python
search(pattern: str) {
import sys, os, re
for root, _, files in os.walk('.'):
for f in files:
path = os.path.join(root, f)
try:
for i, line in enumerate(open(path), 1):
if re.search(sys.argv[1], line):
print(f"{path}:{i}: {line.rstrip()}")
except: pass
}
Humans run it from the terminal:
$ run search "TODO"
AI agents discover and execute it automatically via the Model Context Protocol (MCP).
Note: runtool is an alternative package name for run. Both install the same run binary and provide identical functionality.
cargo install runtool
This installs the run binary to your cargo bin directory.
macOS/Linux (Homebrew)
brew tap nihilok/tap
brew install runtool
Windows (Scoop)
scoop bucket add nihilok https://github.com/nihilok/scoop-bucket
scoop install runtool
Create a Runfile in your project:
# @desc Deploy to an environment
deploy(env: str, version = "latest") {
echo "Deploying $version to $env..."
./scripts/deploy.sh $env $version
}
# @desc Run the development server
dev() {
cargo run --release
}
Run from terminal:
$ run deploy staging
$ run dev
Enable AI integration:
$ run --serve-mcp
See the run crate documentation for:
Both run and runtool are maintained in the same repository:
https://github.com/nihilok/run