blob: e4db6d73687be1920691ecb901bc763406536936 [file] [log] [blame] [view]
# Agents
> DEPRECATION WARNING: The Modular framework is being deprecated in favor of
> the [Session Framework](/docs/concepts/session/introduction.md).
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).
## Environment
An agent is given access to two services provided by the modular framework in
its incoming namespace:
* `fuchsia.modular.ComponentContext` which gives the agent access to
functionality which 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 namespace:
* `fuchsia.modular.Lifecycle` allows the framework to signal the agent
to terminate gracefully.
## Lifecycle
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/config.md], 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](guide/config.md) for information on
the `agent_service_index`.