Skip to main content

server-plugins

Framework server plugins and the `/_agent-native/` route namespace. Use when adding a custom server plugin, deciding whether to create an `/api/` route vs an action, or debugging auto-mounted framework routes.

Source facts

Repository
BuilderIO/agent-native
Last source activity
June 23, 2026 at 13:59
Detected SKILL.md language
English
Stars
7,449
Forks
681

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
server-plugins
description
Framework server plugins and the `/_agent-native/` route namespace. Use when adding a custom server plugin, deciding whether to create an `/api/` route vs an action, or debugging auto-mounted framework routes.
scope
dev
metadata
{"internal":true}
# Server Plugins & Framework Routes ## Default Plugins (auto-mount) Five default plugins auto-mount when your app doesn't have a custom version in `server/plugins/`: | Plugin | Default behavior | Customize when | | ------------- | ------------------------------------------------- | ------------------------------------------- | | `agent-chat` | Agent chat endpoints | Custom `mentionProviders` or `systemPrompt` | | `auth` | Auth middleware | Custom `publicPaths` or Google OAuth config | | `core-routes` | `/_agent-native/poll`, `/_agent-native/ping`, etc | Custom `envKeys` or `sseRoute` | | `resources` | Resource CRUD | Rarely | | `terminal` | Terminal emulator | Rarely | **Only create plugin files for plugins you need to customize.** Let defaults auto-mount. ## Framework Route Namespace: `/_agent-native/` All framework-level routes live under `/_agent-native/` to avoid collisions with template-specific `/api/*` routes. ### Hard rule - **ALL framework routes go under `/_agent-native/`.** - Templates own `/api/*` only for route-only domain concerns such as uploads, streaming, webhooks, OAuth callbacks, or non-JSON protocols. - Never put framework routes under `/api/`. - Never put template routes under `/_agent-native/` — that namespace is reserved. - Never create `/api/*` routes that only wrap, proxy, or re-export actions. Use the existing `/_agent-native/actions/:name` endpoint or the React action hooks. ### Auto-mounted framework routes | Route | Purpose | | ------------------------------------------------------------- | ---------------------------------------- | | `GET /_agent-native/poll` | Polling endpoint for DB change detection | | `GET /_agent-native/events` | SSE endpoint for real-time sync | | `GET /_agent-native/ping` | Health check | | `GET/PUT/DELETE /_agent-native/application-state/:key` | Application state CRUD | | `GET/PUT/DELETE /_agent-native/application-state/compose/:id` | Compose draft CRUD | | `POST /_agent-native/agent-chat` | Agent chat SSE endpoint | | `GET /_agent-native/agent-chat/mentions` | Mention search for @-tagging | | `GET /_agent-native/env-status` | Env key configuration status | | `POST /_agent-native/env-vars` | Save env vars | | `/_agent-native/auth/*` | Authentication (login, session, logout) | | `/_agent-native/google/*` | Google OAuth (callback, auth-url, etc.) | | `/_agent-native/resources/*` | Resource CRUD | | `/_agent-native/actions/:name` | Auto-mounted action endpoints | | `/_agent-native/available-clis` | Available CLI tools | | `/_agent-native/agent-terminal-info` | Terminal connection info | | `/_agent-native/collab/*` | Real-time collaboration (see `real-time-collab`) | | `/_agent-native/a2a` | A2A JSON-RPC endpoint (see `a2a-protocol`) | ## Actions-First Approach For standard CRUD and data operations, use `defineAction` in `actions/` — the framework auto-mounts them as HTTP endpoints at `/_agent-native/actions/:name`. Only create custom `/api/*` routes for things actions can't do: - File uploads with multipart form data - Streaming responses - Webhooks from external services - OAuth callbacks Before adding a route, inspect the existing action files. Reuse the action if it already encodes the business rule, or add a new action if the operation should be available to both the agent and the UI. A route whose implementation mostly calls an action is usually the wrong abstraction. The Nitro Vite plugin handles both `/api/` and `/_agent-native/` prefixes via file-based routing in `server/routes/`. ## Related Skills - `actions` — Prefer actions over custom `/api/` routes - `authentication` — Auth middleware and session handling - `portability` — Use H3 (not Express) for all routes
View on GitHub