diff --git a/agent/agent.go b/agent/agent.go
index <HASH>..<HASH> 100644
--- a/agent/agent.go
+++ b/agent/agent.go
@@ -72,8 +72,14 @@ func (a *Agent) UpdateUnits() {
 	localUnits := a.getLocalUnits()
 
 	for unitName, unitValue := range registeredUnits {
-		writeLocalUnit(unitName, unitValue)
-		a.startUnit(unitName)
+		if _, ok := localUnits[unitName]; !ok {
+			writeLocalUnit(unitName, unitValue)
+		}
+
+		if state := a.getLocalUnitState(unitName); state != "active" {
+			a.startUnit(unitName)
+		}
+
 	}
 
 	d := parseDuration(a.ServiceTTL)
fix(agent): be more intelligent about starting services

* Only write out a unit file if it does not exist
* Only attempt to start the unit if the state is not active