{"data":{"slug":"cuga-project-cuga-agent","name":"cuga-agent","tagline":"CUGA is an open-source generalist agent harness for the enterprise, supporting complex task execution on web and APIs, OpenAPI/MCP integrations, composable architecture, reasoning modes, and policy-aw","github_url":"https://github.com/cuga-project/cuga-agent","owner":"cuga-project","repo":"cuga-agent","owner_avatar_url":"https://avatars.githubusercontent.com/u/230847519?v=4","primary_language":"Python","stars":861,"forks":144,"topics":["coding-agent","computer-use","enterprise","generalist-agent","guardrails","harness","knowledge","mcp","policies","sandbox"],"archived":false,"github_pushed_at":"2026-07-15T02:38:37+00:00","maintenance_label":"Very active","url":"https://www.graphcanon.com/tools/cuga-project-cuga-agent","markdown_url":"https://www.graphcanon.com/tools/cuga-project-cuga-agent.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/cuga-project-cuga-agent","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=cuga-project-cuga-agent","description":"CUGA is an open-source generalist agent harness for the enterprise, supporting complex task execution on web and APIs, OpenAPI/MCP integrations, composable architecture, reasoning modes, and policy-aware features.","homepage_url":"https://cuga.dev","license":"Other","open_issues":128,"watchers":5,"ai_summary":null,"readme_excerpt":"### Manage, publish, and self-hosting\n\n**Manage and publish** — Run `cuga start manager` to start the manage-mode stack. You edit agent configuration (tools, MCP servers, LLM selection, policies) as a **draft**, try it in the draft chat, then **publish** to create a new version that production chat uses. Published versions are tracked so you can roll forward and audit what shipped.\n\n**Self-host on Kubernetes** — The repo includes a Helm chart under [`deployment/helm/`](deployment/helm/), helper scripts such as [`deployment/deploy-local.sh`](deployment/deploy-local.sh), and documentation for building images, pushing to a registry, and wiring API keys via Kubernetes secrets for clusters such as kind, minikube, Docker Desktop Kubernetes, GKE, EKS, or AKS. See [deployment/README.md](deployment/README.md).\n\nExplore the [Roadmap](#roadmap) to see what's ahead, or join the [Call for the Community](#call-for-the-community) to get involved.\n\n---\n\n## Quick Start\n\n<details>\n<summary><em style=\"color: #666;\"> Prerequisites (click to expand)</em></summary>\n\n- **Python 3.12+** - [Download here](https://www.python.org/downloads/)\n- **uv package manager** - [Installation guide](https://docs.astral.sh/uv/getting-started/installation/)\n\n</details>\n\n```bash\n\n---\n\n### Quick Start\n\n```python\nfrom cuga import CugaAgent\nfrom langchain_core.tools import tool\nimport asyncio\n\n@tool\ndef add_numbers(a: int, b: int) -> int:\n    '''Add two numbers together'''\n    return a + b\n\n@tool\ndef multiply_numbers(a: int, b: int) -> int:\n    '''Multiply two numbers together'''\n    return a * b\n\n---\n\n### Quick Start\n\n```python\nfrom cuga import CugaAgent, CugaSupervisor\nfrom langchain_core.tools import tool\nimport asyncio\n\n@tool\ndef get_customers(limit: int = 10) -> str:\n    \"\"\"Fetch top customers from CRM with name, email, and revenue. Returns a formatted string.\"\"\"\n    customers = [\n        \"Alice (alice@example.com, $250,000)\",\n        \"Bob (bob@example.com, $180,000)\",\n        \"Carol (carol@example.com, $120,000)\",\n        \"Dave (dave@example.com, $95,000)\",\n        \"Eve (eve@example.com, $88,000)\",\n    ]\n    top = customers[: min(limit, len(customers))]\n    return \"Top customers by revenue: \" + \"; \".join(f\"{i+1}. {c}\" for i, c in enumerate(top))\n\n@tool\ndef send_email(to: str, body: str) -> str:\n    \"\"\"Send an email. Returns confirmation.\"\"\"\n    return f\"Email sent successfully to {to}\"\n\nasync def main():\n    crm_agent = CugaAgent(tools=[get_customers])\n    crm_agent.description = \"CRM and customer data\"\n\n    email_agent = CugaAgent(tools=[send_email])\n    email_agent.description = \"Sending emails and notifications\"\n\n    supervisor = CugaSupervisor(agents={\n        \"crm\": crm_agent,\n        \"email\": email_agent,\n    })\n\n    result = await supervisor.invoke(\"Get our top 5 customers by revenue, then send the top customer a thank-you email\")\n    print(result.answer)\n\nasyncio.run(main())\n```\n\nTo add a remote agent via A2A, pass an external config in `agents`: `\"analytics\": {\"type\": \"external\", \"description\": \"...\", \"config\": {\"a2a_protocol\": {\"endpoint\": \"http://localhost:9999\", \"transport\": \"http\"}}}`.","github_created_at":"2025-09-11T11:58:55+00:00","created_at":"2026-07-15T10:42:20.633154+00:00","updated_at":"2026-07-15T10:42:23.444178+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":"inference-serving","name":"Inference & Serving","url":"https://www.graphcanon.com/categories/inference-serving","markdown_url":"https://www.graphcanon.com/categories/inference-serving.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/inference-serving"},{"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"}],"tags":[{"slug":"coding-agent","name":"coding-agent"},{"slug":"computer-use","name":"computer-use"},{"slug":"enterprise","name":"enterprise"},{"slug":"generalist-agent","name":"generalist-agent"},{"slug":"guardrails","name":"guardrails"},{"slug":"harness","name":"harness"},{"slug":"knowledge","name":"knowledge"},{"slug":"mcp","name":"mcp"}],"trust":{"provenance":{"is_fork":false,"github_id":1054838518,"owner_type":"Organization","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-07-15T10:42:21.575Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":2,"days_since_push":0,"last_release_at":"2026-06-30T22:02:33Z"},"security_summary":{"status":"findings","scanner":"mcp_manifest@v1","low_count":2,"high_count":0,"last_scan_at":"2026-07-15T10:42:22.023Z","medium_count":0,"scan_profile":"mcp_manifest","critical_count":0}},"capability_facts":{"scan":{"source":"repo_scan","observed_at":"2026-07-15T10:42:21.341Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-07-15T10:42:21.341Z","managed_saas":false},"has_cli":{"value":true,"source":"pyproject.toml:[project.scripts]","observed_at":"2026-07-15T10:42:21.341Z"},"languages":{"value":["python"],"source":"github.language+pyproject.toml","observed_at":"2026-07-15T10:42:21.341Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-07-15T10:42:21.341Z"},"license_spdx":{"value":"Other","source":"github.license","observed_at":"2026-07-15T10:42:21.341Z"}}}}