Ingot: versioning and review for agent skills
Ingot
A local MCP server that stores skills as versions and lets improved variants go live only after a human review
- 51 ★ on the repository
- Last commit
- Apache-2.0
Extended access
Why this level
- The server hands the agent its instructions, and `skills/` contents shape agent behavior with no review
- Connectors write session prompts, responses and tool calls to Langfuse
Install
- Works in
Manual install
git clone https://github.com/SlanchaAI/ingot.git && cd ingotThen `cp .env.example .env` and a value for `API_KEY` or `BASE_URL` for Ollama or vLLM.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The server hands the agent its instructions, and `skills/` contents shape agent behavior with no review
- Connectors write session prompts, responses and tool calls to Langfuse
This is third-party code. Review the repository files before installing.
What it does
Ingot is a local library and MCP server for agent skills. Every file in a skill folder gets a hash, so a version in a trace, in an evaluation report and on disk can be matched. The agent calls `route_and_load` at the start of a request: the server picks a skill by embeddings on the CPU, no GPU, and returns the current instructions. Improved variants go through quarantine. The SkillOpt integration takes real agent traces, trains bounded instruction edits and compares the old and new version on held-out tasks. The result is a proposal with per-case scores and token cost. Only a human can replace the live skill, by confirming the promotion in the UI. The previous version is kept, and rollback is available from the UI and the command line. The `docker compose up` command starts the router on port 8000, the UI on 8080 and a bundled Langfuse on 3100 for traces. Models go through OpenRouter or an OpenAI-compatible Ollama or vLLM endpoint. Claude Code and Codex have the `./scripts/claude_setup.sh` and `./scripts/codex_setup.sh` scripts.
Who it is for. Developers who keep their own skill library for Claude Code or Codex and want to test instruction edits on held-out tasks before they go live.
Good fit when
- A Tailwind skill went stale and you want to run the fix on held-out tasks first
- Several agents take skills from one place and you want a single server with versions
- A new skill version made answers worse and you need to roll back to a snapshot
- Decisions about instruction changes should leave a local log
- You want Langfuse to show which skill and which version loaded for a request
Not a fit when
- There are few skills and they change by hand once a month: a multi-container stack will not pay off
- The server is meant for a team on a shared network: Ingot is built for one operator, and wider access has a separate hardened-setup guide
- Sessions contain data that must not be stored in Langfuse: the connectors write prompts, responses and tool calls there
- Docker is unavailable: the stack runs through Docker Compose 2.24.4 or newer
Example request
How do I merge several PDFs into one and add page numbers?MCP
- Transport
- http
- Authentication
- not required
Environment variables
API_KEYsecret- OpenRouter key for hosted models; `BASE_URL` can be set instead
BASE_URL- Address of an OpenAI-compatible Ollama or vLLM endpoint
AUTH_PASSWORDsecret- Password of the review UI; change the default
INGOT_MCP_URL- MCP server address when it is not on localhost
Limitations
Docker, Docker Compose 2.24.4 or newer and free ports 8000, 8080 and 3100 are required. Models need an OpenRouter key or the address of a compatible Ollama or vLLM endpoint. The MCP endpoint has no built-in authentication, and the UI is protected by a default password that you should change through `AUTH_PASSWORD`. Files copied into `skills/` directly bypass quarantine and go live at once. The decision log is local and not tamper-proof.
How to disable. Run `claude mcp remove ingot` and stop the stack with `docker compose down` in the project directory.
FAQ
How do I connect Ingot to Claude Code?
Start the stack with `docker compose up -d`, then run `./scripts/claude_setup.sh`. The script adds the `ingot` MCP server at `http://localhost:8000/mcp` at user level and installs the Langfuse connector. The `--doctor` flag checks the setup without changing anything.
Why does the agent not call Ingot by itself?
Connecting the server only gives access to the tool. Add a standing rule to `CLAUDE.md` or `AGENTS.md`: call `ingot.route_and_load` at the start of a request and follow the returned `skill_body`.
Can SkillOpt replace a skill on its own?
No, it only proposes an edit. The variant lands in `runs/pending/` and waits for a decision, and only a human can replace the live skill after reviewing scores on held-out tasks.
Which models work?
OpenRouter with a key in `API_KEY`, or Ollama and vLLM at the address in `BASE_URL`. OpenRouter calls use zero-data-retention routing, enforced on every request.
Do I need a separate Langfuse?
No, `docker compose up` starts its own Langfuse on port 3100. For Langfuse Cloud or your own project use `docker-compose.external-langfuse.yml` and set the `LANGFUSE_*` variables.
Discussion
No questions or reviews yet.
Related
MCP serversA CLI and MCP server for Agent Skills: spec validation, installs from GitHub and on-demand loading of the right skill
Meta Skill (ms)
Meta Skill
Meta Skill (ms) keeps skills locally in SQLite and Git, searches them with a hybrid index and serves agents over MCP
A skill with 25 commands to audit and improve the prompts, tools and agent designs of a project in Cursor, Claude Code and Codex
Claude Skills MCP: semantic search for skills
Claude Skills MCP
An MCP server with vector search: the agent describes a task and gets matching skills from the Anthropic and K-Dense collections
A command-line skill manager: installs skills from a marketplace, GitHub, private Git and npm into 45 agents' folders and scans them first
A CLI and MCP server that turns doc sites, repos, PDFs and videos into skills and RAG-ready data
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| Ingot: versioning and review for agent skills (this card) | yes | not required | 51 | |
| Agent Skill Manager | no | 966 | finds and installs third-party skills with a pre-install check, while this one versions your own skills and reviews automatic edits | |
| Langfuse Skills | yes | 333 | Langfuse skills teach an agent to set up tracing, while Ingot itself uses Langfuse for traces and manages skill versions |
README in short
Ingot targets a single trusted operator and local development. The docs walk the full loop on a stale Tailwind skill: finding failing traces, optimizing, reviewing, promoting a version and rolling back. Network and security details sit in separate guides.