Agents
AI agents with a system prompt, a chosen model, scoped tools, and managed reliability.
An agent is the smallest unit of execution in Alumia. Every agent has a system prompt, a chosen model, a set of tools it's allowed to call, and a session that holds its conversation history.
Anatomy of an agent
| Field | Purpose |
|---|---|
| System prompt | Defines identity, behavior, and constraints. |
| Model | One of 38 visible models across 14 providers. Swap any time from the agent detail page — and an agent can switch its own model at runtime with set_agent_model when you explicitly ask it to. |
| Runtime settings | Optional per-agent settings in agent config: Fast mode maps supported models to a faster catalog sibling at chat time; Reasoning effort (low / medium / high) applies to OpenAI reasoning-capable models only. |
| Tools | Built-in tools and connector-backed tools the agent can call. |
| Skills | Optional platform expansion skills that gate bundled tool sets. |
| Memory | Long-term context stored in pgvector and recalled per query. |
| Workspace | A primary workspace, optionally shared into others via agent_workspaces. Ala is visible everywhere. |
How an agent runs
Agents run on the AI SDK v6 (ai package) under the hood. Calls flow through provider-specific adapters (@ai-sdk/anthropic, @ai-sdk/openai, …) with retries, streaming, and tool-call handling managed by the platform.
When you send a message, the runtime builds the prompt, attaches available tools, streams the response, and emits canvas activity events live so collaborators see what's happening as it happens.
The default agent: Ala
Every org ships with Ala, a shared agent visible from every workspace and every project. Ala is org-scoped, active by default, and can't be deleted. Use Ala when you want a single agent that already knows about your whole org; create new agents when you want specialised behavior. A created agent can be shared into multiple workspaces when several teams need it.
Canvas-aware behaviour
The platform's system prompt instructs every agent on how to compose canvas blocks well. Specifically:
- Three-path block model. Default to
data_blockwith a typedDataSpecfor structured displays. Useshowonly for the 13 interactive system primitives. Useapp_createonly when the user explicitly asks for a custom app. - Search before creating. Call
search_blocks(orlist_blocksfor a full inventory) before emitting a new block of the same purpose — update the existing block instead of duplicating. - Compose workboards. When a response needs several related blocks, call
compose_canvasonce so the user gets a complete grouped workboard on the existing canvas. Userecompose_canvasto update an existing grouped workboard rather than creating a second copy. - Patch, don't replace. Use
search_blockto find JSON Pointer paths, thenupdate_blockwithpatchfor surgical edits. - Variant whitelists (
default | secondary | destructive | outline | ghost | mutedfor buttons,success | warning | destructive | info | mutedfor status, etc.) — agents never invent variants. - 2026 colour palette — 12 curated hex values (
slate,azure,iris,emerald,sage,amber,honey,rose,violet,teal,fuchsia,cloud) for chart series, callout markers, or any field that takes a hex. No neon, no invented colours. - Simplify ruthlessly — agents strip optional fields when empty, omit filler copy ("Welcome to your…", "Discover amazing…"), keep tables to 3–5 columns unless the user asks for more, use
font-medium/font-semiboldfor headings (neverfont-bold), and reserverose/emeraldfor genuine errors/successes. - Social posts include media. Tweets, X / LinkedIn / Bluesky / Threads drafts call
image_savefirst and attach the resultingfileIdtomedia.fileId. A tweet without media looks unfinished. - No external
https://URLs in image fields. The agent saves images viaimage_saveand references them byfileId; the renderer resolves to a CORS-safe URL.