What Surface Looks Like
This is a static preview of the kind of experience Surface enables: agent chat, validated Adaptive Cards, routed actions, and render diagnostics in one Blazor command center.
Approve rush replacement order?
The vendor price is 7.8% above the standard threshold, but the downtime estimate is higher than the variance.
Chats and Channels
Surface can frame agent work as a workspace: direct chats for focused work, channels for multi-agent collaboration, and shared timelines that keep people in the loop.
# vendor-review
Surface is the screen layer for FabrCore agents. Instead of an AI trying to invent HTML, it sends a structured Adaptive Card that your app can validate, render, and wire to trusted actions. If you're a business owner: this is how agent work becomes buttons, approvals, forms, dashboards, and status updates inside the tools your team already uses.
What It Does
FabrCore Surface is an Adaptive Cards bridge for FabrCore agents and Blazor apps. It turns agent output into a controlled visual contract: a versioned envelope, an Adaptive Card, optional data, and metadata for routing.
The key design choice is restraint. Surface does not ask agents to emit Razor, HTML, JavaScript, custom UI schemas, or arbitrary routes. Agents either send deterministic Adaptive Card envelopes or use a configured planner model to produce the same envelope shape. The host validates the result before rendering.
Render
Agents publish ui.render messages carrying Adaptive Card Surface envelopes through FabrCore messaging.
Validate
Hosts enforce schema version, payload size, action types, target-agent rules, URL policy, and card parser compatibility.
Route
Adaptive Card actions dispatch to trusted app handlers, agent follow-up messages, or both with explicit routing data.
That makes Surface a practical UI boundary for distributed agents: flexible enough for approvals, forms, lists, and operational dashboards, but narrow enough for production apps to reason about and secure.
The Command Center
Surface includes a routable Blazor command center for owner-to-agent work.
| Feature | What It Enables |
|---|---|
| Agent directory | Loads owner-tracked agents and optionally includes shared agents available through access-control rules. |
| Agent chat | Sends commands to selected agents with fire-and-forget delivery by default, so agents can publish progress and final responses asynchronously. |
| Live status | Tracks health and system traffic such as _status, _thinking, and _error without polluting the normal transcript. |
| Adaptive cards | Renders validated ui.render envelopes inline in the chat timeline through the same Surface contracts used by embedded components. |
| Create Agent | Optional builder that discovers agent types, plugins, tools, models, aliases, streams, args, and MCP servers from the FabrCore host API. |
| Diagnostics | Optional panel and render/action metadata for validation results, action counts, target handles, and LLM/service troubleshooting. |
How It Works
- An agent chooses a view. It creates an
AdaptiveCardSurfaceEnvelopedirectly or asks a configured planner model to produce one. - Surface sends a render message. The payload is serialized as
application/vnd.fabrcore.surface.adaptive-card+jsonon aui.rendermessage. - The Blazor host receives it.
DynamicAgentSurfaceor the command center listens through the current user/client context. - The card is expanded and validated. Surface applies template data, enforces host policy, and rejects unsafe or unsupported cards.
- Actions route explicitly.
Action.ExecuteandAction.Submitcan call trusted app code, send a follow-up agent message, or do both.
Business side effects stay behind the application boundary. Surface moves intent and UI safely; the app still owns authorization, data validation, and workflow mutation.
Key Capabilities
Adaptive Card Contract
A stable envelope carries card, data, metadata, version, and id. The UI contract stays portable across agents and Blazor hosts.
Embedded Surface
DynamicAgentSurface gives product teams a drop-in way to render live agent cards in existing Blazor screens.
Action Helpers
SurfaceActions produces canonical action data for app, agent, and combined routing without hand-built payloads.
User-Scoped Delivery
The built-in Surface agent can deliver cards to explicit target handles through message args or envelope metadata.
Config Profiles
fabrcore-surface.json profiles define planner models, required actions, and validation policy for repeatable deployments.
Diagnostics
Render diagnostics expose planned, validated, rejected, and rendered action counts so teams can troubleshoot agent UI safely.
Interested in Surface?
Surface is experimental and actively evolving. If your agents need trusted cards, approvals, forms, or a command center inside a Blazor app, we’d love to compare notes.