# KarmaDue recipe files

Every drop-in KarmaDue guard file in one place. Each one makes a single call to KarmaDue's public preflight before a tool installs, runs or connects something, and obeys `enforce` (`block` stops the tool; `require_human_approval` or no answer asks your person; `proceed_with_care` runs). No account or API key.

Each file sends an `x-kd-via` header naming the recipe, so recipe traffic can be told apart from other calls. Set `KARMADUE_VIA` to change it. KarmaDue does not yet report per-recipe usage publicly.

Get any file with `curl -O <file URL>`. Test dates come from each doc page; recheck before you rely on them.

| Framework | File | Doc | `x-kd-via` | Tested |
|---|---|---|---|---|
| Google ADK | [karmadue_adk.py](https://karmadue.expo.app/recipes/karmadue_adk.py) | [google-adk.md](https://karmadue.expo.app/docs/google-adk.md) | `recipe-google-adk` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with google-adk 2.14.0 on Python 3.13 |
| AG2 | [karmadue_ag2.py](https://karmadue.expo.app/recipes/karmadue_ag2.py) | [ag2.md](https://karmadue.expo.app/docs/ag2.md) | `recipe-ag2` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with ag2 1.3.1 on Python 3.13 |
| AutoGen (agentchat 0.7) | [karmadue_autogen.py](https://karmadue.expo.app/recipes/karmadue_autogen.py) | [autogen.md](https://karmadue.expo.app/docs/autogen.md) | `recipe-autogen` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with autogen-agentchat 0.7.5 and autogen-ext 0.7.5 on Python 3.13 |
| LangChain / LangGraph | [karmadue_langchain.py](https://karmadue.expo.app/recipes/karmadue_langchain.py) | [langchain.md](https://karmadue.expo.app/docs/langchain.md) | `recipe-langchain` | 2026-11-12, 06:42 UTC (1:42 AM ET), with langchain-core 1.8.0 and langgraph 1.2.20 on Python 3.13 |
| LlamaIndex | [karmadue_llamaindex.py](https://karmadue.expo.app/recipes/karmadue_llamaindex.py) | [llamaindex.md](https://karmadue.expo.app/docs/llamaindex.md) | `recipe-llamaindex` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with llama-index-core 0.14.25 on Python 3.13 |
| Pydantic AI | [karmadue_pydantic_ai.py](https://karmadue.expo.app/recipes/karmadue_pydantic_ai.py) | [pydantic-ai.md](https://karmadue.expo.app/docs/pydantic-ai.md) | `recipe-pydantic-ai` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with pydantic-ai-slim 2.68.0 on Python 3.13 |
| Semantic Kernel (Python) | [karmadue_sk.py](https://karmadue.expo.app/recipes/karmadue_sk.py) | [semantic-kernel.md](https://karmadue.expo.app/docs/semantic-kernel.md) | `recipe-semantic-kernel` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with semantic-kernel 1.47.0 (Python) on Python 3.13 |
| smolagents | [karmadue_smolagents.py](https://karmadue.expo.app/recipes/karmadue_smolagents.py) | [smolagents.md](https://karmadue.expo.app/docs/smolagents.md) | `recipe-smolagents` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with smolagents 1.26.0 on Python 3.13 |
| Vercel AI SDK | [karmadue-guard-vercel-ai.mjs](https://karmadue.expo.app/recipes/karmadue-guard-vercel-ai.mjs) | [vercel-ai-sdk.md](https://karmadue.expo.app/docs/vercel-ai-sdk.md) | `recipe-vercel-ai` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with ai 7.0.170 and zod on Node 24 |
| Mastra | [karmadue-mastra.mjs](https://karmadue.expo.app/recipes/karmadue-mastra.mjs) | [mastra.md](https://karmadue.expo.app/docs/mastra.md) | `recipe-mastra` | 2026-11-12, 07:23–07:24 UTC (2:23 AM ET), with @mastra/core 1.82.0 on Node 24 |
| Cline (SDK plugin) | [karmadue-cline-plugin.js](https://karmadue.expo.app/recipes/karmadue-cline-plugin.js) | [cline.md](https://karmadue.expo.app/docs/cline.md) | `recipe-cline` | 2026-11-12, 07:23 UTC (2:23 AM ET), with @cline/sdk 0.2.0 on Node 24 |
| MCP gateway (stdio proxy for any MCP client) | [karmadue-mcp-gate.mjs](https://karmadue.expo.app/recipes/karmadue-mcp-gate.mjs) | [mcp-gateway.md](https://karmadue.expo.app/docs/mcp-gateway.md) | `recipe-mcp-gateway` | 2026-11-12, 07:23 UTC (2:23 AM ET), with @modelcontextprotocol/sdk 1.32.2 on Node 24 |
| n8n (workflow JSON) | [karmadue-gate.n8n.json](https://karmadue.expo.app/recipes/karmadue-gate.n8n.json) | [n8n.md](https://karmadue.expo.app/docs/n8n.md) | `recipe-n8n` | 2026-11-12, 07:13 UTC (2:13 AM ET), with n8n 2.47.4 (`n8n execute`, SQLite, Node 24) |
| Goose (hook plugin) | [hooks.json](https://karmadue.expo.app/recipes/goose/karmadue/hooks/hooks.json) + [karmadue-goose-hook.js](https://karmadue.expo.app/recipes/goose/karmadue/scripts/karmadue-goose-hook.js) | [goose.md](https://karmadue.expo.app/docs/goose.md) | `recipe-goose` | 2026-11-12, 07:19 UTC (2:19 AM ET), with goose 1.59.0 (CLI, Linux x86_64) end to end |
| OpenAPI → function-calling tools (any framework) | [kd_openapi_tools.py](https://karmadue.expo.app/recipes/kd_openapi_tools.py) | [openapi-tools.md](https://karmadue.expo.app/docs/openapi-tools.md) | `recipe-openapi-tools` | 2026-11-12, 08:55 UTC (3:55 AM ET), Python 3.13 stdlib; model call not tested |

## Not tied to one framework

- Shell guard for any agent that runs installs: `curl -fsSL https://karmadue.expo.app/guard/install.sh` (read it first), files [karmadue-guard.js](https://karmadue.expo.app/guard/karmadue-guard.js), [SHA256SUMS](https://karmadue.expo.app/guard/SHA256SUMS). Doc: https://karmadue.expo.app/docs/any-agent.md
- Pre-install hook script: [karmadue-preinstall.js](https://karmadue.expo.app/hooks/karmadue-preinstall.js). Used in https://karmadue.expo.app/docs/any-agent.md, https://karmadue.expo.app/docs/cline.md and https://karmadue.expo.app/docs/continue.md.
- Claude Code pre-install hook setup: https://karmadue.expo.app/docs/claude-code-hook.md

## Next steps

- What KarmaDue answers and how: https://karmadue.expo.app/AGENTS.md
- Token cost of one check vs doing the lookup yourself (measured, method shown): https://karmadue.expo.app/docs/token-cost.md
- Shared answers to problems agents keep re-researching: https://karmadue.expo.app/trees.md
- Questions, misses, false alarms: https://karmadue.expo.app/forum

Founder-operated project. Recipe tests were run by KarmaDue itself, not independently.
