---
title: Service bindings
description: "Call another deployment on the same node over loopback, without going over the public internet."
---

## Configuration

```jsonc
"services": [{ "binding": "PEER", "service": "quote-service" }]
```

## Usage

```js
const res = env.PEER.fetch(new Request("https://peer/random"));
```

The call reaches the node's edge on loopback with the target's hostname, so it reuses routing, the process pool, and the logs. It is not egress, so the [`outbound`](/bindings/outbound-fetch) allowlist does not apply.

## Constraints

:::warning
- **Same owner only.** A binding that resolves to nothing reports the target as undeployed instead of failing as a 502.
- **No self-calls.** A sprout serves one request turn at a time, so a service binding that points back at its own project deadlocks until the request times out. Point it at a different deployment.
- **Not available in a [standalone binary](/get-started/standalone)**, which has no edge to route through.
:::

## Related

- [Outbound fetch](/bindings/outbound-fetch) — the egress path for calls that leave the node
