Minimal chat-first app with durable threads, actions, and the app-agent loop
io.github.BuilderIO/agent-native-chat is a minimal, chat-first application that supports durable threads, actions, and an app-agent loop. The server centers on conversational interaction while maintaining persistent conversation state and enabling action execution through an agent workflow.
🛠️ Key Features
Chat-first interface
Durable threads
Actions
App-agent loop
🚀 Use Cases
Building minimal chat-based applications
Running workflows that require persistent conversation history
Executing actions within an agent-driven app loop
⚡ Developer Benefits
Clear chat-first structure
Persistent thread handling for multi-turn interactions
Action support integrated with an app-agent loop
⚠️ Limitations
Only high-level capabilities are provided here: no additional implementation details, tool count, or documentation excerpt are available in the provided source data.
Agent-Native is an open-source TypeScript framework for building agents that pair autonomous work with a purpose-built UI. Define each capability once as an action: the agent uses it as a tool, and the UI calls it from code.
Coding agents work with more than a text box. Their environment provides context, tools, files, tests, and previews that make their capabilities and results visible.
Knowledge work needs that same kind of environment. A UI shows what an agent can do and gives people familiar ways to inspect, edit, approve, and share its work.
How Agent-Native works
Shared actions. The agent calls each capability as a tool, and the UI calls it from code. Both paths use the same validation, permissions, and implementation.
Shared data. Work done by the agent appears in the UI, and work done in the UI is available to the agent.
Shared application state. The agent receives relevant UI state, such as the current page, selected record, or active view.
The agent does not click through the UI. It works through the same action layer as the UI.
Example: a shared action
Create actions/hello.ts:
ts
import { defineAction } from"@agent-native/core/action";
import { z } from"zod";
// One action powers every app surface: UI, agent, HTTP, MCP, A2A, and CLI.exportdefaultdefineAction({
description: "Return a friendly greeting.",
schema: z.object({
name: z.string().default("world").describe("Name to greet"),
}),
http: { method: "GET" },
run: async ({ name }) => {
return { message: `Hello, ${name}!` };
},
});
The agent receives hello as a tool. React calls the same function with useActionQuery("hello", { name: "Alex" }). Agent-Native also exposes it through HTTP, MCP, A2A, and the CLI.
Included
Agent chat: Let people delegate work, ask questions, and review results in the same UI.