IronRAG
One-click knowledge system for documents, internal bots, and AI agents
Install / Use
claude mcp add mlimarenko -- npx -y github:mlimarenko/IronRAGIf the server publishes to npm under a different name, use that package instead โ check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of IronRAG
IronRAG scores 81/100 on our quality scale, 734th of 950 AI & Machine Learning skills we index.
Its MCP Server is 11 KB long, well organised into 12 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.
It has 49 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 6 days ago, so IronRAG is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit โ read the skill file before letting an agent act on it.
IronRAG compared with similar skills
All 4 of these similar skills score higher than IronRAG; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| IronRAG (this skill)by mlimarenko | 81 | 49 | 6d ago | MCP Server |
| claude-memby thedotmack | 100 | 103.3k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 102.9k | 1d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 88.3k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.9k | 1d ago | CLAUDE.md |
Frequently asked questions
- How do I install IronRAG?
- Run
claude mcp add mlimarenko -- npx -y github:mlimarenko/IronRAG. The install tabs above show the steps for each supported agent. - Which AI agents does IronRAG work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is IronRAG safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is IronRAG still maintained?
- The repository was last updated 6 days ago, so IronRAG is actively maintained.
Skill content
View source on GitHubQuick start
curl -fsSL https://raw.githubusercontent.com/mlimarenko/IronRAG/master/install.sh | bash
Or from source:
git clone https://github.com/mlimarenko/IronRAG.git
cd IronRAG
# First start only: the API and workers refuse to start without a credential
# master key, and .env.example ships it empty. Add
# IRONRAG_AI_PROVIDER_API_KEYS_JSON_B64 to the same file.
if [ ! -f .env ]; then
sed "s|^IRONRAG_CREDENTIAL_MASTER_KEY=.*|IRONRAG_CREDENTIAL_MASTER_KEY=$(openssl rand -base64 32)|" \
.env.example > .env
fi
docker compose up -d
The install.sh wizard writes such a key for a fresh .env on its own. Never
overwrite an existing .env, and never regenerate its key while the deployment's
PostgreSQL volume persists: the stored credentials would stay undecryptable. To
change the port, resource profile, provider keys or bootstrap admin on an
existing install, re-run install.sh, which keeps the stored secrets.
Open http://127.0.0.1:19000, create an admin account, upload a document, and ask a question.
Wizard details, non-interactive CI installs, provider keys, and telemetry: docs/en/INSTALL.md ยท docs/ru/INSTALL.md
Stack and capabilities
- Self-hosted runtime โ Docker Compose (PostgreSQL + pgvector, Redis, backend, worker, frontend) or Helm on Kubernetes; data stays on your servers
- Typed knowledge graph โ entities, typed relations, and chunk-level citations; hybrid retrieval across vector, lexical, graph, and technical-fact lanes
- Native MCP server โ 23 tools for documents, graph, web ingest, and grounded
grounded_answer; works with Claude Desktop / Code, Cursor, Codex, VS Code (Continue / Cline / Roo), Zed, OpenClaw, Hermes, and custom HTTP MCP clients - Provider-agnostic AI โ OpenAI, DeepSeek, Qwen / DashScope, GPTunnel, OpenRouter, RouterAI, MiniMax, Ollama, LiteLLM / OpenAI-compatible gateways; eight binding purposes (
extract_text,extract_graph,graph_entity_type,embed_chunk,query_compile,query_rerank,query_answer,agent) with per-currency cost rollups in the UI - Code-aware + CPU-first ingest โ 15-language tree-sitter AST; JSON / YAML / TOML / CSV / XLSX parsers; technical facts (paths, endpoints, env vars, error codes); Docling CPU OCR for PDF / DOCX / PPTX without a GPU
- Multi-tenant IAM โ principals, scoped tokens (system / workspace / library), permission groups, audit log
- Durable ops โ restart-safe document jobs with page-range checkpoints; durable assistant turns that recover after stream drops; streaming
tar.zstbackup / restore - Pluggable connectors โ BookStack, Confluence, YouTrack, Git repos, or build your own; see connectors/. They live in this repository and ship on this version (poll + webhook intake)
Configure AI
Put provider keys in IRONRAG_AI_PROVIDER_API_KEYS_JSON_B64 and keep
IRONRAG_CREDENTIAL_MASTER_KEY set (generated by install.sh on fresh installs).
Then bind models under Admin โ AI โ Bindings.
- Provider catalog and binding purposes โ AI-BINDINGS.md
- Credential encryption and key rotation โ CREDENTIAL-ENCRYPTION.md
Pipeline
<p align="center"> <img src="./docs/assets/readme-architecture.png" alt="IronRAG pipeline: ingest and enrich sources, persist knowledge in PostgreSQL with pgvector, and retrieve evidence for grounded answers. Source storage and Redis workers have separate roles; AI models resolve through per-purpose bindings." width="1280"> </p>- Ingest โ files, web, API / MCP โ recognition โ structured chunks โ PostgreSQL
- Build memory โ embeddings, technical facts, entities and typed relations
- Query โ hybrid retrieval (vector, lexical, graph, facts) โ grounded answer with citations
- Route providers โ each LLM stage uses its binding; switch models without rewriting the pipeline
Deep dive: docs/en/PIPELINE.md ยท docs/en/README.md
Documentation
| Topic | English | Russian | | --- | --- | --- | | Install & bootstrap | INSTALL.md | INSTALL.md | | Architecture | README.md | README.md | | Pipeline | PIPELINE.md | PIPELINE.md | | MCP | MCP.md | MCP.md | | AI bindings | AI-BINDINGS.md | AI-BINDINGS.md | | Credential encryption | CREDENTIAL-ENCRYPTION.md | CREDENTIAL-ENCRYPTION.md | | Capacity & Compose / Helm | CAPACITY-PLANNING.md | CAPACITY-PLANNING.md | | IAM | IAM.md | IAM.md | | Changelog | CHANGELOG.md | โ |
More topics (CLI, frontend, webhooks, benchmarks, Ollama) live under docs/en/ and docs/ru/.
Working on IronRAG
Vector dimension is a property of a library, not a constant of the product.
It comes from the active EmbedChunk/EmbedQuestion binding. Do not add a
product-wide const VECTOR_DIM. PostgreSQL shards
(knowledge_chunk_vector_d{dim}, knowledge_entity_vector_d{dim}) are created
and configured through infra/postgres/pg_vector_config.rs in both the search
store and snapshot restore, including constraints on existing shards. Changing
dimension requires re-embedding into a new shard. Test vector storage with at
least two dimensions.
No hardcoded user-facing strings in apps/web/. Every visible text is
t('namespace.key'), with the key present in both locales
(shared/i18n/ru.json, en.json). Interpolating values is fine; the template
lives in the locale file. make frontend-i18n-audit (part of frontend-check)
walks the TypeScript AST and understands dynamic keys and plural forms.
The audit rejects defaultValue on static keys: translations belong in the
locale files. Dynamic keys may use an API-produced runtime token as a fallback.
A change to the answer pipeline is verified through both channels. The
built-in assistant is an MCP-client-shaped agent over the same tool surface an
external MCP client gets, and grounded_answer stays the one high-level
grounded-answer tool โ the contract is apps/api/tests/MCP_PARITY.md. After a
change in retrieve, answer or the MCP tools, run the regression through the UI
and through an external MCP client. One channel healthy and the other
degraded is not a release; a tool reachable only from the UI is a defect.
Documentation
CLIโ maintenance commands and schema rollout.INSTALL,PIPELINE, andAI-BINDINGSโ setup and runtime behavior.CHANGELOGโ release changes.
Development checks
-
Your own database on your own port. The default in
apps/api/src/app/config/loading.rsispostgres://postgres:postgres@127.0.0.1:5432/ironrag, andTempPostgresDatabasestarts withdrop database if exists. PointIRONRAG_DATABASE_URLat a PostgreSQL you own โ settings are read with theIRONRAG_prefix, and a bareDATABASE_URLis ignored. -
Integration tests are one crate,
apps/api/tests/it, not a set of binaries. The required suites areBACKEND_INTEGRATION_SUITESin theMakefile, and a full run needs--all-targetsโ without it the binaries undertests/are skipped along with their compliance gates. -
The criterion is the
N passedline, not the exit code. A suite with no matching test printstest result: ok. 0 passedand exits zero. Some tests sit behind#[cfg(feature = "test-support")], so a run without--features test-supportproduces an empty green binary. -
A wedged ingest queue looks like ordinary load. A poisoned job (a terminal
ops_async_operationbehind a claimableingest_job) holdsleasedrows, and those count againstingestion_max_parallel_jobs_per_library. The tell is the samejob_idin "claimed ingest job" dozens of times in a row and no other. Check with:select j.queue_state, o.status, count(*) from ingest_job j left join ops_async_operation o on o.id = j.async_operation_id where j.queue_state in ('queued', 'leased') group by 1, 2;The poisoned ones are those whose
o.statusis terminal. -
CI checks merge requests and protected default-branch pushes. Migration checks and ops self-tests run in both. Protected default pushes build backend, frontend, Confluence, YouTrack and BookStack images; backend and BookStack have separate image security gates. Other local checks use the Make targets.
-
Release publication is opt-in. Set the pipeline input
release=trueand run the manualreleasejob on a protected default-branch push. It requires the version, four deployed image producers, migration/ops checks and both image security gates.release-bumpselects patch (default), minor or major.release:promoteverifies reservation and source identity, promotes the four deployed image digests and publishes the GitLab release;deploy:gitopsfollows. BookStack is built separately from that four-image promotion set. Schema-rollout fences guard release, promotion and GitOps deployment. -
A snapshot import answers
202. The terminal status lives inGET /v1/ops/operations/{id};curl --failis green on an operation that failed afterwards.
License
Related Skills
claude-mem
103.3kPersistent Context Across Sessions for Every Agent โ Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
102.9kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu โ one CLI, zero API fees.
Understand-Anything
88.3kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
77.9kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit โ see the Safety scan above for what the skill file itself contains.
