> ## Documentation Index
> Fetch the complete documentation index at: https://developers.telnyx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Function Settings

> The func.toml settings that make a function private and reachable from a Network.

Four settings in `func.toml` control how a function is reached. `private` sits in the `[edge_compute]` block. `id`, `peer`, and `ingress` sit in a [network binding](https://developers.telnyx.com/docs/edge-compute/runtime/bindings/network.md) block.

```toml theme={null}
[edge_compute]
func_id = "16b97074-7393-4a21-b95f-c8fec4a0138e"
func_name = "hello-private"
private = true

[network.PRIVATE_NET]
id = "241b79f1-c159-4fbd-b6da-41a77c731904"
peer = false
ingress = true
```

Shipping applies a change.

## `private`

`private` decides whether the function has a public URL.

| Value | Result |
| - | - |
| `false` (default) | The function answers at its [public URL](https://developers.telnyx.com/docs/edge-compute/configuration/routing.md). |
| `true` | The public URL returns `404`. The function answers only through the ingress. |

## `id`

`id` is the UUID of a WireGuard Interface on the [*Network*](https://developers.telnyx.com/docs/network/overview.md). It ties the function to that *Network*. The *Network* UUID is not accepted.

## `peer` and `ingress`

`peer` and `ingress` pick which way traffic flows between the function and the *Network*.

| Use case | Settings | Traffic |
| - | - | - |
| Private Ingress | `peer = false`, `ingress = true` | Hosts on the *Network* send requests to the function. |
| [Network binding](https://developers.telnyx.com/docs/edge-compute/runtime/bindings/network.md) | `peer = true`, `ingress` omitted | The function sends requests to hosts on the *Network*. |

* `ingress = true` puts the function behind the *Network*'s [ingress](https://developers.telnyx.com/docs/edge-compute/private-ingress/how-it-works/ingress.md), which receives requests from the *Network* and hands them to the function.
* `peer = true` adds the function to the WireGuard Interface as a peer of its own, so the function reaches other peers and hosts on the *Network*. It is the default.

`telnyx-edge ship` rejects `peer = false` without `ingress = true`.

## Common Setups

| Goal | `private` | `peer` | `ingress` |
| - | - | - | - |
| Internal service reached only from the *Network* | `true` | `false` | `true` |
| Internal service that also reaches the *Network* | `true` | `true` | `true` |
| Public function that also answers on the *Network* | `false` | `false` | `true` |
| Public function that reaches the *Network* | `false` | `true` | `false` |
