Architecture
At its base an App is a microservice with certain predefined and required routes.
/meta
This route returns the metadata for the App. This will be used to determine the capabilities, name, version, description …
Code
id: Optional URL-safe routing id (pattern ^[a-z0-9][a-z0-9._-]*$). Used as the /plugin/{id} path segment for standalone Apps; falls back to a slug of name if omitted.
icon: Optional absolute http(s) or data: URI, shown on the Apps page.
standalone: Optional boolean (default false); marks an agent-less, top-level App. See Standalone apps.
hasAdminChatPage: If a view should be displayed in the agent admin section. If true a route at /admin is required and must return an HTML page.
hasUserChatPage: If a view should be displayed in the user's chat section. If true a route at /user is required and must return an HTML page.
hasKnowledgeProvider: If true a route at /knowledge is required. Read more about knowledge routes.
hasCron: Optional boolean; when true, SAALT Core POSTs /cron to the App every 5 minutes with body { agentIds: string[] }. The App should respond 200 immediately (30s timeout).
Required App Routes
Which routes your App must implement depends on the capabilities and meta flags it declares:
| Route | Required when | Purpose |
|---|---|---|
/meta | Always | Returns the App metadata (capabilities, name, version, …). |
/user | hasUserChatPage | Renders the user chat page. |
/admin | hasAdminChatPage | Renders the admin chat page. |
/tools | App defines tools | Lists tool definitions and handles tool execution. See Tools. |
/knowledge + /knowledge/getDocument | hasKnowledgeProvider | Provides knowledge documents. See Knowledge. |
/cron | hasCron | Receives the scheduled cron POST (see above). |
For standalone Apps, these surfaces are served without an agentId.