# `IEx.Server`
[🔗](https://github.com/elixir-lang/elixir/blob/4064905654dc58665ebbabf44ce19384d0421828/lib/iex/lib/iex/server.ex#L5)

The IEx.Server.

The server responsibilities include:

  * reading input from the group leader and writing to the group leader
  * sending messages to the evaluator
  * taking over the evaluator process when using `IEx.pry/0` or setting up breakpoints

# `run_opts`

```elixir
@type run_opts() :: [
  prefix: String.t(),
  env: Macro.Env.t(),
  binding: keyword(),
  on_eof: :stop_evaluator | :halt,
  register: boolean()
]
```

# `run`
*since 1.8.0* 

```elixir
@spec run(run_opts()) :: :ok
```

Starts a new IEx server session.

The accepted options are:

  * `:prefix` - the IEx prefix
  * `:env` - the `Macro.Env` used for the evaluator
  * `:binding` - an initial set of variables for the evaluator
  * `:on_eof` - if it should `:stop_evaluator` (default) or `:halt` the system
  * `:register` - if this shell should be registered in the broker (default is `true`)

---

*Consult [api-reference.md](api-reference.md) for complete listing*
