---
title: "Design & distribution"
description: "How an agent looks and where it reaches users — the chat theme editor, branding, the standalone page, Portal listing, embed, and custom domains."
---

The **Design** tab (under Configure) and the **Distribute** group (Distribution, Embed, Domains) shape what users see and where. Branding and the standalone-page policy live under **Agent Settings → General**; they're covered here because they're design decisions.

## The Design tab

- **Chat theme** — the live control. An editor over the [`@guuey/chat` theme schema](/chat-theming/): palette (light and dark), corner radius, density, font family, and text scale. The preview is the real chat kit rendering a sample transcript from your draft, so what you see is what the widget paints. Saves are validated with the same validator the API uses, and the theme applies to every surface Guuey hosts for the app — the embedded widget, the standalone page, and Portal chat — **with no redeploy**. "Start from" seeds the editor from either shipped theme.
- **Generated UI** — a theme-preset picker for generated screens. Nothing reads this selection yet; the panel says so itself.
- **Brand** — the agent's name and description as surfaces display them.
- **UI Library** — the generated-UI components this app has produced and cached for reuse.
- **Inheritance** — workspace design defaults with per-app overrides; coming soon.

## Branding (Settings → General)

The agent's icon, social-share (OG) image, and accent color. These brand the **agent itself** — its own page, its share links, Portal Discover — whether or not it's ever published to the store. Image uploads are hosted by Guuey; clearing a field really clears it.

## Standalone page (Settings → General)

Every deployed agent can have its own page — on its Guuey slug host and on any [custom domain](/domains/). The policy object here controls what that page does: on/off, welcome line, call-to-action, whether search engines may index it, and the identity endpoint that signs visitors in on a custom domain (see [Sign-in on the agent's page](/page-sign-in/)). The page's title is always the app's name. _How_ visitors sign in is a separate control (Users → Authentication); _whether_ they must sign in at all — guest access — is set under Distribution → Sharing & access, the same switch Studio calls **Require sign-in to chat**.

## Distribution

The status-and-handoff surface for the agent's [Portal](/portal/) presence:

- **Listing** — name, description, category, tags, and visibility, editing the agent's store listing directly. Unlike Studio's Share drawer, the Console applies no read-only guard here: it will list a write-capable agent publicly if you tell it to, so keep agents with connected accounts unlisted unless you mean it.
- **Publish / Unpublish** — flips the listing between draft and published. Publishing controls **discoverability** in Portal only; the direct link and the agent's page keep working for any live agent, listed or not. To actually restrict access, turn off guest access below or turn the standalone page off. A suspended listing is a platform moderation state and is read-only here.
- **Sharing & access** — the share link (using your claimed slug when you have one), the **Guest access** switch (whether visitors may talk without signing in), an optional daily message limit per guest, and whether the "sign in to keep your history" prompt shows.

Studio's Share drawer edits the same rows under its own names: **List in Discover / Unlisted link** is visibility, **Stop sharing** delists, and **Require sign-in to chat** is guest access turned off. See [Share an agent](/studio-share/).

## Embed

The two-script widget for your own site: the snippet, the allowed-origins list (for the widget's frame check a bare domain covers the apex only, and localhost entries need the scheme — `http://localhost:3000`; the agent endpoint's CORS check is looser, see [Allow your site's domain](/embed/#1-allow-your-sites-domain)), bubble/icon colors, and — for signed-in embeds — the identity section with the widget key ceremony that mints your token-signing key. The full integration guide is [Embed & share](/embed/); signed-in identity is [Sign in your own users](/surface-identity/).

## Domains

Attach a hostname you own to the agent's page. The tab walks verification and TLS provisioning, polling until the domain is serving — records to create, current status, and any error are shown per domain. The DNS specifics live in [Your own domain](/domains/).