trackmcp
Back to directory
krzysztofgawrys

rag-for-terraform

View on GitHub

RAG (Retrieval-Augmented Generation) backend for organisational Terraform module knowledge.

5 stars PythonOthers Updated Jul 30, 2026
bedrockclaudefastapiiacinfrastructure-as-codeknowledge-basellmmcppgvectorragterraform

Documentation

⬡

Terraform RAG

AI-powered knowledge base for your Terraform modules.

Index, search, compose, and audit - all from one place.

-

-

-


Try the live demo

Web UI - browse 2700+ modules across 175+ repos (AWS / Azure / GCP):

> https://terraform-rag.io

>

> Login: `demo@terraform-rag.io` / `demo` (read-only)

MCP - connect your IDE to the knowledge base:

json
{
  "mcpServers": {
    "terraform-rag": {
      "type": "http",
      "url": "https://terraform-rag.io/mcp",
      "headers": {
        "Authorization": "Bearer trag_6c495d7a027369cb5d324d877626c272"
      }
    }
  }
}

9 tools available: `query_modules`, `pick_modules`, `list_modules`,

`get_module_details`, `get_dependencies`, `get_module_usage`,

`find_similar_usages`, `fetch_example_code`, `get_stats` (`list_modules`

also takes `semantic_query` for natural-language search).


What it does

Point it at your Terraform module repositories. It clones them, parses every

HCL file, generates embeddings, and builds a searchable knowledge base in

PostgreSQL + pgvector. Then it learns _how_ those modules are actually used

across your consumer repos - naming patterns, variable conventions, tagging

strategies, deployment layouts - and distils that into authoritative guidance.

An agentic pipeline (Claude, Bedrock, or any OpenAI-compatible model) explores

the knowledge base across multiple tool-use turns to assemble grounded,

reviewable answers - assistive retrieval with a human in the loop, not an

autonomous code generator. Query from the web UI, the REST API, or directly

from your IDE via MCP.

See it in action

Module Browser - 2700+ modules across 175+ repos

Agentic Compose - tool calls and reasoning in real time

Generated HCL - syntax-highlighted output

Knowledge Browser - conventions and usage patterns

Index Jobs - repository indexing dashboard

Audit Logs - full trail of LLM, MCP, and API calls

Features

Agentic Query Pipeline - more than a single RAG lookup. The LLM browses

modules, checks details, reads conventions, and fetches example code across

multiple tool-use turns before composing an answer for you to review. Four

query modes: compose, search, optimize, and audit.

Knowledge Layer - indexes consumer repos to learn real-world usage patterns.

Distils conventions across six dimensions (naming, variables, tagging, layout,

versions, deployment) and treats them as authoritative guidance in all prompts.

MCP Server - Streamable HTTP endpoint works with Claude Code, Cursor,

Windsurf, and any MCP-compatible client. Query your module knowledge base

directly from your IDE.

Dependency Graph - PostgreSQL recursive CTEs map the full dependency tree

between modules. Find what depends on what, trace impact, and visualize

relationships with a D3 force-directed graph.

Version Tracking - automatic git tag discovery with per-module version

history. Code-hash caching avoids redundant LLM/embedding calls on re-index.

Flexible LLM Backend - Anthropic (direct or Bedrock), OpenRouter, Ollama,

or any OpenAI-compatible endpoint. Swap models without changing code.

CI/CD Integration - GitHub Actions workflow and webhook endpoints for

automatic re-indexing when `.tf` files change.

Authentication - disabled (default), local email/password with JWT, or

ALB-terminated SSO via AWS Identity Center / OIDC.

Quick Start

bash
# 1. Clone and configure
git clone https://github.com/krzysztofgawrys/rag-for-terraform.git
cd rag-for-terraform
cp .env.example .env
# Edit .env - set POSTGRES_PASSWORD, JWT_SECRET, and your LLM API key

# 2. Start everything
docker compose up -d

# 3. Index your first repo
curl -X POST http://localhost:8000/index/ \
  -H "Content-Type: application/json" \
  -d '{"repo_url": "git@github.com:org/tf-modules.git", "branch": "main"}'
ServiceURL
Frontendhttp://localhost:3000
API docshttp://localhost:8000/docs
MCP endpointhttp://localhost:8000/mcp/

For private repos, place your SSH deploy key at `./worker_deploy_key`

(or set `SSH_KEY_PATH` in `.env`).

MCP Server

Connect any MCP-compatible client to `http://localhost:8000/mcp/`.

Claude Code (`.mcp.json`):

json
{
  "mcpServers": {
    "terraform-rag": {
      "type": "http",
      "url": "http://localhost:8000/mcp/"
    }
  }
}

Available tools: `query_modules`, `pick_modules`, `list_modules`,

`get_module_details`, `get_dependencies`, `get_module_usage`,

`find_similar_usages`, `fetch_example_code`, `get_stats`.

LLM Configuration

Mode`LLM_BASE_URL``LLM_MODEL` example
Anthropic (direct)_(empty)_`claude-sonnet-4-6`
AWS Bedrock_(set `AWS_BEDROCK_REGION`)_`us.anthropic.claude-sonnet-4-6-20250514-v1:0`
OpenRouter`https://openrouter.ai/api/v1``anthropic/claude-sonnet-4-6`
Ollama (local)`http://ollama:11434/v1``qwen2.5-coder:32b`

A separate cheap model can be used for module descriptions during indexing

(`DESCRIPTION_LLM_*` variables).

Architecture

code
Browser         AI Agent / IDE
     |               |
+---------+      +--------+      +----------------+
| Frontend|----->|  API   |----->| PostgreSQL 16  |
| (Vite)  |      | FastAPI|      | + pgvector     |
+---------+      +---+----+      +----------------+
                     |
                +----+----+
                | Worker  |      +-------+
                | (Celery)|----->| Redis |
                +---------+      +-------+

For the full technical deep-dive - stack details, directory structure, API

endpoints, agent internals, knowledge layer pipeline, known limitations, and

deployment notes - see **docs/ARCHITECTURE.md**.

License

Business Source License 1.1 - see LICENSE for details.

  • Non-production use (evaluation, testing, development) is permitted
  • Production use requires a commercial license from the author
  • On 2029-05-25 the license converts to AGPL-3.0

Frequently asked questions

What is rag-for-terraform?

rag-for-terraform is RAG (Retrieval-Augmented Generation) backend for organisational Terraform module knowledge.

How do I install rag-for-terraform?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is rag-for-terraform open source?

Yes — it is hosted on GitHub at https://github.com/krzysztofgawrys/rag-for-terraform and has 5 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP