# `SnakeBridge.RuntimeClient`
[🔗](https://github.com/nshkrdotcom/snakebridge/blob/v0.16.0/lib/snakebridge/runtime_client.ex#L1)

Behaviour for runtime clients that execute SnakeBridge payloads.

The default runtime client is `Snakepit`, but tests can override
this via the `:runtime_client` config or a per-process override.

# `callback`

```elixir
@type callback() :: (term() -&gt; any())
```

# `opts`

```elixir
@type opts() :: keyword()
```

# `payload`

```elixir
@type payload() :: map()
```

# `tool`

```elixir
@type tool() :: String.t()
```

# `execute`

```elixir
@callback execute(tool(), payload(), opts()) ::
  {:ok, term()} | {:error, Snakepit.Error.t()}
```

# `execute_stream`

```elixir
@callback execute_stream(tool(), payload(), callback(), opts()) ::
  :ok | {:error, Snakepit.Error.t()}
```

---

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