Les agents se chargent du déploiement effectif, ce qui libère le serveur de cette tâche. Tous les processus, y-compris la création de packages, la configuration et les déploiements, qui sont requis par le serveur IBM UrbanCode Deploy s'exécutent sur le matériel affecté aux agents. Après le démarrage d'un agent installé, celui-ci ouvre une connexion socket au serveur IBM UrbanCode Deploy. La communication entre un serveur et les agents utilise un protocole basé JMS (Java™ Message Service). La communication peut être sécurisée avec SSL et authentification mutuelle facultative basée clé pour chaque noeud final. Ce protocole de communication est sans état et résilient aux pannes réseau (les avantages du protocole sans état sont discutés plus loin).
Alors qu'un agent est perçu comme étant un seul processus, techniquement il consiste d'un processus de traitement et d'un processus de contrôle. L'unité de traitement est un processus à unités d'exécutions multiples qui réalise le travail de déploiement effectif après avoir reçu des commandes du serveur. Les commandes de travail émanent des étapes de plug-in, lesquelles permettent une intégration transparente avec de nombreux outils tiers. Le contrôle est assuré par un service qui gère le processus de traitement : démarrage et arrêt, gestion des redémarrages, mises à niveau et sécurité, par exemple. Les agents sont rarement mis à niveau étant donné que leur fonctionnalité dérive de plug-ins qui peuvent mis à niveau à votre gré. Une fois un agent installé, il peut être géré depuis l'interface Web d'IBM UrbanCode Deploy.
Les agents apportent une contribution important à l'extensibilité d'IBM UrbanCode Deploy. En ajoutant d'autres agents, le débit et la capacité du système augmentent presque exponentiellement et peuvent donc convenir même aux plus grandes entreprises.