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

# Publish an agent

> Put a deployed agent on a public web address as a branded chat assistant, and understand the plan limits before you hit them.

export const StillStuck = ({topic}) => <div className="ck-callout ck-callout--note" role="note">
    <p className="ck-callout__body">
      <strong>Still stuck{topic ? ` with ${topic}` : ''}?</strong>{' '}
      Check <a href="/platform/help/troubleshooting">Troubleshooting</a> first —
      it covers the failures we see most often. If that does not resolve it,{' '}
      <a href="/platform/help/contact-support">contact support</a> and include
      your workspace name and the time the problem happened, so we can find the
      matching entry in your audit log.
    </p>
  </div>;

export const TaskHeader = ({before, time, after}) => <div className="ck-task">
    {before ? <div className="ck-task__cell">
        <div className="ck-task__title">Before you start</div>
        <p className="ck-task__body">{before}</p>
      </div> : null}

    {time ? <div className="ck-task__cell">
        <div className="ck-task__title">Takes about</div>
        <p className="ck-task__body">{time}</p>
      </div> : null}

    {after ? <div className="ck-task__cell">
        <div className="ck-task__title">When you're done</div>
        <p className="ck-task__body">{after}</p>
      </div> : null}
  </div>;

export const Path = ({steps = []}) => <span className="ck-path">
    {steps.map((s, i) => <span key={i} className="ck-path__step">
        {i > 0 ? <span className="ck-path__sep" aria-hidden="true">
            ›
          </span> : null}
        {s}
      </span>)}
  </span>;

export const Availability = ({editions = ['all'], plans, roles, note}) => {
  const list = editions.includes('all') ? ['clinic', 'pharmacy', 'lims'] : editions;
  return <div className="ck-avail" role="note" aria-label="Feature availability">
      <span className="ck-avail__label">Available in</span>

      {list.map(e => <span key={e} className={`ck-pill ck-pill--${e}`}>
          {EDITION_LABELS[e] || e}
        </span>)}

      {plans ? <span className="ck-avail__label">Plan</span> : null}
      {plans ? <span className="ck-pill ck-pill--plan">{plans}</span> : null}

      {roles ? <span className="ck-avail__label">Who</span> : null}
      {roles ? <span className="ck-pill ck-pill--role">{roles}</span> : null}

      {note ? <span className="ck-avail__note">{note}</span> : null}
    </div>;
};

<Availability editions={['clinic', 'pharmacy']} plans="Public agent UIs need Starter and above" />

Two different things are called "publishing", and confusing them wastes an afternoon:

|               | What it does                                          | Who can reach it                                                  |
| ------------- | ----------------------------------------------------- | ----------------------------------------------------------------- |
| **Deploy**    | Makes an agent's trigger live                         | Only your workspace — schedules, events and webhooks start firing |
| **Public UI** | Puts a branded chat assistant on a public web address | Anyone with the link, no sign-in                                  |

Deploying is covered in [Build an AI agent](/platform/ai/agents). This page is about the second one.

<Path steps={['Sidebar', 'AI Agents', 'Public UIs']} />

<TaskHeader before="A deployed agent, and the Starter plan or above" time="10 minutes" after="A public chat link your patients or customers can use without signing in" />

## Plan limits, before you build

Both limits are enforced **at the moment you publish**, not while you build. It is entirely normal to design four agents on Free and discover the cap only when you deploy the second — so check the numbers first.

**Published agents** — deployed agents live in your workspace at any one time:

| Plan      | Published agents |
| --------- | ---------------- |
| Free      | 1                |
| Starter   | 5                |
| Essential | Unlimited        |
| Team      | Unlimited        |

On Free, the message reads "Your Free plan can publish 1 agent or automation at a time. Drafts are always unlimited. Upgrade to Starter to publish more." Drafting really is unlimited on every plan.

**Public agent UIs** — chat assistants exposed on the web:

| Plan      | Public UIs | Address                 | Embedding                  |
| --------- | ---------- | ----------------------- | -------------------------- |
| Free      | 0          | —                       | —                          |
| Starter   | 2          | Generated               | Hosted link only           |
| Essential | 5          | Generated               | Widget snippet             |
| Team      | Unlimited  | Your own custom address | Widget plus raw `<iframe>` |

On Free the **Public UIs** button is not shown at all: "Public Agent UIs are available on the Starter plan and above."

## Publish a public UI

<Steps>
  <Step title="Open Public UIs">
    Select **Public UIs** on the **Agent Builder** page. The **Public Agent UIs** screen shows a live preview beside the editor and a badge counting how many of your allowance you have used.
  </Step>

  <Step title="Choose an agent">
    Under **Choose an agent**, select **Enable** on the one you want. Only deployed agents that are set to de-identified and use safe tools can be made public; anything ineligible says why on its row.
  </Step>

  <Step title="Set the address">
    Your link appears under **Your link**. On Team you can set your own address; on lower plans the address is generated and **Regenerate** issues a new random one. Custom links are a Team feature.
  </Step>

  <Step title="Write what visitors see">
    Under **Content**, set the **Title**, **Headline**, **Welcome message**, **Input placeholder**, up to six **Suggested prompts** and a **Footer note**. Under **Branding**, set an accent colour, a **Theme** and a logo.
  </Step>

  <Step title="Set the abuse caps">
    Under **Access & limits**, keep **Live** on, and set **Messages / minute per visitor**, **Daily messages per visitor** and a **Monthly run cap**. Turn on **Require email to chat** if you want visitors identified before they can ask anything — disposable addresses are blocked.
  </Step>

  <Step title="Save changes">
    Select **Save changes**. The preview and the live page both update.
  </Step>
</Steps>

<Warning>
  Every visitor message on a public UI spends your [agent credits](/platform/ai/credits), and the page is reachable by anyone who has the link. Set the **Monthly run cap** before you share the address — with it blank, the only thing limiting spend is your balance.
</Warning>

## Put it on your website

The **Add to your website** card gives you what your plan allows: a hosted link on Starter, a widget snippet on Essential, and on Team the full widget options (**Floating button** or **Inline on the page**, its position and its **Button text**) plus the raw `<iframe>`. Paste the snippet into your site's HTML. See [Embeds](/platform/integrations/embeds).

A public UI can also live on your own domain — `assistant.yourclinic.com` — via [Custom domains](/platform/settings/custom-domain).

## Take one offline

**Live** switches the page off without losing the configuration. **Take offline & remove** deletes the public UI entirely: the link stops working immediately, and a new one later gets a new address.

## Check it worked

* The counter at the top of **Public Agent UIs** has gone up.
* Opening your link in a private browser window shows the branded chat, with your headline and suggested prompts.
* A message sent from that window appears on the **Runs** page and debits credits.

## If something goes wrong

<AccordionGroup>
  <Accordion title="I don't have a Public UIs button">
    You are on Free. Public agent UIs start at Starter — see [Change your plan](/platform/plans/change-plan).
  </Accordion>

  <Accordion title="Deploy failed because of a limit">
    You have reached your plan's published-agent cap (Free 1, Starter 5). Take an agent offline, or move up a plan. Nothing you have drafted is lost.
  </Accordion>

  <Accordion title="My agent isn't in the list to enable">
    Only deployed agents can be made public, and only ones set to de-identified that use safe tools. Deploy it first, and check the reason shown on its row.
  </Accordion>

  <Accordion title="I can't set my own address">
    Custom addresses are a Team feature. On Starter and Essential use the generated link, or **Regenerate** for a different one.
  </Accordion>

  <Accordion title="Visitors are burning through credits">
    Lower **Messages / minute per visitor** and **Daily messages per visitor**, set a **Monthly run cap**, and turn on **Require email to chat**. Switching **Live** off stops it immediately.
  </Accordion>
</AccordionGroup>

## Related

<Columns cols={2}>
  <Card title="Build an AI agent" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/robot.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=4d019f2f70988b5ec97273b307339235" href="/platform/ai/agents" width="24" height="24" data-path="images/icons/robot.svg">
    Drafting, triggers, and deploying inside your workspace.
  </Card>

  <Card title="Agent credits" icon="https://mintcdn.com/clinikehr/gjlpJWWKqjyYNRzM/images/icons/coins.svg?fit=max&auto=format&n=gjlpJWWKqjyYNRzM&q=85&s=fef93d51fe4a3f06f466a091e038ab4c" href="/platform/ai/credits" width="24" height="24" data-path="images/icons/coins.svg">
    What public conversations cost you.
  </Card>

  <Card title="Custom domains" icon="https://mintcdn.com/clinikehr/gjlpJWWKqjyYNRzM/images/icons/link.svg?fit=max&auto=format&n=gjlpJWWKqjyYNRzM&q=85&s=19ea23fde50ec7989170080d556bd61d" href="/platform/settings/custom-domain" width="24" height="24" data-path="images/icons/link.svg">
    Serve the assistant from your own address.
  </Card>

  <Card title="Change your plan" icon="https://mintcdn.com/clinikehr/gjlpJWWKqjyYNRzM/images/icons/arrow-up-right-dots.svg?fit=max&auto=format&n=gjlpJWWKqjyYNRzM&q=85&s=e1a3f2d2814fd41a2cf05e42daf51912" href="/platform/plans/change-plan" width="24" height="24" data-path="images/icons/arrow-up-right-dots.svg">
    Raise the publishing and public-UI limits.
  </Card>
</Columns>

<StillStuck topic="a public agent link" />
