---
title: "Finding agents & chatting"
description: "How Portal's Explore store, agent pages, and conversations work — streaming replies, generative cards, permission asks, and pairing a self-hosted server."
---

This page covers the end-user loop: find an agent in Explore, open its page, and talk to it.

## The Explore tab

Explore is the store surface. Top to bottom you'll find:

- A **hero card** and curated sections of featured agents.
- **Category chips** to filter the listing grid.
- A **"New" rail** — recently published agents, freshest first.
- An **"Official apps" rail** — agents published by Guuey.
- The **all-agents grid**, filtered by whatever category or search you've applied.

Search matches agent names, descriptions, and categories as you type. When a search or category comes up empty, Explore says so and offers a way back rather than showing a blank screen.

:::note[Explore or Discover?]
Explore and Discover are the same surface. The Portal tab (and sidebar entry) is labeled **Explore**, the page heading inside it reads **Discover**, and Studio's Share drawer calls the listing destination **"Portal Discover"** ("List in Discover"). If a builder tells you their agent is "listed in Discover", look in the Explore tab.
:::

## The agent page

Tapping any listing opens the agent's page at `/agent/<id>` (agents that claimed a URL slug get `/agent/<slug>`). Unlisted share links from Studio open this same page — the only difference is the agent isn't browsable in Explore. From here you can:

- **Add** the agent to your Agents tab (requires sign-in — your list is part of your account).
- **Start chatting** right away.

A link to an agent that was deleted or never existed lands on an honest "doesn't exist" state. Delisting from Explore doesn't break direct links — a live agent's page keeps working.

## Guests and the sign-in gate

Whether you can chat signed-out is the builder's choice, per agent:

- **Guest-open agents** — tap Start Chat and you're in. No account needed.
- **Sign-in-required agents** — the agent page's Start Chat button reads **Sign in to chat**; tap it, sign in, and Portal brings you back to the agent's page to start the conversation. (Scanning a QR code for such an agent while signed out shows a short sign-in sheet first.)

Sign-in options and what happens to your guest activity when you create an account are covered in [Account & settings](/portal-account/).

## Agent availability

Every agent on Guuey runs on its own isolated, long-running infrastructure, and Portal talks to it directly. Three states you'll see:

- **Starting up** — a just-deployed agent (or one just resumed from pause) can take a minute to come up. The chat header shows "Connecting…", switching to "Waking your agent…" if the first connection is slow. Once live, an agent stays running between conversations — there is no idle wake-up.
- **Paused — trial ended** — the agent's free trial expired and its builder hasn't picked a plan. The composer is disabled; only the builder can resume it. See [Plans and billing](/plans-and-billing/).
- **Not live** — the agent has no live deployment yet (the builder created it but nothing is serving).

## The conversation

- **Streaming replies** — responses stream in live as the agent writes them, with Markdown formatting.
- **Generative UI** — agents built on Guuey's default MCP server don't just answer in text: tool results can render as interactive cards inline in the conversation. Generative UI is the [ggui protocol](https://docs.ggui.ai); see its docs for what agents can render.
- **Persistent history** — the agent keeps the conversation server-side, one thread per agent. Reopening a thread — from the Chats tab, or after a reload — replays the full transcript, including cards.

On desktop web, the Chats tab is a two-pane layout: your conversation list on the left, the open thread on the right.

## When an agent asks permission

Some things an agent won't do until you say yes, and it asks **inline in the chat** with a consent card:

- **Using a third-party service on your behalf** — when an agent's tool needs one of your accounts (say, your calendar), a card asks you to connect it. You authorize once per service; the card offers **Always allow**, **Allow this chat**, or **Not now** — Not now records nothing, so the agent may ask again.
- **Sharing your cross-app profile** — an agent that wants access to what other agents know about you asks with the same kind of card; here declining (**Don't allow**) is recorded, so the agent won't re-ask. The cross-app profile is rolling out per environment — see [State and memory](/state-and-memory/).

Answering the card resumes the turn. You can review or revoke everything you've granted later — see [Account & settings](/portal-account/) for the **Connected services** and **Profile sharing** screens. Revoking there is respected in chat: a service you've blocked for an app isn't re-asked for.

## Pairing a self-hosted server

Portal is a _universal_ client: alongside Guuey-hosted agents, it can pair with a self-hosted ggui server running on your own machine.

1. Run `ggui serve` locally — it prints a URL and a 6-digit pairing code (single-use, valid ~10 minutes).
2. In Portal, go to **Settings → Servers → Add a self-hosted server** and enter both.

Paired servers appear in the Servers list with a live status dot; tap one to make it the active origin, and Explore then browses that server's agents instead. Self-hosting itself is covered in the [ggui docs](https://docs.ggui.ai).