--- title: Profiles and links description: How settings profiles override your client defaults per host or per connect, and how punktfunk:// links start a stream from a shortcut, a script or a browser. --- Two features that landed together in 0.22.0 and work with each other: **settings profiles**, named bundles of stream settings you can attach to a host, and **`punktfunk://` links**, URLs that start a stream you have already set up. Both live in the client apps — the Apple app, the Linux GTK client, the Windows client and the Android app. Neither exists in the host's [web console](/docs/web-console). The controller-driven surfaces are a half-exception: Apple TV, the Android app's console mode and the Steam Deck console the Decky plugin launches all *use* the profile a host is bound to and can pin one as its own card, but none of them can create or edit one. Do that on a desktop or a phone first. The Decky panel itself only *shows* those pins, nested under their host as one-tap cards. ## What a profile is A profile is a *sparse* set of overrides on top of your normal client settings. Only the rows you actually touch are stored. Everything else keeps following your defaults **live**, so changing a default later also moves every profile that never overrode it. Touching a row records the override even when you pick the value the default already has. That is a deliberate *pin*: the profile keeps that value when the default later moves. The only way back to inheriting is the row's explicit **Reset**. Where the catalog is kept: | Client | Stored in | |---|---| | Linux | `~/.config/punktfunk/client-profiles.json` | | Windows | `%APPDATA%\punktfunk\client-profiles.json` | | Apple | the app-group store, beside your saved hosts | | Android | app-private storage | The catalog is per device, and nothing syncs it, so a profile you make on your laptop doesn't appear on your phone. ## Creating and editing one Profiles are created and edited in the client's own **Settings** screen — there is no second editor, so a profile can never drift from the surface it overrides. 1. Open Settings. At the top is a scope switcher listing **Default settings**, your profiles, and a **New profile** entry. Linux, Windows and iOS label the control **Editing**; macOS heads the preferences window with the layer's name; Android shows the choices as a row of chips. 2. Create a new profile. Linux, Apple and Android ask for a name (and a colour) first; Windows creates one called *Profile 1* and opens its edit sheet, where you rename it. Names must be unique, ignoring case. 3. Change the rows you want. Every row shows the *effective* value — the inherited default until you touch it. 4. A row you have overridden grows a marker and a **Reset** control. Reset drops that one override and puts the row back to following your defaults. Each profile can carry a colour from a small preset palette (the exact swatches differ slightly between apps). It tints the profile's chip on host cards, so a grid of hosts is readable at a glance. Renaming, duplicating (overrides and colour included) and deleting sit next to the switcher on Linux and in the same menu on Apple. Windows puts them in the sheet the switcher's **Edit** entry opens; Android puts them on the selected profile's own chip — tap it a second time. While a stream runs with a profile, the profile's name closes the first line of the [stats overlay](/docs/stats) — on the Apple client, from the Normal tier up. ## What a profile can't change In profile scope, rows that aren't profileable simply don't render. They are facts about *this device* — the video decoder and GPU it uses, its audio endpoints, which physical controller you hold, whether it wakes hosts on connect and whether it shows a game library — not about how you want a stream to look. **Share clipboard** is out for the neighbouring reason: it's a per-host trust decision stored on the host record rather than a client setting at all — see [Clipboard](/docs/clipboard). The row-by-row list, and why each row stays global, is on [Client settings](/docs/client-settings#settings-that-are-facts-about-your-device). ## Three ways to use a profile **Bind it to a host.** Open a saved host's edit sheet and set **Profile**. Every plain click on that host's card now uses it. This is the only sticky choice. (The Apple app also offers **Connect with ▸ Set Default Profile** on the card itself.) **Use it once.** A card's menu has **Connect with** — pick a profile for this connect only. It never rebinds the host. **Default settings** in that menu is a real choice: on a bound host it forces your globals for one session. (Android lists the same choices flat, as *Connect with: …*.) **Pin it as its own card.** A pinned profile gets its own card beside the host — one click, no menu. Pin it in the host's edit sheet on Linux, Android and Apple, or from a card menu: **Pin as Card** on Apple, **Pin as card: …** on Android, **Pin tiles** on Windows. A pinned card is a shortcut, not a second host: unpinning changes neither the profile nor the host's binding. ## Deleting a profile The confirmation tells you what breaks: how many hosts will fall back to **Default settings**, and how many pinned cards will disappear. Bindings and pins are deliberately left pointing at the gone profile rather than rewritten; everywhere they are read, a dangling reference resolves as "no profile", which is exactly your defaults. Nothing errors and no connect is blocked. ## `punktfunk://` links A link starts a stream on a host this device already trusts. All four apps register the scheme with the operating system, so a link works from a browser (behind the browser's own "open this app?" prompt), a desktop shortcut, a home-automation rule or a script: ```text punktfunk://connect/[?fp=<64-hex>][&host=][&launch=][&profile=][&name=