Element anchors
Threads bind to structural element identity, so they reattach after reloads, rebuilds, and routine redesigns.
Open display attribution; the host remains the identity owner.
Embeddable annotation for web apps
Gloss drops a realtime discussion layer into your web app. Pin a thread to any element or region, keep every word anchored to the thing it’s about, and resolve decisions in place.
The dashboard below is a real Gloss target — enter annotation mode and click it, or drag across a region.
How it works
One framework-neutral package. React hosts can take the lifecycle adapter instead — SSR-safe, with the renderer kept behind the package boundary.
bun add @celados/gloss-annotatorPoint it at your Gloss Project. Hosted realtime is already wired, and supported browsers can attach native visual evidence; your page stays untouched until someone starts annotating.
Click any element — or drag across a region — and a thread opens right there. Everything syncs live and resolves without erasing history.
import { createAnnotator } from '@celados/gloss-annotator'
import '@celados/gloss-annotator/style.css'
const gloss = createAnnotator({
projectId: 'your-project-id',
})
// the launcher appears; your page is now a surface
gloss.start()
React host? Wrap your tree with <GlossProvider projectId="…"> from @celados/gloss-react and drive it with hooks.
Built in, not bolted on
Threads bind to structural element identity, so they reattach after reloads, rebuilds, and routine redesigns.
Drag any rectangle inside a container. When HTML-in-Canvas is available, Gloss attaches browser-native visual evidence; otherwise the Region remains structural.
Comments, replies, and resolution sync live over a Convex backend. No refresh, no handoff archaeology.
Your app asserts who is speaking — ID, name, avatar, traits. Gloss never authenticates your users.
Resolved threads leave the canvas but keep their history. Reopen any time — decisions stay auditable.
Copy a thread as Markdown or export the page as JSON when a conversation should become an issue.