# Environments (https://www.agentenvframework.com/docs/environments)

> Teaching you how to create & deploy a realistic RL environment

An environment is the world an agent acts in. Creating a toy world is easy. Creating a realistic world
with all the dynamism and entropy present within is difficult. The AgentEnv Framework provides tooling
to enable building the realistic world.

1. [Creating your own environment](https://www.agentenvframework.com/docs/environments/creating.md): write `EmailEnv`, with the tools an
   agent calls and the data plane the framework uses.
2. [Composing environments](https://www.agentenvframework.com/docs/environments/composing.md): add `ContactsEnv` and serve both as one
   `multi` env.
3. [Deploying your environment](https://www.agentenvframework.com/docs/environments/deploying.md): register it, deploy it in a sandbox,
   use it through its card and tear the instance down.
4. [Choose the environment's topology](https://www.agentenvframework.com/docs/environments/topology.md): run the same server behind a
   gateway, on its own, or in a topology of your own.
5. [Environment gateway topology](https://www.agentenvframework.com/docs/environments/gateway-topology.md): what the default topology
   builds around your server.
6. [The environment card](https://www.agentenvframework.com/docs/environments/environment-card.md): the document that tells the
   framework what your environment offers, on your server and on a deployed instance.
7. [Virtual Clock](https://www.agentenvframework.com/docs/environments/virtual-clock.md): give an instance a clock of its own that every
   server and agent reads.
8. [RBAC](https://www.agentenvframework.com/docs/environments/rbac.md): decide which tools each agent's role can see and call.
9. [Triggers](https://www.agentenvframework.com/docs/environments/triggers.md): change the world mid-run when the agent or the clock
   reaches a point you choose.
10. [More Useful Env Extensions](https://www.agentenvframework.com/docs/environments/useful-env-extensions.md): forced errors, the acting
    user and async waits, which your server implements.