Introducing Agent Mode
Agent mode in your app with the Guuey SDK: your users ask inside your product, and the answer comes back as a working interface drawn for the request.
Read as .mdAgent Mode is the deeper of Guuey’s doors: agent mode in your app with the SDK, so people inside your product can ask for what they need and get an interface built for it. It ships as 2 packages on npm, and the docs mount it in 10 lines.
The film above shows what that looks like, as an animated walkthrough. The app is acme, a billing product we made up for the film, and its user needs her August invoices and stalls in the menus. She asks instead. “Export my August invoices” comes back as an export card listing the three invoices and their total; “Update my billing address” comes back as a billing details form with her address already filled in. No one designed those two screens in advance. Each time, the agent said what it meant to do, and the interface worked out its own buttons.
What changes for your users
The first post put a rep on your landing page with one script tag, and the post after this one is a tour of the Trimly demo. That door is for visitors who have not signed in yet, with questions about what you do and what it costs. Agent Mode is for the people already inside your product, the ones who know exactly what they want and still have to go and find it. They open the place in your app where the agent lives, say it, and the answer is the screen that does it: an export ready to download, a form with their details already in place, a table for the numbers they asked about. The account is theirs, so the agent works on their data and nobody else’s, and the tools it can reach are the MCP tools you allow.
The SDK, in two packages
The embed is code, and there is little of it. @guuey/agent-client is a typed client for your deployed agent’s streaming contract: it opens the invoke stream, folds it into a flat transcript, and reads persisted history so a returning user continues the conversation they left. It ships 3 entry points, and the root one never imports React, so it fits a plain page as well as a framework. On top of it sits @guuey/chat, the default transcript experience: streaming markdown, tool activity folded into quiet one-liners, generative-UI views mounted inline, and cold starts and failures drawn as designed states instead of empty space. The docs mount it in 10 lines. Three props cover most products; everything beneath the props is exported too, so you can swap a single component and keep the rest.
You need 2 values from your deploy, the app id and the endpoint URL, and one command before production: allow your domain.
npm install @guuey/agent-client @guuey/chat @guuey/cli
npx guuey apps update <appId> --domains "yourapp.com"
npx guuey apps check --origin https://app.yourapp.com
The check sends a real browser preflight to your live endpoint and prints the verdict, so a misconfigured origin shows up in your terminal instead of as an unexplained failure in a customer’s browser.
What runs behind it
Every app gets a runtime of its own: a pod that stays up between conversations, streams each reply to the browser directly, and keeps the conversation history without you running a store. The agent is one declarative file, the system prompt plus the model plus the MCP servers it may call, and that same file runs on your laptop under guuey dev and on Guuey after guuey deploy. Every agent runs in a gVisor-isolated pod. The generative UI comes from Guuey’s default MCP server; it speaks ggui, an open protocol kept as a project of its own, and swapping in another server changes nothing on the SDK side.
No-code or CLI, your call
The console builds an agent without code: name it, pick a framework, describe who it serves and what it should do, and watch the status climb to live; the playground lets you try it before anyone else does. The CLI does the same for developers, with 3 framework runners to choose from and a scaffold that runs locally first. Either way you end up with the same deployed agent, and the SDK embeds it the same way.
Where it meets your users
Inside your app, with the SDK, is the point of this post. The same agent also has a shareable page on app.guuey.com, and the widget is still there for your landing page. One agent, three surfaces, and you choose which of them your users see.
The honest print
A few things this post would be dishonest to skip. Every agent pod, no-code and code-mode alike, runs under gVisor, as do the MCP servers you host on Guuey; the pod is also its own namespace on a default-deny network, and every customer app gets the same boundary. The SDK is TypeScript first: the transcript kit renders on the web with React and on React Native with the same view-model, and any other stack gets the framework-free client and builds its own surface. Generative UI depends on a server that speaks ggui, so an agent pointed at a plain MCP server answers in text. And OAuth-protected MCP servers connect through Guuey’s own client identity, registered dynamically or through client-ID metadata; a server that only accepts a pre-registered client is not supported yet.
Try it
Start at guuey.com/agent-mode, read the SDK docs and the chat kit docs, and put the two packages on a page of yours this week. Every app begins with a 7-day free trial, and Guuey is in public beta preview, so anyone can sign up. Tell us what your users asked for first.