# `ASM.Remote.NodeConnector`
[🔗](https://github.com/nshkrdotcom/agent_session_manager/blob/v0.9.2/lib/asm/remote/node_connector.ex#L1)

Remote node connection and preflight checks.

# `remote_cfg`

```elixir
@type remote_cfg() :: %{
  :remote_node =&gt; atom(),
  optional(:remote_cookie) =&gt; atom() | nil,
  optional(:remote_connect_timeout_ms) =&gt; pos_integer(),
  optional(:remote_rpc_timeout_ms) =&gt; pos_integer(),
  optional(:remote_boot_lease_timeout_ms) =&gt; pos_integer(),
  optional(:remote_bootstrap_mode) =&gt; :require_prestarted | :ensure_started,
  optional(:remote_cwd) =&gt; String.t() | nil
}
```

# `ensure_connected`

```elixir
@spec ensure_connected(
  remote_cfg(),
  keyword()
) ::
  :ok
  | {:error,
     :distribution_not_enabled
     | :remote_connect_timeout
     | :remote_connect_failed
     | :cookie_conflict}
```

# `preflight`

```elixir
@spec preflight(
  remote_cfg(),
  keyword()
) ::
  :ok
  | {:error,
     :remote_not_ready | :remote_rpc_timeout | {:remote_rpc_failed, term()}}
  | {:error, {:remote_capability_mismatch, map()}}
  | {:error, {:remote_version_mismatch, map()}}
```

# `reset_cookie_book`

```elixir
@spec reset_cookie_book() :: :ok
```

---

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