Metadata-Version: 2.4
Name: agentcontrolroom
Version: 0.5.0
Summary: The Reliability Layer for Autonomous AI Agents — full tracing, cost intelligence, guardrails, and quality evaluation.
Author-email: Darshan <darshan@agentcontrolroom.io>
License: MIT
Project-URL: Homepage, https://agentcontrolroom.io
Project-URL: Repository, https://github.com/Darshan-1812/Helm-AI
Project-URL: Documentation, https://github.com/Darshan-1812/Helm-AI#readme
Project-URL: Bug Tracker, https://github.com/Darshan-1812/Helm-AI/issues
Keywords: ai,agents,llm,observability,tracing,langchain,langgraph,crewai,autogen,llamaindex,openai,anthropic,groq,gemini,mistral,ollama,monitoring,guardrails,opentelemetry,pydantic-ai
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.27.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: opentelemetry-api>=1.25.0
Requires-Dist: opentelemetry-sdk>=1.25.0
Provides-Extra: langchain
Requires-Dist: langchain-core>=0.2.0; extra == "langchain"
Provides-Extra: crewai
Requires-Dist: crewai>=0.30.0; extra == "crewai"
Provides-Extra: llamaindex
Requires-Dist: llama-index-core>=0.10.0; extra == "llamaindex"
Provides-Extra: autogen
Requires-Dist: pyautogen>=0.2.0; extra == "autogen"
Provides-Extra: langgraph
Requires-Dist: langgraph>=0.1.0; extra == "langgraph"
Provides-Extra: groq
Requires-Dist: groq>=0.4.0; extra == "groq"
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.25.0; extra == "anthropic"
Provides-Extra: gemini
Requires-Dist: google-generativeai>=0.8.0; extra == "gemini"
Provides-Extra: mistral
Requires-Dist: mistralai>=1.0.0; extra == "mistral"
Provides-Extra: ollama
Requires-Dist: ollama>=0.2.0; extra == "ollama"
Provides-Extra: google-adk
Requires-Dist: google-adk>=1.0.0; extra == "google-adk"
Provides-Extra: pydantic-ai
Requires-Dist: pydantic-ai>=0.0.14; extra == "pydantic-ai"
Provides-Extra: mcp
Requires-Dist: mcp>=1.2.0; extra == "mcp"
Provides-Extra: all
Requires-Dist: langchain-core>=0.2.0; extra == "all"
Requires-Dist: crewai>=0.30.0; extra == "all"
Requires-Dist: llama-index-core>=0.10.0; extra == "all"
Requires-Dist: pyautogen>=0.2.0; extra == "all"
Requires-Dist: langgraph>=0.1.0; extra == "all"
Requires-Dist: groq>=0.4.0; extra == "all"
Requires-Dist: anthropic>=0.25.0; extra == "all"
Requires-Dist: google-generativeai>=0.8.0; extra == "all"
Requires-Dist: mistralai>=1.0.0; extra == "all"
Requires-Dist: ollama>=0.2.0; extra == "all"
Requires-Dist: mcp>=1.2.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
Requires-Dist: ruff>=0.5.0; extra == "dev"
Requires-Dist: build>=1.0.0; extra == "dev"
Requires-Dist: twine>=5.0.0; extra == "dev"
Requires-Dist: mcp>=1.2.0; extra == "dev"

<div align="center">

<img src="https://capsule-render.vercel.app/api?type=waving&color=0:0ea5e9,100:6366f1&height=200&section=header&text=Agent%20Control%20Room&fontSize=48&fontColor=ffffff&animation=fadeIn&fontAlignY=38&desc=The%20Reliability%20Layer%20for%20Autonomous%20AI%20Agents&descAlignY=58&descSize=18" width="100%"/>

<br>

<a href="https://pypi.org/project/agentcontrolroom/"><img src="https://readme-typing-svg.demolab.com?font=Fira+Code&weight=500&size=22&duration=3000&pause=1000&color=0EA5E9&center=true&vCenter=true&width=600&lines=Full+Tracing+%2B+Cost+Control+%2B+Guardrails;Zero+code+changes.+Just+acr-run+python+app.py;OpenAI+%7C+Groq+%7C+Anthropic+%7C+Gemini;LangChain+%7C+CrewAI+%7C+Pydantic+AI+%7C+Ollama;13+frameworks.+One+dashboard.+v0.4.0+now+live." alt="Typing SVG" /></a>

<br><br>

<a href="https://pypi.org/project/agentcontrolroom/"><img src="https://img.shields.io/pypi/v/agentcontrolroom?color=0ea5e9&label=PyPI&logo=pypi&logoColor=white&style=for-the-badge" alt="PyPI"></a>
<a href="https://pypi.org/project/agentcontrolroom/"><img src="https://img.shields.io/pypi/dm/agentcontrolroom?color=6366f1&label=Downloads&logo=pypi&logoColor=white&style=for-the-badge" alt="Downloads"></a>
<a href="https://github.com/Darshan-1812/Helm-AI/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-22c55e?style=for-the-badge&logo=opensourceinitiative&logoColor=white" alt="License"></a>
<a href="https://github.com/Darshan-1812/Helm-AI/actions"><img src="https://img.shields.io/github/actions/workflow/status/Darshan-1812/Helm-AI/test.yml?style=for-the-badge&logo=githubactions&logoColor=white&label=CI" alt="CI"></a>

<br>

<a href="https://github.com/Darshan-1812/Helm-AI/stargazers"><img src="https://img.shields.io/github/stars/Darshan-1812/Helm-AI?style=for-the-badge&color=f59e0b&logo=github" alt="Stars"></a>
<a href="https://github.com/Darshan-1812/Helm-AI/network/members"><img src="https://img.shields.io/github/forks/Darshan-1812/Helm-AI?style=for-the-badge&color=ec4899&logo=github" alt="Forks"></a>
<a href="https://github.com/Darshan-1812/Helm-AI/issues"><img src="https://img.shields.io/github/issues/Darshan-1812/Helm-AI?style=for-the-badge&color=ef4444&logo=github" alt="Issues"></a>

<br><br>

<a href="https://acr-frontend-ww78.onrender.com"><b>🚀 Live Dashboard</b></a> ·
<a href="docs/quickstart.md">⚡ Quick Start</a> ·
<a href="docs/sdk-reference.md">📖 SDK Reference</a> ·
<a href="https://pypi.org/project/agentcontrolroom/">📦 PyPI</a> ·
<a href="docs/deployment.md">🛠️ Deployment Guide</a>

</div>

<br>

<img src="https://capsule-render.vercel.app/api?type=rect&color=0:0ea5e9,100:6366f1&height=3&width=100%" width="100%"/>

## 🧭 Why Agent Control Room

Autonomous agents fail in ways traditional APM tools were never designed to catch — runaway loops, silent cost overruns, degraded reasoning quality, and multi-step tool chains that are impossible to debug from logs alone.

**Agent Control Room (ACR)** is an open-source reliability layer purpose-built for agents. Drop it into an existing stack in seconds and immediately get full-fidelity tracing, live cost tracking, and safety guardrails — **no code changes required**.

```bash
# Before ACR — flying blind, must add callbacks everywhere manually
llm = ChatMistralAI(model="mistral-small-2506", callbacks=[acr_cb])
chain.with_config(callbacks=[acr_cb])   # ← tedious, error-prone

# After ACR v0.3.0 — TRUE zero-effort, zero code changes
acr-run python agents.py
# ↑ That's it. Every LLM call, tool, loop, cost → ACR dashboard instantly.
```

Every LLM call, tool invocation, and agent decision is captured, costed, and monitored in real time. When an agent starts looping, blows through budget, or degrades in quality, ACR flags it before it becomes a production incident.

<br>

## ✨ Features

<table>
<tr>
<td width="50%">

### 🔍 Real-Time Tracing
Every LLM call, tool use, chain, retrieval, and agent step captured as OpenTelemetry-aligned spans — visible in the Trace Inspector with exact latency and payloads.

### 💰 Cost Intelligence
Token usage and spend broken down per run, per agent, and per model. Supports OpenAI, Anthropic, Google, Mistral, Meta Llama, and more.

### 🛡️ Guardrails & Safety
Cost limits, latency budgets, loop detection, quality gates, and PII redaction — enforced client-side and server-side.

### 🔐 Enterprise & Security
SAML/OIDC SSO, immutable audit logging, field-level encryption, SOC 2 readiness, and PII redaction out of the box.

</td>
<td width="50%">

### 📊 Live Dashboard
A real-time control room for runs, spans, costs, guardrails, evaluations, and audit logs — all in one place.

### 🤖 Universal Auto-Instrumentation
**`acr-run`** CLI auto-detects and patches every installed AI framework at startup — no callbacks, no decorators, no code changes.

### 🧪 LLM-as-a-Judge Evaluations
Auto-score agent outputs for hallucination, faithfulness, correctness, and relevance using Groq (free, fast).

### 🌐 Multi-Agent Support
Hierarchical run trees link orchestrator runs to sub-agent runs via `parent_run_id`, visible in the dashboard.

</td>
</tr>
</table>

<br>

## 🔌 Supported Frameworks (v0.4.0) — 13 Frameworks

| Framework | Integration | How |
|---|---|---|
| **LangChain** | `ACRCallbackHandler` | Attach to any LLM or chain |
| **LangGraph** | `instrument_langgraph()` | One call, patches all graphs |
| **CrewAI** | `instrument_crewai()` | Patches `Crew.kickoff`, `Agent.execute_task`, `BaseTool.run` |
| **AutoGen / AG2** | `instrument_autogen()` | Patches `initiate_chat`, reply hooks, function execution |
| **LlamaIndex** | `instrument_llamaindex()` | Patches LLM, Retriever, QueryEngine, Embeddings |
| **OpenAI** | `wrap_openai()` | Wraps `openai.OpenAI()` / `AsyncOpenAI()` — sync + async + streaming |
| **Groq** ⭐ | `wrap_groq()` / `instrument_groq()` | Llama3, Mixtral, Gemma via Groq cloud |
| **Anthropic** ⭐ | `wrap_anthropic()` / `instrument_anthropic()` | Claude 3.5 / Opus 4.x — tool use spans included |
| **Google Gemini** ⭐ | `wrap_gemini()` / `instrument_gemini()` | `google-generativeai` and new `google-genai` SDK (2025) |
| **Mistral AI** ⭐ | `wrap_mistral()` / `instrument_mistral()` | Native Mistral API — large, small, codestral |
| **Ollama** ⭐ | `wrap_ollama()` / `instrument_ollama()` | Local inference — tokens tracked, cost always $0.00 |
| **Google ADK** ⭐ | `instrument_google_adk()` | Monkey-patch + OTel exporter for Google Agent Dev Kit |
| **Pydantic AI** ⭐ | `instrument_pydantic_ai()` | Wraps `Agent.run` / `Agent.run_sync` with full token attribution |
| **Any Python** | `@trace.agent` / `@trace.tool` | Decorator-based, framework-agnostic |
| **Any language** | REST API | `POST /api/v1/ingest/traces` — works from JS, Go, Java, etc. |

> ⭐ New in **v0.4.0**

Install all integrations at once:
```bash
pip install "agentcontrolroom[all]"
```

Or install only what you need:
```bash
pip install "agentcontrolroom[groq]"
pip install "agentcontrolroom[anthropic]"
pip install "agentcontrolroom[gemini]"
pip install "agentcontrolroom[mistral]"
```



<br>

## 🏗️ Architecture

```mermaid
flowchart TB
    A["🤖 Your AI Agents\nLangChain · CrewAI · AutoGen · LlamaIndex · Custom"] -->|"acr-run python app.py\n(zero code changes)"| B

    subgraph B["🎛️ Agent Control Room"]
        direction TB
        C["📥 Ingest API\n/api/v1/ingest/traces"]
        D["🧪 Groq LLM Judge\nAuto-evaluation"]
        E[("🗄️ PostgreSQL + Redis")]
        F["📊 React Dashboard\nRuns · Spans · Costs · Guardrails"]
        G["🔐 Enterprise Layer\nSSO · Audit Logs · PII Redaction"]

        C --> E
        D --> E
        E --> F
        G --> E
    end

    B --> H["🚨 Guardrail Alerts\nCost · Latency · Loops · Quality"]

    style A fill:#0ea5e9,color:#fff,stroke:#0369a1,stroke-width:2px
    style B fill:#f8fafc,stroke:#6366f1,stroke-width:2px
    style E fill:#6366f1,color:#fff,stroke:#4338ca,stroke-width:2px
    style F fill:#22c55e,color:#fff,stroke:#15803d,stroke-width:2px
    style H fill:#ef4444,color:#fff,stroke:#b91c1c,stroke-width:2px
```

**Stack:** FastAPI · SQLAlchemy · PostgreSQL · Redis · Dramatiq · React · Vite · OpenTelemetry

<br>

## ⚡ Quick Start

Get from zero to a fully traced agent in under 60 seconds.

### Option 1 — `acr-run` (TRUE zero-effort, no code changes)

```bash
# 1. Install
pip install agentcontrolroom

# 2. Set ONE environment variable — that's all
export ACR_API_KEY=your-api-key-here
# (endpoint defaults to ACR cloud automatically)

# 3. Run your EXISTING, UNMODIFIED project
acr-run python agents.py
```

**What you'll see:**
```
──────────────────────────────────────────────────────
  ACR Auto-Instrumentation Runner  v0.3.0
──────────────────────────────────────────────────────
  Scanning for AI frameworks...

  ✅ LangChain  — global callback injected (zero-effort)
  ✅ LangGraph  — monkey-patched (zero-effort)
  ✅ CrewAI     — monkey-patched (zero-effort)
  ✅ AutoGen    — monkey-patched (zero-effort)
  ✅ LlamaIndex — monkey-patched (zero-effort)
  ✅ OpenAI     — client auto-wrapped (zero-effort)

  6 frameworks instrumented. All traces → ACR dashboard.
──────────────────────────────────────────────────────
```

### Option 2 — Manual (per-framework, one line)

```python
# LangChain / LangGraph
from agentcontrolroom.instruments.langchain import ACRCallbackHandler
llm = ChatMistralAI(model="mistral-small-2506", callbacks=[ACRCallbackHandler()])

# CrewAI
from agentcontrolroom import instrument_crewai
instrument_crewai()   # call before Crew/Agent creation

# AutoGen
from agentcontrolroom import instrument_autogen
instrument_autogen()  # call before creating agents

# LlamaIndex
from agentcontrolroom import instrument_llamaindex
instrument_llamaindex()  # call before using any index/query engine

# OpenAI direct
from agentcontrolroom import wrap_openai
import openai
client = wrap_openai(openai.OpenAI())
```

### Option 3 — Decorator-based (any Python framework)

```python
from agentcontrolroom import trace, configure

configure(api_key="acr-dev-xxxx")

@trace.agent(name="research-agent")
def research(query: str):
    result = my_llm.invoke(query)
    return result

@trace.tool(name="web-search")
def search(query: str):
    return requests.get(f"https://api.search.com?q={query}").json()
```

### Verify Setup

```bash
acr-check
```

```
==========================================================
  Agent Control Room — System Health Check
==========================================================
  ✅ Backend reachable   (version: 0.3.0)
  ✅ API key valid
  ✅ Test trace ingested (1 span stored)
  ✅ Dashboard reachable
  🎉 All checks passed! (4/4)
==========================================================
```

<br>

## 🔌 Model Context Protocol (MCP) Server

Connect your AI coding assistants (**Cursor**, **Windsurf**, **Claude Desktop**, **Antigravity**, **VS Code**) directly to Agent Control Room.
Ask your IDE's assistant to debug failed runs, audit token spend, and inspect traces in chat without leaving your code editor!

### 1. Cursor Setup (`Settings -> MCP -> Add New MCP Server`)
- **Name:** `acr`
- **Type:** `command`
- **Command:** `uvx agentcontrolroom mcp`
- **Environment Variables:**
  - `ACR_API_KEY`: `acr-dev-xxxx`
  - `ACR_ENDPOINT`: `https://acr-backend-xlj5.onrender.com`

### 2. Claude Desktop (`claude_desktop_config.json`)
```json
{
  "mcpServers": {
    "acr": {
      "command": "uvx",
      "args": ["agentcontrolroom", "mcp"],
      "env": {
        "ACR_API_KEY": "acr-dev-xxxx",
        "ACR_ENDPOINT": "https://acr-backend-xlj5.onrender.com"
      }
    }
  }
}
```

### 3. Available MCP Tools:
- **`acr_list_runs`**: List recent agent runs with latency, cost, and status.
- **`acr_get_run_trace`**: Fetch full execution tree, child spans, prompts, and completions.
- **`acr_diagnose_failure`**: Pinpoint the exact failing span, triggering input, and stack trace so the AI can fix your code.
- **`acr_get_cost_summary`**: Analyze token spend across LLM models and detect anomalies.
- **`acr_list_guardrails`**: View active budget, latency, and loop detection rules.
- **`acr_create_guardrail`**: Create or adjust safety rules via natural language.


<br>

## Deployment Options

<table>
<tr>
<th>Option</th>
<th>Best for</th>
<th>Setup</th>
</tr>
<tr>
<td><b>Cloud SaaS</b></td>
<td>Fastest way to get started, no infra to manage</td>
<td>

```bash
pip install agentcontrolroom
export ACR_API_KEY=<your-key>
# ACR_ENDPOINT defaults to cloud automatically — nothing else needed
```

</td>
</tr>
<tr>
<td><b>🖱️ One-click Render</b></td>
<td>Free tier, fully managed, self-hosted</td>
<td>

[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/Darshan-1812/Helm-AI)

Deploys PostgreSQL, Redis, the FastAPI backend, and the React dashboard automatically.

</td>
</tr>
<tr>
<td><b>💻 Local dev</b></td>
<td>Development & debugging</td>
<td>

```bash
git clone https://github.com/Darshan-1812/Helm-AI
cd Helm-AI
cp .env.example .env  # fill in your values
docker compose up -d
```

Then open `http://localhost:3000`.

</td>
</tr>
</table>

Full guide including Railway, VPS, and enterprise VPC setups: [docs/deployment.md](docs/deployment.md)

<br>

## 📚 Examples

| Example | Description |
|---|---|
| [MSME Hallucination Demo](demo/msme_demo_generator.py) | **(Recommended)** Visual demo triggering LLM-as-a-Judge and Cost Guardrails |
| [LangChain Quickstart](examples/langchain_quickstart.py) | Zero-config LangChain monitoring |
| [CrewAI Integration](examples/crewai_example.py) | Multi-agent crew with full trace hierarchy |
| [AutoGen Integration](examples/autogen_example.py) | Conversational agent tracing |
| [LlamaIndex RAG](examples/llamaindex_example.py) | RAG pipeline with retrieval + reranking spans |
| [Manual Tracing](examples/manual_trace.py) | Instrument any framework by hand |
| [Cost Guardrails](examples/cost_guardrail.py) | Set budget limits with alerts |
| [Health Check](examples/health_check.py) | Verify your ACR setup |

<br>

## 🗂️ Repository Structure

```
Helm-AI/
├── backend/                    FastAPI + PostgreSQL + Redis
│   ├── app/
│   │   ├── api/                REST endpoints (runs, ingest, guardrails, auth, ...)
│   │   ├── models/             SQLAlchemy ORM models
│   │   ├── services/           Business logic (tracing, eval, cost, PII, ...)
│   │   └── workers/            Dramatiq background workers
│   ├── alembic/                Database migrations
│   └── Dockerfile.prod
├── sdk/                        agentcontrolroom Python package (PyPI)
│   └── src/agentcontrolroom/
│       ├── instruments/
│       │   ├── langchain.py    LangChain + LangGraph handler
│       │   ├── crewai.py       CrewAI monkey-patcher
│       │   ├── autogen.py      AutoGen / AG2 monkey-patcher
│       │   ├── llamaindex.py   LlamaIndex monkey-patcher  ← NEW v0.3.0
│       │   └── openai.py       OpenAI client wrapper
│       ├── tracer.py           @trace.agent / @trace.tool decorators
│       ├── guardrails.py       Client-side guardrail engine
│       ├── cost.py             Token cost calculator (OpenAI/Anthropic/Mistral/...)
│       └── _cli.py             acr-check + acr-run CLI  ← NEW v0.3.0
├── frontend/                   React + Vite dashboard
│   └── src/components/
│       └── DashboardView.tsx   Main dashboard (Traces, Cost, Guardrails, Agents, ...)
├── sdk-node/                   @agentcontrolroom/node TypeScript SDK
├── docs/                       Documentation
├── examples/                   Working code examples
├── render.yaml                 One-click Render deploy
└── docker-compose.yml          Local development
```

<br>

## 🕒 Changelog

<table>
<tr><td>🟢 <b>v0.4.0</b></td><td>

- **7 new framework instruments** — Groq, Anthropic, Google Gemini, Mistral AI, Ollama, Google ADK, Pydantic AI
- **13 total supported frameworks** — most universal AI agent observability SDK in the Python ecosystem
- **Prompt Playground** — built-in UI to prototype prompts directly from the dashboard with real inference and automatic trace capture
- **Comprehensive pricing tables** — updated cost calculator with Claude 4.x, Gemini 2.5, Groq-hosted models
- **`pip install agentcontrolroom[groq/anthropic/gemini/mistral/ollama]`** — granular provider installs
- **5 new unit test files** — test coverage for all new framework wrappers

</td></tr>
<tr><td>🔵 <b>v0.3.0</b></td><td>

- **`acr-run` CLI** — TRUE zero-effort auto-instrumentation. Run any project with no code changes: `acr-run python agents.py`
- **Full LlamaIndex support** — `instrument_llamaindex()` patches LLM, Retriever, QueryEngine, Embeddings and Reranker
- **`pip install agentcontrolroom[all]`** — installs all framework integrations at once
- **Dynamic model extraction** — dashboard correctly shows Mistral, Claude, Llama, etc. from live telemetry instead of hardcoded values
- **Live Trace Inspector** — clicking a run fetches and renders all child spans with prompts and tool outputs

</td></tr>
<tr><td>🔵 <b>v0.2.3</b></td><td>

- **CrewAI auto-instrumentation** — `instrument_crewai()` with full crew/agent/tool hierarchy
- **AutoGen / AG2 support** — `instrument_autogen()` for both v0.2 and v0.4
- **LangGraph support** — `instrument_langgraph()` for graph-based agents
- **OpenAI direct wrapper** — `wrap_openai()` for the raw OpenAI Python SDK

</td></tr>
<tr><td>🔵 <b>v0.2.0</b></td><td>

- LangChain `ACRCallbackHandler` with zero-config integration
- Groq LLM-as-a-Judge auto-evaluation (hallucination, faithfulness, correctness, relevance)
- `acr-check` CLI health checker
- SOC 2 Phase 4: data retention policies, encryption at rest

</td></tr>
<tr><td>⚫ <b>v0.1.0</b></td><td>Core SDK: trace ingestion, cost tracking, run management, guardrails engine</td></tr>
</table>

<br>

## 📖 Documentation

- [Quick Start Guide](docs/quickstart.md) — up and running in 60 seconds
- [SDK Reference](docs/sdk-reference.md) — full API documentation
- [LangChain Integration](docs/langchain.md) — deep dive into LangChain support
- [Guardrails Setup](docs/guardrails.md) — cost limits, loop detection, quality gates
- [Enterprise & Security](docs/enterprise.md) — SSO, audit logs, PII redaction, SOC 2
- [Deployment Guide](docs/deployment.md) — all deployment options
- [FAQ](docs/faq.md) — common questions answered

<br>

## 📄 Citation

If you use Agent Control Room in research or production, please cite:

```bibtex
@software{agentcontrolroom2026,
  author  = {Darshan Girase},
  title   = {Agent Control Room: Reliability Layer for Autonomous AI Agents},
  year    = {2026},
  url     = {https://github.com/Darshan-1812/Helm-AI},
  version = {0.3.0}
}
```

<br>

## 📜 License

MIT License — see [LICENSE](LICENSE) for details.

<br>

<img src="https://capsule-render.vercel.app/api?type=waving&color=0:6366f1,100:0ea5e9&height=120&section=footer" width="100%"/>

<div align="center">
Built with ❤️ by <a href="https://github.com/Darshan-1812">Darshan Girase</a>
</div>
