The missing standard library for Agentic Workflows. Native Go. Single Binary. 100x Faster than Python.
LLM Agents need to be fast. Waiting 400ms for a Python script or 100ms for Node.js to spin up just to read a file kills the flow of an autonomous loop.
llm-tools is a suite of high-performance, statically compiled tools designed to be the "hands" of your AI agent. It includes a native MCP Server for instant integration with Claude Desktop and Gemini.
I benchmarked this against equivalent Python and Node.js implementations on a real-world codebase. The difference is massive.
| Operation | Action | Go (llm-support) | Python | Speedup |
|---|---|---|---|---|
| MCP Handshake | Server Initialization | 4ms | 408ms | π 102x |
| Startup | CLI Help | 6ms | 113ms | 19x |
| Multigrep | Search 5 keywords (150k hits) | 1.47s | 20.7s | 14x |
| Hash | SHA256 Verification | 6ms | 65ms | 10.8x |
Benchmarks run on M4 Pro 64gb macOS Darwin (arm64), 2025-12-26.
I ported the popular fast-filesystem-mcp from TypeScript to Go to create llm-filesystem.
| Benchmark | Go (llm-filesystem) | TypeScript (Node) | Speedup |
|---|---|---|---|
| Cold Start | 5.2ms | 85.1ms | π 16.5x |
| MCP Handshake | 40.8ms | 110.4ms | 2.7x |
| File Read | 49.5ms | 108.2ms | 2.2x |
| Directory Tree | 50.9ms | 113.7ms | 2.2x |
Benchmarks run on M4 Pro 64gb macOS Darwin (arm64), 2025-12-31.
Deploying agent tools in Python or Node is painful. You have to manage virtual environments, node_modules, pip install dependencies, and worry about version conflicts.
llm-tools is a single static binary. It works instantly on any machineβno setup required.
llm-tools isn't just for reading files; it's a reliability layer for your agent's cognitive functions.
The prompt command acts as a Universal Adapter for almost any LLM CLI (gemini, claude, ollama, openai, octo). It wraps them with:
- Retries & Backoff: Automatically retries failed API calls.
- Caching: Caches expensive results to disk (
--cache-ttl 3600). - Validation: Ensures output meets criteria (
--min-length,--must-contain) or fails fast.
# Reliable, cached, validated prompt execution
llm-support prompt \
--prompt "Analyze this error log" \
--llm gemini \
--retries 3 \
--cache \
--min-length 50Run prompts across thousands of files in parallel without writing a loop script. Perfect for migrations, code reviews, or documentation generation.
# Review all Go files in parallel (4 concurrent workers)
llm-support foreach \
--glob "src/**/*.go" \
--template templates/code-review.md \
--llm claude \
--parallel 4 \
--output-dir ./reviewsRecommended: Download the latest binary for your OS. No dependencies required.
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | llm-tools-darwin-arm64.tar.gz |
| macOS (Intel) | llm-tools-darwin-amd64.tar.gz |
| Linux (AMD64) | llm-tools-linux-amd64.tar.gz |
| Windows | llm-tools-windows-amd64.zip |
go install github.com/samestrin/llm-tools/cmd/llm-support@latest
go install github.com/samestrin/llm-tools/cmd/llm-clarification@latest
go install github.com/samestrin/llm-tools/cmd/llm-filesystem@latest
go install github.com/samestrin/llm-tools/cmd/llm-semantic@latestSee what's possible with a single line of code:
# Find all TODOs and FIXMEs (Fast grep)
llm-support grep "TODO|FIXME" . -i -n
# Show project structure (3 levels deep)
llm-support tree --path . --depth 3
# Search for multiple definitions in parallel (Token optimized)
llm-support multigrep --path src/ --keywords "handleSubmit,validateForm" -d
# Extract data from JSON without jq
llm-support json query response.json ".users[0]"
# Calculate values safely
llm-support math "round(42/100 * 75, 2)"
# Generate config from template
llm-support template config.tpl --var domain=example.com --var port=8080
# Hash all Go files (Integrity check)
llm-support hash internal/**/*.go -a sha256
# Count completed tasks in a sprint plan
llm-support count --mode checkboxes --path sprint/plan.md -r
# Detect project stack
llm-support detect --path .
# Extract only relevant context (AI-filtered) - works with files, dirs, and URLs
llm-support extract-relevant --path docs/ --context "Authentication Config"
llm-support extract-relevant --path https://docs.example.com --context "API keys"
# Extract and rank links from any webpage
llm-support extract-links --url https://example.com/docs --json
# Summarize directory content for context window (Token optimized)
llm-support summarize-dir src/ --format outline --max-tokens 2000
# Batch process files with a template (LLM-driven)
llm-support foreach --files "*.ts" --template refactor.md --parallel 4Detailed references for all 40+ commands:
- llm-support Commands - File ops, search, analysis, and data processing.
- llm-clarification Commands - Long-term memory and decision tracking system.
- llm-filesystem Commands - High-performance filesystem operations (drop-in replacement for fast-filesystem-mcp).
- llm-semantic Commands - Semantic code search with local embeddings.
- MCP Setup Guide - Integration with Claude Desktop & Gemini.
- Quick Reference - Cheat sheet.
The Loop:
- Agent receives a task.
llm-supportprovides fast codebase context (files, structure, search results).llm-clarificationrecalls past decisions ("Use Jest, not Mocha") to prevent regression.- Agent generates code with full context.
sequenceDiagram
participant U as π€ User
participant A as π€ Agent
participant S as β‘ Support
participant M as π§ Memory
participant C as π Codebase
U->>A: /execute-sprint
rect rgb(30, 30, 30)
note right of A: Fast Context
A->>S: multiexists, count, report
S-->>A: β Context Loaded (22ms)
end
rect rgb(50, 20, 20)
note right of A: Long-Term Memory
A->>M: match-clarification
M-->>A: β RECALL: "Use Jest"
end
A->>C: TDD Implementation (using Jest)
