See first: Juju | Agent

In Juju, an agent is any process that runs a dependency engine (dependency.NewEngine) to start and manage workers for a particular domain entity in a particular deployment environment.


List of agents

While Juju agents can be counted based on the number of files in the codebase that invoke dependency.NewEngine, the type of process that they represent depends on the specific jujud / containeragent agent-creating command that they invoke, and the workers that they bring up depend on the specific manifold declaration (files conventionally called *manifolds.go that invoke dependency.Manifolds) that is used to configure the dependency engine. Thus, starting from the list of files that invoke a dependency engine, and factoring in these variations, one can distinguish the following agents:

You can think of the list of agents based on invocations of dependency.NewEngine files as the ‘actual agents’ and of the list of agents arising from the various splits defined in those files as the ‘logical agents’.