Surfaces
Custom views of a trace that open as tabs next to Highlights and Full Trace.
A surface is a single HTML file that renders one view of a trace: a token bill, a timeline of tool calls, a list of failed commands, or anything else you can build from the session's messages. Surfaces open as extra tabs on the trace page, next to Highlights and Full Trace.
Anyone can write a surface. Public ones are listed in the surfaces marketplace, and your team can keep private surfaces for its own traces.
How surfaces work
- Tabs on the trace page. Open a surface from the trace page's surface picker, or add it once so it opens on every trace you view. See Adding surfaces.
- Owned by a namespace. Every surface belongs to your personal namespace or an organization. The namespace decides who can edit it and who can see it.
- Versioned. Each upload is an immutable version. The surface shows its current version to everyone, so you can upload and try a new version before switching to it, and switch back at any time.
- Sandboxed. Surfaces run in a locked-down frame with no network access, no cookies, and no access to the rest of the page. They only receive the trace they're shown on.
Where to find surfaces
| Page | What it's for |
|---|---|
/surfaces | Browse public surfaces. Surfaces from the Traces team are under Featured. |
/surfaces/<key> | A surface's page: description, creator, current version, and a live preview. |
/surfaces/create | Create a surface and upload its first version. |
/<namespace>/surfaces | Every surface a namespace owns, private ones included. Visible to members who can manage surfaces there. |
Next steps
Adding surfaces
Browse the marketplace, preview a surface, and keep it open on every trace.
Creating surfaces
Have your coding agent build one, or upload an HTML file from the web app.
Managing surfaces
Edit details, upload versions, change the current version, and choose who can use it.
Surfaces with MCP
Create, update, and release surfaces from your coding agent through Traces MCP.