1) I made this as a shortcut to loop all integrations. The actual implementation relies on IIntegration.IsRunningInBuildAgent (based on the existing TeamCity.IsRunningInBuildAgent). I don't see how IIntegration Detect() would help here.

2) I agree that we can throw an exception if multiple integrations are actually building (not on found, we don't want to mess with people moving from system x to y that have both systems installed)

3) The LocalIntegration might be a good idea, but what's different than just returning false (it is not building in a build agent).