# Environments
source: https://docs.chalk.ai/docs/resolver-environments

## Change resolver behavior by deployment.

Environments are used to trigger behavior in different deployments
such as staging, production, and local development.
For example, you may wish to interact with a vendor via an API call
in the production environment, and opt to return a constant value
in a staging environment.

### Specifying environments

You can choose to scope resolvers to a restricted set of environments.
Resolvers optionally take a keyword argument named environment
that can take one of three types:

- Unassigned (default) - The resolver will be a candidate to run in every environment.
- String value - The resolver will run only in this environment.
- List of strings - The resolver will run in any of the specified environments and no other environments.

### Example

Say your fraud models needed to interact with a fraud vendor that you wanted
to mock out in staging. We can scope the environments as follows:

```
@online(environment="**production**")
def fraud_score_prod(email: User.email, phone: User.phone) -> User.fraud_score:
    return api_vendor.fraud_score(email)

@online(environment=["**staging**", "**dev**"])
def fraud_score_staging(email: User.email) -> User.fraud_score:
    if email == "fraud_user@chalk.ai":
        return 10
    return 90
```

Resolvers in different environments don't need to take the same arguments.
In the above example, the production version of the resolver takes a phone
number and an email, while the staging version of the resolver takes only
the email.





