This is the full developer documentation for Guuey
# Build an agent. Guuey runs it.
> Bring a system prompt, a model, and the MCP servers your agent needs. Guuey hosts it on isolated, always-on infrastructure, streams every conversation in real time, and puts it in front of users — no agent loop, no polling, no servers to babysit.
Start here
[Getting started](/getting-started/)Zero to a deployed, live agent in minutes — no code required.
[Studio](/studio/)The no-code builder: describe your agent, pick a model, deploy in one click.
[CLI](/cli/)The code path: scaffold locally, bring your own framework code, guuey deploy.
Run
[Hosting & runtime](/hosting/)Isolated sandboxes, scale-to-zero pods, SSE streaming, persisted conversations.
[State & memory](/state-and-memory/)Managed history, a per-user KV store, durable home directories, consent-gated profiles.
Distribute
[Portal](/portal/)The agent App Store and universal chat client where users find and talk to your agent.
[Embed & share](/embed/)Two script tags put the chat widget on your own site; share links give anyone a hosted chat page.
[Build your own surface](/sdk/)The @guuey/agent-client SDK: streaming, status, and continuity for a fully custom chat UI.
[Generative UI (ggui)](/protocol/)Agents that keep the default MCP server reply with interactive screens, not just text.
***
**Where things live:** [guuey.com](https://guuey.com) is the platform — Studio, Portal, hosting, these docs. [docs.ggui.ai](https://docs.ggui.ai) documents the open **ggui** generative-UI protocol and its SDKs; this site documents the platform.
Reading these docs as an LLM? Every page is also raw markdown at the same slug — start at [`/llms.txt`](/llms.txt), or see the [machine-readable surface](/agents/).
# 404 — page not found
> Nothing lives at this URL. Try the home page, the getting-started guide, or the search box in the sidebar.
# For LLM agents
> Machine-readable resources for LLMs and coding-assistant devtools reading Guuey docs programmatically — aggregated dumps, per-page .md companions, stable anchors.
This page is for **non-human readers** — LLM agents, coding-assistant devtools (Claude Code, Cursor, Cline, Continue), evaluators, and scrapers. Humans, the rest of the site is for you.
## What’s available
[Section titled “What’s available”](#whats-available)
| Resource | URL | When to fetch |
| --------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------- |
| Entry point | [`/llms.txt`](/llms.txt) | First contact. [llms.txt format](https://llmstxt.org/) — links the abridged and complete dumps. |
| Whole-site dump | [`/llms-full.txt`](/llms-full.txt) | One-shot context loading. Drop into your window for cross-topic tasks. |
| Compact dump | [`/llms-small.txt`](/llms-small.txt) | Smaller one-shot context when `/llms-full.txt` is too big. |
| Per-page raw markdown | `/.md` | Reading one specific page. No HTML, no chrome. |
| Stable anchors | `/#` | Deep-linking to a section. Every H2/H3 has a Starlight-derived id. |
## Per-page `.md` companions
[Section titled “Per-page .md companions”](#per-page-md-companions)
Every page is also served as raw markdown at the same slug with a `.md` extension:
* [`/getting-started.md`](/getting-started.md) — zero to deployed agent
* [`/hosting.md`](/hosting.md) — the runtime model
* [`/cli.md`](/cli.md) — command reference
* [`/state-and-memory.md`](/state-and-memory.md) — persistence surfaces
The `.md` response is the source markdown with a small `---\ntitle: ...\n---` envelope and **no other transformation**. (A few pages are authored as MDX — their `.md` companion keeps the component imports as-is; treat those lines as noise.) Fetch from any origin:
```bash
curl https://docs.guuey.com/hosting.md
```
CORS is open (`Access-Control-Allow-Origin: *`); `Cache-Control` permits 5-minute CDN caching. Every HTML page also carries a `` pointing at its companion, so alternate-representation-aware fetchers can auto-discover it.
## When to use which
[Section titled “When to use which”](#when-to-use-which)
```plaintext
You want → Fetch
─────────────────────────────────────────── ──────────────────────
Find the machine-readable surface /llms.txt
Drop everything into context (one-shot) /llms-full.txt
Read one specific page /.md
Deep-link to a section in conversation //#
```
## Related machine-readable surfaces
[Section titled “Related machine-readable surfaces”](#related-machine-readable-surfaces)
The open ggui protocol (generative UI used by Guuey agents) documents itself the same way at [`docs.ggui.ai/llms.txt`](https://docs.ggui.ai/llms.txt) — fetch that too when your task involves the protocol wire surface or SDKs rather than the hosting platform.
# CLI
> Install the Guuey CLI, log in, define your agent in guuey.json, and deploy it to Guuey hosting.
The `guuey` CLI is the code path onto the platform: it scaffolds an agent project, runs it locally, and deploys it to Guuey hosting.
Note
Guuey is in early preview. The CLI is published and installable today, but you need a Guuey account to log in and deploy.
## Install
[Section titled “Install”](#install)
The CLI ships on npm as [`@guuey/cli`](https://www.npmjs.com/package/@guuey/cli):
```bash
npm install -g @guuey/cli
guuey --version
```
## Log in
[Section titled “Log in”](#log-in)
```bash
guuey login
```
This opens your browser, authenticates you with your Guuey account, and delivers an API key back to the CLI via a localhost callback. For headless or CI use, pass a pre-minted API key instead:
```bash
guuey login --token guuey_user_...
```
Check who you are with `guuey whoami`; clear credentials with `guuey logout`.
## The agent definition: guuey.json
[Section titled “The agent definition: guuey.json”](#the-agent-definition-guueyjson)
Every project is described by a single `guuey.json` at the project root. The `agent` section is the deployable definition — framework, model, system prompt, and MCP servers. A minimal valid file:
```json
{
"schema": "1",
"agent": {
"framework": "claude-agent-sdk",
"model": "claude-sonnet-5",
"systemPrompt": { "file": "prompts/system.md" }
}
}
```
Everything else defaults. Notably, `agent.mcpServers` defaults to the `ggui` server at `https://mcp.ggui.ai`, which gives your agent generative UI out of the box — see the [ggui docs](https://docs.ggui.ai) for what that enables. Servers you declare merge on top of the default; the platform is otherwise MCP-server-agnostic.
Create the file in an existing directory with:
```bash
guuey config init
```
The CLI stamps the app’s `appId` into the file after your first deploy — you don’t write it by hand. (`workspaceId` is only needed when you deploy hosted MCP servers, supplied via `guuey.json`, `--workspace`, or `$GUUEY_WORKSPACE`.) Secrets never go in `guuey.json`; use `guuey env set KEY=VALUE`.
## Create a project
[Section titled “Create a project”](#create-a-project)
Start from a working scaffold:
```bash
guuey create my-agent --framework claude-agent-sdk
```
Supported frameworks for `create` are `claude-agent-sdk` and `openai-agents-sdk`. You can also scaffold without installing the CLI first:
```bash
npx @guuey/create-agentic-app my-agent
```
## Deploy
[Section titled “Deploy”](#deploy)
```bash
guuey deploy
```
`deploy` auto-detects which of two modes your project uses:
* **Declarative mode** — `guuey.json` only, no build step. Your agent is the definition: prompt, model, MCP servers.
* **Code mode** — builds and deploys your `guuey.worker.js` worker bundle (or uses a root `Dockerfile` if present), deploying your MCP servers, generative UI registration, and the agent itself in one command.
Force a mode with `--declarative` or `--code`. Pick a runtime pod size with `--size` (`xs` | `sm` | `md` | `lg` | `xl`, default `xs`) and tag the version with `--label`.
After deploying:
```bash
guuey test "hello" # send a test message, print the response
guuey logs --follow # live-tail runtime logs
guuey deployments list # list deployment builds
guuey undeploy # tear down the deployment (keeps the app)
```
## Local dev
[Section titled “Local dev”](#local-dev)
Run your built worker locally behind the same SSE endpoint the hosted pod serves:
```bash
guuey dev --serve --port 6790
```
This gives you pod-parity iteration: `POST /agent/invoke` against localhost before you deploy. (Plain `guuey dev` — a device bridge with a QR code — is coming soon; the CLI says so itself.)
## Beyond the basics
[Section titled “Beyond the basics”](#beyond-the-basics)
The CLI also manages apps (`guuey apps create|list|get|update|delete`), hosted MCP servers (`guuey mcp deploy|list|status|logs|delete|secrets`), environment variables (`guuey env set|list|unset`), and worker conformance (`guuey worker verify`). Run `guuey --help` for the full surface, and `guuey open dashboard` to jump to the console.
# Embed & share
> Put your agent on your own website with the two-script widget embed, or share it as a hosted chat page — anonymous or signed-in, always on your allowed domains.
## Embed on your site
[Section titled “Embed on your site”](#embed-on-your-site)
Any deployed agent can live on your own website as a chat widget. The widget runs in an iframe on guuey’s origin, so it never touches your page’s cookies, storage, or scripts — the only thing you add to your site is two `
```
Paste it anywhere in your HTML — before `