by Balanov
Tiny local-first AI harness: any model, MCP and Agent Skills, natural-language CLI. Zero dependencies. MIT.
# Add to your Claude Code skills
git clone https://github.com/Balanov/shimGuides for using ai agents skills like shim.
See how shim compares with popular alternatives.
shim is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Balanov. Tiny local-first AI harness: any model, MCP and Agent Skills, natural-language CLI. Zero dependencies. MIT. It has 192 GitHub stars.
shim's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/Balanov/shim" and add it to your Claude Code skills directory (see the Installation section above).
shim is primarily written in Go. It is open-source under Balanov on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh shim against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Model-agnostic coding agents are everywhere. Setting them up is still too hard: provider IDs, API endpoints, MCP JSON, skills directories, and a new interface for every tool.
Shim is the small adapter between you and all of that.
SKILL.md loading from common directories.Measured on the maintainer's Windows machine for v0.1.0: 7.29 MiB stripped binary and 9.96 ms median process startup for shim --version over 30 runs. This is a local measurement, not a cross-platform performance guarantee.
Get a static binary for Windows, macOS, or Linux from Releases, put it on your PATH, then run:
shim setup
shim
On PowerShell, use .\shim.exe when running the binary from the current directory.
Go 1.25+:
go install github.com/Balanov/shim/cmd/shim@v0.1.0
shim setup
git clone https://github.com/Balanov/shim.git
cd shim
go test ./...
go build -trimpath -ldflags="-s -w" -o shim ./cmd/shim
./shim setup
Windows also has scripts/build.ps1; Unix has scripts/build.sh.
you › найди локальные модели
↳ /discover --add
Run this command? [y/N] y
you › show my tools
↳ /tools
you › fix the failing tests in this repository
Shim has deterministic offline phrases for common English and Russian management commands. For other languages, assign a local model as the router:
shim router use ollama/qwen3:4b
The router sees non-command chat text so it can distinguish configuration requests from agent tasks. Use a loopback model if you want that step to stay on your machine. No model weights are bundled or silently downloaded; that would defeat the tiny-binary goal. Your primary model handles ordinary conversation in whatever language it supports.
# Local models: discover and configure all running servers
shim model discover --add
# Hosted models
shim model add openrouter anthropic/claude-sonnet-4.5 --name claude --use
shim model add openai gpt-5 --name gpt --use
shim model add huggingface org/model --name hf --use
# Any OpenAI-compatible endpoint
shim model add custom my-model --name mine \
--base-url http://127.0.0.1:8000/v1 --use
# One-shot agent run
shim run --read-only "explain this repository"
shim run --yes --verbose "fix the tests and verify the result"
# Interactive terminal
shim
Run shim help for the full command surface.
| Preset | Adapter | Credential environment variable |
|---|---|---|
ollama |
OpenAI-compatible | None |
lmstudio |
OpenAI-compatible | None |
llamacpp |
OpenAI-compatible | None |
openai |
OpenAI-compatible | OPENAI_API_KEY |
openrouter |
OpenAI-compatible | OPENROUTER_API_KEY |
anthropic |
Anthropic Messages | ANTHROPIC_API_KEY |
gemini |
Gemini OpenAI-compatible endpoint | GEMINI_API_KEY |
github |
GitHub Models | GITHUB_TOKEN |
huggingface |
Hugging Face router | HF_TOKEN |
custom |
OpenAI-compatible or Anthropic | Optional, configurable |
“Any model” means any model exposed through a supported HTTP API. GGUF and other local weights run through Ollama, LM Studio, llama.cpp, or another compatible inference server; Shim is the harness, not an inference engine.
PowerShell example:
$env:OPENROUTER_API_KEY = "..."
shim model add openrouter your/model --name main --use
shim model test main
For persistent environment variables, use your OS or shell's standard secret/configuration mechanism. Do not put keys in the project config.
Shim discovers SKILL.md in:
skills/ directory next to Shim's config;.shim/skills/;.agents/skills/;.claude/skills/.Only names and descriptions enter the system prompt. Full instructions load on demand through load_skill.
shim skill add owner/repository
shim skill add https://github.com/owner/repository
shim skill add ./local/skill-or-collection
shim skill list
shim skill show name
shim skill remove name
Skills are untrusted instructions. Review them before use, especially when they request shell or network access.
# Stdio server
shim mcp add filesystem npx -y @modelcontextprotocol/server-filesystem .
shim mcp tools filesystem
shim mcp call filesystem list_allowed_directories '{}'
# Streamable HTTP server
shim mcp add internal https://mcp.example.com/mcp
shim mcp list
shim mcp remove filesystem
MCP tools are namespaced as mcp_<server>_<tool> and require confirmation in the default ask mode. HTTP headers and stdio environment variables can be added to the JSON config. Values support ${ENV_VAR} expansion, so secrets can stay in the environment rather than in files.
Default mode is ask:
shim permissions read-only # no writes, shell, or MCP
shim permissions ask # confirm consequential actions
shim permissions auto # allow the agent to act without prompts
For one run, prefer --read-only or --yes over changing the global default.
Shim is not an OS sandbox. Shell commands and MCP servers run with your user's permissions. Workspace path checks do not contain a malicious process. Use a container, VM, or OS sandbox for untrusted workloads. Treat model output, repository text, skills, and MCP responses as untrusted data.
shim session list
shim session new
shim run --resume SESSION_ID "continue"
shim status
shim doctor
shim config path
shim config show
Config is at the OS user-config location in shim/config.json; override it with SHIM_CONFIG or --config. Sessions are append-only JSONL next to it. Network traffic occurs only for explicit model calls, skill downloads, local discovery, and the MCP servers you configure.
| Project | Strength | Shim's different bet |
|---|---|---|
| OpenCode | Full-featured provider-agnostic terminal workspace | No TUI/server surface; conversational setup and a tiny static binary |
| Pi | Minimal, extensible coding-agent toolkit | Zero runtime dependencies and an allowlisted natural-language control layer |
| Goose | Broad MCP-powered automation ecosystem | A smaller local-first control plane with no daemon or desktop app |
| Aider | Git-native pair programming | General agent harness with MCP, lazy skills, and conversational management |
Shim does not try to beat foundation-model vendors at their own agent UI. It makes heterogeneous models and tools easy to wire together and easy to fork.
go test ./...
go vet ./...
go fmt ./...
The codebase uses only the Go standard library. See Architecture, Contributing, and Security. Русское введение: README_RU.md.