La programmation orientée équipe est une abstraction qui permet au programmeur de ne pas avoir à s'occuper des mécanismes de constitution, de synchronisation et de maintenance d'équipes d'agents: une couche d'abstraction prend en charge ces aspects et les isole des parties fonctionnelles de l'agent. David PYNADATH définit ainsi par exemple dans [#!pynadath-1999!#] un tel mécanisme d'abstraction, appelé TEAMCORE, qui s'occupe de toutes les couches basses de la maintenance des équipes d'agents. La programmation orientée équipe permet au programmeur de se concentrer sur l'aspect fonctionnel de son équipe et de définir des rôles et des plans pour résoudre le problème présenté. Le principe est de définir une hiérarchie de buts et de sous-buts (nécessaires pour atteindre le but final, typiquement remporter la partie ou remplir une mission), auxquels l'entité « équipe » va réagir de manière réactive et émergente. Pour chacun des plans et des sous-plans à atteindre, la programmation orientée équipe permet d'assigner un ou plusieurs rôles aux membres de l'équipe (la méthode d'assignation de rôles étant assurée par la couche d'abstraction de programmation orientée équipe) par plan actif. La robustesse de l'organisation sociale de l'équipe étant assurée par le dispositif de programmation orientée équipe, les agents en tant qu'individus n'ont plus qu'à s'occuper de la robustesse de leurs propres rôles.