An example AI agent with GitHub MCP integration, deployed as a Verifiable Service on the Verana ecosystem. This is part of the EAFIT Challenge.
This example agent is built with the hologram-generic-ai-agent-vs container, which provides a ready-to-use AI chatbot with DIDComm messaging, verifiable credential authentication, and MCP tool integration.
You can find other agent examples (GitHub Agent, Wise Agent, etc.) in the hologram-verifiable-services repository.
This agent is a child service of the EAFIT Challenge organization. It:
- Receives a Service credential from the organization (proves it's a legitimate service)
- Uses the Avatar credential definition from
avatar.eafit.testnet.verana.networkto authenticate users via AnonCreds proof requests - Provides GitHub MCP tools to authenticated users via encrypted DIDComm chat
├── config.env # Service configuration (ports, org URLs, credDef, etc.)
├── deployment.yaml # Helm chart values for K8s deployment
├── agent-pack.yaml # Chatbot agent pack (prompts, menus, MCP config)
├── common/
│ └── common.sh # Shared shell helpers
├── docker/
│ └── docker-compose.yml # Local development stack
├── scripts/
│ ├── setup.sh # Local setup (VS Agent + ngrok + Service credential)
│ └── start.sh # Start Docker Compose stack
├── docs/
│ └── README.md # User-facing guide
└── .github/
└── workflows/
└── deploy.yml # GitHub Actions workflow for K8s deployment
- Docker and Docker Compose
- ngrok (authenticated)
curl,jq- An OpenAI API key
The setup script connects to the deployed EAFIT organization at admin.organization.eafit.testnet.verana.network to obtain the Service credential. No local organization instance is required.
# 1. Set up the VS Agent (deploys container, gets Service credential)
source config.env
./scripts/setup.sh
# 2. Start the full stack (chatbot + redis + postgres)
export NGROK_DOMAIN=<your-ngrok-domain>
export OPENAI_API_KEY=sk-...
./scripts/start.shNote: if you don't want to use an OPENAI_API_KEY, you can configure any other LLM, refer to agent pack schema for available options.
The .github/workflows/deploy.yml workflow deploys the agent to the shared EAFIT Challenge K8s cluster.
| Secret | Description |
|---|---|
OVH_KUBECONFIG |
Kubeconfig for the K8s cluster |
K8S_NAMESPACE |
Target namespace (ideally, use your team name) |
EXAMPLE_AGENT_OPENAI_API_KEY |
OpenAI API key for the chatbot |
EXAMPLE_AGENT_POSTGRES_PASSWORD |
PostgreSQL password |
EXAMPLE_AGENT_MCP_CONFIG_ENCRYPTION_KEY |
Encryption key for MCP user configs (generate with openssl rand -hex 32) |
EXAMPLE_AGENT_WALLET_KEY |
VS Agent wallet encryption key (generate with openssl rand -base64 32) |
EXAMPLE_AGENT_VSAGENT_DB_PASSWORD |
VS Agent internal DB password |
Run the workflow from the GitHub Actions tab with step all to deploy and obtain credentials.
The agent will be available at the URL configured in AGENT_PUBLIC_URL (see below).
Key settings in config.env:
AGENT_PUBLIC_URL— Public URL of the deployed agent. For student teams, use the convention:https://<agentname>.agents.<team_name>.teams.eafit.testnet.verana.networkCREDENTIAL_DEFINITION_ID— AnonCreds credDef from the EAFIT Avatar service (hardcoded)ORG_VS_PUBLIC_URL— Public URL of the EAFIT organization agentSERVICE_NAME— Display name shown in the Service credentialOPENAI_MODEL— LLM model for the chatbot
Apache-2.0