# AsyncTunnel

> **Class** in `langsmith`

📖 [View in docs](https://reference.langchain.com/python/langsmith/sandbox/_tunnel/AsyncTunnel)

Async wrapper around :class:`Tunnel`.

The underlying tunnel runs in background threads (TCP listener + bridges);
async context-manager methods delegate to the sync tunnel via the event
loop's executor.

Usage::

    async with await sandbox.tunnel(remote_port=5432) as t:
        conn = await asyncpg.connect(host="127.0.0.1", port=t.local_port)

## Signature

```python
AsyncTunnel(
    self,
    dataplane_url: str,
    api_key: Optional[str],
    remote_port: int,
    *,
    local_port: int = 0,
    max_reconnects: int = 3,
    headers: Optional[Mapping[str, str]] = None,
)
```

## Constructors

```python
__init__(
    self,
    dataplane_url: str,
    api_key: Optional[str],
    remote_port: int,
    *,
    local_port: int = 0,
    max_reconnects: int = 3,
    headers: Optional[Mapping[str, str]] = None,
) -> None
```

| Name | Type |
|------|------|
| `dataplane_url` | `str` |
| `api_key` | `Optional[str]` |
| `remote_port` | `int` |
| `local_port` | `int` |
| `max_reconnects` | `int` |
| `headers` | `Optional[Mapping[str, str]]` |


## Properties

- `local_port`
- `remote_port`

## Methods

- [`close()`](https://reference.langchain.com/python/langsmith/sandbox/_tunnel/AsyncTunnel/close)

---

[View source on GitHub](https://github.com/langchain-ai/langsmith-sdk/blob/19dc497a3d89638e4cc35db72ea1c29cad35cbbf/python/langsmith/sandbox/_tunnel.py#L433)