One bar. Every product.
A floating web component that embeds in every Cuitty app. See live status from all products, toggle feature flags, and trace user interactions — without switching tabs.
Click the icons below to explore panels. Toggle flags. It's all interactive.
One bar across eight products.
The toolbar surfaces live data from every Cuitty product. Each registers a badge, panel, and event stream — so you never leave your app to check status.
Open PR count · CI health status
Recent PRs, active CI runs, latest push
Sync status · connected peers
Store list, sync progress, conflict queue
Active environments · pending promotions
Env list, promote button, Terraform plan status
Events/sec throughput · error count
Live event stream, module health, dashboard links
Render queue depth · active jobs
Recent renders, preview links, progress bars
Active runs · health (passing/failing)
Active/recent runs, playbook list, review mode
Suite status (passing/failing/running)
Recent results, failing tests, Test Studio link
The launcher itself — always present
Home panel — actor info, project, portal links
Cross-product features
Toggle without deploying.
Grouped flags with rollout %, status chips, toggle/kill switches, and self-overrides. All actions gated by SpiceDB permissions.
See what every element emits.
Highlight DOM elements bound to Observe events. See event type, module target, and payload shape. Click to jump to the trace.
Real-time events from every product.
Live event feed filtered to your project. Audit, deploy, trace, and error events from all 8 products. Each links to its full Observe trace.
Embed in 60 seconds.
One script tag, one Astro integration, one React component, or one Vite plugin. Pick your stack.
<!-- Drop this into any HTML page -->
<script
src="https://cdn.cuitty.com/toolbar.js"
data-cuitty-toolbar
data-portal-url="https://your-cuitty.example.com"
data-project-id="my-project"
></script>Configuration.
| Attribute | Type | Default | Description |
|---|---|---|---|
| portal-url * | string | — | Required. Base URL of your Cuitty portal. |
| project-id * | string | — | Required. Project identifier. |
| position | "bottom-center" | "bottom-left" | "bottom-right" | "bottom-center" | Where the launcher pill appears. |
| tenant-id | string | — | Tenant/org identifier for multi-tenant setups. |
| environment | string | — | Environment label (production, staging, dev). |
| actor-token | string | — | Bearer token for authenticated sessions. |
| enabled | boolean | true | Set to false to render the element but not mount. |
| host-app | string | — | Name of the host application (shown in Home panel). |
Build your own toolbar app.
Every icon in the launcher is a toolbar app registered via a typed manifest. Define an app, serve a badge endpoint, render a panel, and gate it with SpiceDB permissions.
import { defineToolbarApp } from "@cuitty/toolbar-module-sdk";
export const myApp = defineToolbarApp({
id: "my-module",
name: "My Module",
category: "custom",
icon: { type: "lucide", name: "Box" },
surfaces: { launcher: true, panel: true },
entrypoint: {
type: "iframe",
url: "/api/my-module/toolbar-panel",
},
badge: {
endpoint: "/api/my-module/toolbar-badge",
refreshIntervalMs: 30_000,
},
}); // GET /api/my-module/toolbar-badge
export function handler(req: Request) {
const count = getActiveItemCount();
return Response.json({
severity: count > 0 ? "info" : undefined,
count: count > 0 ? count : undefined,
tooltip: `${count} active items`,
});
} import { ToolbarPanelBridge }
from "@cuitty/toolbar-module-sdk";
const bridge = new ToolbarPanelBridge();
// Resize the panel
bridge.resize({ height: 400 });
// Navigate the host app
bridge.navigate("/dashboard/my-module");
// Proxy API through the toolbar transport
const data = await bridge.request(
"GET", "/api/my-module/items"
); import { requireToolbarPermission }
from "@cuitty/toolbar-module-sdk";
// In your panel's request handler:
export function panelHandler(req: Request) {
const envelope = getToolbarEnvelope(req);
// Throws 403 if actor lacks permission
requireToolbarPermission(
envelope,
"my-module:read"
);
return renderPanel(envelope);
} Permissions are enforced by SpiceDB. The toolbar disables buttons and shows a tooltip when the actor lacks access.
What's in the box.
Product badges
Live status from Code, Persist, Observe, Video, Pilot, and Tests. Active runs, build health, sync status, and test results at a glance.
Feature flag panel
Toggle flags, view rollout percentages, and kill-switch experiments without leaving the app you're working in.
Event analytics
Every toolbar interaction emits structured events. Correlate toolbar usage with product events for full traceability.
Custom panels
Modules register toolbar apps via a manifest. Badge endpoint for the icon, panel URL for the flyout. Build your own.
Start embedding the toolbar.
One script tag. Live product status, feature flags, inspect mode, and a real-time event stream — without leaving your app.