An Agent is a singleton-per-session component without any graphical UI.

Agents can provide services to other modular components.

Any modular component can connect to an agent and access its services (including modules, shells, and other agents).


An agent is given access to two services provided by the modular framework in its namespace:

  • fuchsia.modular.ComponentContext, which gives the agent access to functionality that is shared across components run under the modular framework (e.g. modules, shells, agents).
  • fuchsia.modular.AgentContext, which gives agents access to agent specific functionality.

An agent is expected to provide the following services to the modular framework in its outgoing directory:

  • fuchsia.modular.Lifecycle allows the framework to signal the agent to terminate gracefully.


Agents are launched when a client requests a service that is provided by the agent.

"Session agents" and "startup agents", specified in a (Modular config)[guide/], are started eagerly during session startup.

Exposing FIDL services

Agents can expose services to other components. They do so by publishing these services in their outgoing directory. Other components (agents, shells, modules) can connect to these services through their incoming directory (aka. namespace) like any other service, provided a mapping in the agent_service_index for the requested service exists.

See Guide to configuring the Modular Framework for information on the agent_service_index.