{"data":{"slug":"idun-group-idun-agent-platform","name":"idun-agent-platform","tagline":"🟪 Open-source runtime that ships any LangGraph or Google ADK agent as a production-ready FastAPI service. Bundled , AG-UI copilotkit API, chat UI, 15+ guardrails, MCP, OpenTelemetry, OIDC. One pip in","github_url":"https://github.com/Idun-Group/idun-agent-platform","owner":"Idun-Group","repo":"idun-agent-platform","owner_avatar_url":"https://avatars.githubusercontent.com/u/170414217?v=4","primary_language":"Python","stars":194,"forks":11,"topics":["a2a-protocol","ag-ui-protocol","agent-platform","agentic-ai","agents","claude-code","claude-skills","copilotkit","google-adk","governance","guardrails","langchain","langfuse","langgraph","mcp","observability","open-source","openclaw","opentelemetry","sso"],"archived":false,"github_pushed_at":"2026-07-10T15:30:07+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/idun-group-idun-agent-platform","markdown_url":"https://www.graphcanon.com/tools/idun-group-idun-agent-platform.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/idun-group-idun-agent-platform","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=idun-group-idun-agent-platform","description":"🟪 Open-source runtime that ships any LangGraph or Google ADK agent as a production-ready FastAPI service. Bundled , AG-UI copilotkit API, chat UI, 15+ guardrails, MCP, OpenTelemetry, OIDC. One pip install.   Self-hosted, no vendor lock-in. ","homepage_url":"https://idun-group.com/engine","license":"GPL-3.0","open_issues":103,"watchers":3,"ai_summary":null,"readme_excerpt":"## Quick start\n\n> **Prerequisites**: Python 3.12 or 3.13.\n\nCreate a new directory and install the engine:\n\n```bash\nmkdir my-agent && cd my-agent\npip install idun-agent-engine langgraph langchain-google-genai\n```\n\nSave the three files below inside `my-agent/`.\n\n**`my-agent/agent.py`**\n\n```python\nfrom typing import Annotated, TypedDict\n\nfrom idun_agent_engine.mcp import get_langchain_tools_sync\nfrom langchain_google_genai import ChatGoogleGenerativeAI\nfrom langgraph.graph import StateGraph, START\nfrom langgraph.graph.message import add_messages\nfrom langgraph.prebuilt import ToolNode, tools_condition\n\n\nclass State(TypedDict):\n    messages: Annotated[list, add_messages]\n\n\ntools = get_langchain_tools_sync()\nllm = ChatGoogleGenerativeAI(model=\"gemini-2.0-flash\").bind_tools(tools)\n\n\ndef chatbot(state: State):\n    return {\"messages\": [llm.invoke(state[\"messages\"])]}\n\n\ngraph = StateGraph(State)\ngraph.add_node(\"chatbot\", chatbot)\ngraph.add_node(\"tools\", ToolNode(tools))\ngraph.add_edge(START, \"chatbot\")\ngraph.add_conditional_edges(\"chatbot\", tools_condition)\ngraph.add_edge(\"tools\", \"chatbot\")\n```\n\n**`my-agent/config.yaml`**\n\n```yaml\nserver:\n  api:\n    port: 8000\n\nagent:\n  type: LANGGRAPH\n  config:\n    name: \"my-agent\"\n    graph_definition: \"./agent.py:graph\"\n    checkpointer:\n      type: sqlite\n      db_url: \"sqlite:///conversations.db\"\n\nmcp_servers:\n  - name: idun-docs\n    transport: streamable_http\n    url: https://docs.idun-group.com/mcp\n```\n\n**`my-agent/.env`** — get a Gemini key at [aistudio.google.com/apikey](https://aistudio.google.com/apikey):\n\n```\nGEMINI_API_KEY=your-key-here\n```\n\nFrom inside `my-agent/`, run:\n\n```bash\nidun init\n```\n\n> `graph_definition: \"./agent.py:graph\"` is resolved against the directory where you run `idun init`. Stay inside `my-agent/` when you launch it, or use an absolute path.\n\nA browser opens at [http://localhost:8000](http://localhost:8000) for the chat UI. The agent already has tools from the Idun docs MCP wired in. Visit [/admin](http://localhost:8000/admin) to configure more MCP servers, managed prompts, guardrails, observability, messaging integrations, and SSO. Visit [/admin/traces](http://localhost:8000/admin/traces) for the trace store.\n\n<p align=\"center\">\n  <img src=\"docs/images/readme/welcome-ui.png\" alt=\"Idun Agent chat UI welcome screen\" width=\"100%\"/>\n</p>\n\n<p align=\"center\">\n  <img src=\"docs/images/readme/chat-mcp.png\" alt=\"Chat answering an MCP-backed question with tool-call reasoning\" width=\"100%\"/>\n</p>\n\n> **What `pip install idun-agent-engine` delivers**\n>\n> A single wheel that bundles three Python packages:\n>\n> - **`idun_agent_engine`** — the engine SDK (FastAPI app factory, MCP registry, observability, guardrails).\n> - **`idun_agent_standalone`** — the `idun` CLI, the admin REST API, and the chat / admin / traces UIs.\n> - **`idun_agent_schema`** — the Pydantic config schemas.\n>\n> The `idun` command on your `$PATH` (`setup`, `serve`, `init`, `hash-password`, `agent serve`) is provided by the bundled standalone — it is not a separately published package. You won't see `idun-agent-standalone` in the engine's declared PyPI dependencies because it ships co-installed inside the wheel, not as a transitive dep.\n>\n> See [docs.idun-group.com/architecture](https://docs.idun-group.com/architecture) for the full layering.\n\n---\n\n### Components in this install\n\nAfter `pip install idun-agent-engine`, your `$PATH` and `site-packages` contain:\n\n| Module | Distributed via | Purpose |\n|---|---|---|\n| `idun_agent_engine` | declared in `requires_dist` | FastAPI app factory, MCP registry, observability, guardrails wiring |\n| `idun_agent_schema` | declared in `requires_dist` | Pydantic config models for `config.yaml` |\n| `idun_agent_standalone` | **co-bundled in the engine wheel** | `idun` CLI, admin REST under `/admin/api/v1/`, chat / admin / traces UIs at `/`, `/admin/`, `/admin/traces/` |\n| `idun` (console script) | `[project.scripts] idun = \"idun_agent_standalone.cli:main\"` | Subcommands: `setup`, `ser","github_created_at":"2025-05-28T16:28:55+00:00","created_at":"2026-07-15T10:42:49.741737+00:00","updated_at":"2026-07-15T10:42:52.709084+00:00","categories":[{"slug":"ai-agents","name":"AI Agents","url":"https://www.graphcanon.com/categories/ai-agents","markdown_url":"https://www.graphcanon.com/categories/ai-agents.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/ai-agents"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"},{"slug":"vector-databases","name":"Vector Databases","url":"https://www.graphcanon.com/categories/vector-databases","markdown_url":"https://www.graphcanon.com/categories/vector-databases.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/vector-databases"}],"tags":[{"slug":"a2a-protocol","name":"a2a-protocol"},{"slug":"ag-ui-protocol","name":"ag-ui-protocol"},{"slug":"agent-platform","name":"agent-platform"},{"slug":"agentic-ai","name":"agentic-ai"},{"slug":"agents","name":"agents"},{"slug":"claude-code","name":"claude code"},{"slug":"claude-skills","name":"claude-skills"},{"slug":"copilotkit","name":"copilotkit"}],"trust":{"provenance":{"is_fork":false,"github_id":992112053,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T10:42:50.902Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":5,"days_since_push":4,"last_release_at":"2026-06-08T09:57:53Z"},"security_summary":{"status":"ok","scanner":"mcp_manifest@v1","low_count":0,"high_count":0,"last_scan_at":"2026-07-15T10:42:51.334Z","medium_count":0,"scan_profile":"mcp_manifest","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-15T10:42:50.659Z"},"languages":{"value":["python"],"source":"github.language+pyproject.toml","observed_at":"2026-07-15T10:42:50.659Z"},"license_spdx":{"value":"GPL-3.0","source":"github.license","observed_at":"2026-07-15T10:42:50.659Z"}}}}