- 🚀 ArgoCD AI Agent
🚀 ArgoCD AI Agent
🚀 ArgoCD AI Agent
- 🤖 ArgoCD Agent is an LLM-powered agent built using the LangGraph ReAct Agent workflow and MCP tools.
- 🌐 Protocol Support: Compatible with ACP and A2A protocols for integration with external user clients.
- 🛡️ Secure by Design: Enforces ArgoCD API token-based RBAC and supports external authentication for strong access control.
- 🔌 Integrated Communication: Uses langchain-mcp-adapters to connect with the ArgoCD MCP server within the LangGraph ReAct Agent workflow.
- 🏭 First-Party MCP Server: The MCP server is generated by our first-party openapi-mcp-codegen utility, ensuring version/API compatibility and software supply chain integrity.
🚦 Getting Started
1️⃣ Configure Environment
- Ensure your
.envfile is set up as described in the cnoe-agent-utils usage guide based on your LLM Provider. - Refer to .env.example as an example.
Example .env file:
LLM_PROVIDER=aws-bedrock
AGENT_NAME=ArgoCD
## ArgoCD Configuration
ARGOCD_TOKEN=
ARGOCD_API_URL=
ARGOCD_VERIFY_SSL=true
## A2A Agent Configuration
A2A_HOST=localhost
A2A_PORT=8000
########### LLM Configuration ###########
# AWS Configuration
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
AWS_BEDROCK_MODEL_ID="us.amazon.nova-pro-v1:0"
AWS_BEDROCK_PROVIDER="amazon"
2️⃣ Start the Agent (A2A Mode)
Note:
- If you don't have access to an ArgoCD server, see the Local Development Setup section below to quickly spin up a local ArgoCD instance and deploy a sample app before proceeding.
- If you are using a different container runtime such as
podmanorctr, please substitutedockerwith the respective utility in the commands below.
Run the agent in a Docker container using your .env file:
docker run -p 0.0.0.0:8000:8000 -it \
-v $(pwd)/.env:/app/.env \
ghcr.io/cnoe-io/agent-argocd:a2a-latest
3️⃣ Run the Client
Use the agent-chat-cli to interact with the agent:
uvx https://github.com/cnoe-io/agent-chat-cli.git a2a
Quick Demos
AGNTCY ACP Demo
Google A2A Demo
🏗️ Architecture
flowchart TD
subgraph Client Layer
A[User Client ACP/A2A]
end
subgraph Agent Transport Layer
B[AGNTCY ACP<br/>or<br/>Google A2A]
end
subgraph Agent Graph Layer
C[LangGraph ReAct Agent]
end
subgraph Tools/MCP Layer
D[Langchain MCP Adapter]
E[ArgoCD MCP Server]
F[ArgoCD API Server]
end
A --> B --> C
C --> D
D -.-> C
D --> E --> F --> E
✨ Features
- 🤖 LangGraph + LangChain MCP Adapter for agent orchestration
- 🧠 Azure OpenAI GPT-4o as the LLM backend
- 🔗 Connects to ArgoCD via a dedicated ArgoCD MCP agent
- 🔄 Multi-protocol support: Compatible with both ACP and A2A protocols for flexible integration and multi-agent orchestration
Local Development Setup
▶️ [Optional] Start local ArgoCD Server with kind
Note: This section assumes you have basic familiarity with Kubernetes concepts and tools, as running ArgoCD locally requires interacting with Kubernetes clusters and resources.
If you don't have an existing ArgoCD server, you can quickly spin one up using kind:
-
Install KinD Reference: https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-release-binaries
-
Create a kind cluster:
kind create cluster --name cnoe-argocd-agent -
Install ArgoCD in the
argocdnamespace:kubectl create namespace argocdkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml -
Expose the ArgoCD API server: Wait until all the pods are running by checking their status:
kubectl get pods -Akubectl port-forward svc/argocd-server -n argocd 8080:443The API will be available at
https://localhost:8080. -
Get the ArgoCD admin password:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d && echo -
(Optional) Install ArgoCD CLI:
brew install argocd # or see https://argo-cd.readthedocs.io/en/stable/cli_installation/
Example: Deploying Guestbook via ArgoCD CLI
Note: Use a new terminal session and continue to run ArgoCD locally via port forwarding.
To deploy the Guestbook demo application using the ArgoCD CLI, follow these steps:
- Login to ArgoCD:
argocd login localhost:8080 --username admin --password <ARGOCD_ADMIN_PASSWORD> --insecure
- Create the Guestbook application:
argocd app create guestbook \
--repo https://github.com/argoproj/argocd-example-apps.git \
--path guestbook \
--dest-server https://kubernetes.default.svc \
--dest-namespace default
- Sync (deploy) the application:
argocd app sync guestbook
- Check application status:
argocd app get guestbook
- Generate an ArgoCD API Token:
To interact programmatically with ArgoCD, you need an API token. After logging in with the CLI, run:
kubectl -n argocd patch configmap argocd-cm --type merge -p '{"data":{"accounts.admin":"login,apiKey"}}'
kubectl -n argocd rollout restart deployment argocd-server
argocd account generate-token --account admin
Copy the output token and set it as ARGOCD_TOKEN in your .env file.
ARGOCD_TOKEN=
ARGOCD_API_URL=https://localhost:8080
ARGOCD_VERIFY_SSL=false
For more details, see the official getting started guide.
1️⃣ Create/Update .env
- Ensure your
.envfile is set up as described in the cnoe-agent-utils usage guide based on your LLM Provider. - Refer to .env.example as an example.
2️⃣ Start A2A Agent
- A2A Mode:
make run-a2a
3️⃣ Run the A2A Client
To interact with the agent in A2A mode:
uvx https://github.com/cnoe-io/agent-chat-cli.git a2a
or
make run-a2a-client
Example Interaction
> Your Question: how can you help?
Agent: I can assist you with managing applications in ArgoCD, including tasks such as:
- Listing Applications: Retrieve a list of applications with filtering options.
- Getting Application Details: Fetch detailed information about a specific application.
- Creating Applications: Create new applications in ArgoCD.
- Updating Applications: Update existing applications.
- Deleting Applications: Remove applications from ArgoCD.
- Syncing Applications: Synchronize applications to a specific Git revision.
- Getting User Info: Retrieve information about the current user.
- Getting ArgoCD Settings: Access server settings.
- Getting Plugins: List available plugins.
- Getting Version Information: Retrieve ArgoCD API server version.
🧬 Internals
- 🛠️ Uses
create_react_agentfor tool-calling - 🔌 Tools loaded from the ArgoCD MCP server (submodule)
- ⚡ MCP server launched via
uv runwithstdiotransport - 🕸️ Single-node LangGraph for inference and action routing
📁 Project Structure
agent_argocd
├── __main__.py
├── agent.py
├── graph.py
├── llm_factory.py
├── models.py
├── protocol_bindings
│ ├── __init__.py
│ ├── a2a_server
│ │ └── agent_executor.py
│ ├── acp_server
│ │ └── agent.json
│ └── mcp_server
│ ├── __init__.py
│ └── mcp_argocd
│ ├── __init__.py
│ ├── api
│ │ └── client.py
│ ├── models
│ │ └── base.py
│ ├── server.py
│ ├── tools
│ │ └── api_v1_applications.py
│ └── utils
│ └── __init__.py
└── state.py
🧩 MCP Submodule (ArgoCD Tools)
This project uses a first-party MCP module generated from the ArgoCD OpenAPI specification using our openapi-mcp-codegen utility. The generated MCP server is included as a git submodule in argocd_mcp/.
All ArgoCD-related LangChain tools are defined by this MCP server implementation, ensuring up-to-date API compatibility and supply chain integrity.
Evals
Running Evals
This evaluation uses agentevals to perform strict trajectory match evaluation of the agent's behavior. To run the evaluation suite:
make evals
This will:
- Set up and activate the Python virtual environment
- Install evaluation dependencies (
agentevals,tabulate,pytest) - Run strict trajectory matching tests against the agent
Example Output
=======================================
Setting up the Virtual Environment
=======================================
Virtual environment already exists.
=======================================
Activating virtual environment
=======================================
To activate venv manually, run: source .venv/bin/activate
. .venv/bin/activate
Running Agent Strict Trajectory Matching evals...
Installing agentevals with Poetry...
. .venv/bin/activate && uv add agentevals tabulate pytest
...
set -a && . .env && set +a && uv run evals/strict_match/test_strict_match.py
...
Test ID: argocd_agent_1
Prompt: show argocd version
Reference Trajectories: [['__start__', 'agent_argocd']]
Note: Shows the version of the ArgoCD Server Version.
...
Results:
{'score': True}
...
Evaluation Results
Latest Strict Match Eval Results
📜 License
Apache 2.0 (see LICENSE)
👥 Maintainers
See MAINTAINERS.md
- Contributions welcome via PR or issue!
🙏 Acknowledgements
- LangGraph and LangChain for agent orchestration frameworks.
- langchain-mcp-adapters for MCP integration.
- AGNTCY Agent Connect Protocol(ACP)
- AGNTCY Agent Gateway Protocol(AGP)
- AGNTCY Workflow Server Manager (WFSM) for deployment and orchestration.
- Model Context Protocol (MCP) for the protocol specification.
- Google A2A
- The open source community for ongoing support and contributions.