user_docs/getting-started/installation.md

# Installation

You will finish this page with BaileysEx compiled in your project and ready for a real WhatsApp connection.

## Before you begin

- Elixir 1.19 or newer
- OTP 28
- A Rust toolchain available on your machine
- A WhatsApp account you can pair with a companion client

## Steps

### 1. Add BaileysEx to your dependencies

Add BaileysEx to your `mix.exs` dependencies.

```elixir
defp deps do
  [
    {:baileys_ex, "~> 0.1.0-alpha.2"}
  ]
end
```

BaileysEx builds native code during compilation, so you need Rust on the machine that runs `mix compile`.
Because the current public release is an alpha prerelease, the prerelease version must be requested explicitly.

### 2. Fetch and compile the project

Run the normal Mix setup commands.

```bash
mix deps.get
mix compile
```

You should see: `Generated baileys_ex app`

### 3. Pick a transport and an auth-state path

BaileysEx does not open a network connection unless you pass a transport. The standard choice is `BaileysEx.Connection.Transport.MintWebSocket`.

```elixir
alias BaileysEx.Connection.Transport.MintWebSocket

transport = {MintWebSocket, []}
auth_path = "tmp/baileys_auth"
```

You reuse the same auth path across restarts so you do not need to pair every time.

## Check that it worked

Start `iex -S mix` and load credentials once:

```elixir
alias BaileysEx.Auth.NativeFilePersistence

{:ok, auth_state} = NativeFilePersistence.load_credentials("tmp/baileys_auth")
```

You should get a `BaileysEx.Auth.State` struct back, even the first time.

If you specifically need the Baileys-compatible JSON multi-file layout on disk,
use `BaileysEx.Auth.FilePersistence` instead. For most Elixir applications, the
native helper is the recommended default.

---

**Next steps:**
- [First Connection](first-connection.md) — start the runtime and pair with WhatsApp
- [Configuration Reference](../reference/configuration.md) — review the public connection and runtime options