- Chat — an authenticated web chat available inside the Noxus platform (or at a deployment URL) for users in your workspace.
- Widget — an embeddable chat widget you can drop onto any website, letting external visitors talk to the agent.
Both the Chat and the Widget include a built-in conversation history panel — users can pick up any of their previous conversations where they left off or start a brand-new one at any time.
Chat Deployment
Chat is the quickest way to put an agent in front of a user. No setup is needed beyond publishing the agent and choosing who is allowed to use it.
Deployment
A published version is required before you can set a deployment to Online. Switch the deployment to Offline before editing its configuration.
Access
Control who in your workspace can open the chat.Branding
Override the default Noxus look and feel to match your brand.Pick fairly light colors — chat text is rendered in black, so dark backgrounds make messages hard to read. When you edit the main color, the system automatically derives a matching accent color; you can override it afterwards if you’d prefer a different pairing.
Widget Deployment
The Widget is an embeddable chat that can live on any public website. It shares the agent’s configuration with the rest of the platform, but exposes a public front-end that anonymous visitors can use.
Every label and image shown above is customizable in the Widget content and Branding sections as described below.
Setting Up the Widget
1
Create a Widget deployment
On the agent’s Deployments page, create a new Widget deployment and publish a version.
2
Copy the embed snippet
Once the deployment is Online, Noxus generates an embed snippet you can paste into your website’s HTML.

3
Paste the snippet on your site
Add the snippet to any page where the widget should appear. Visitors will see the chat bubble in the corner and can start a conversation without signing in.
Deployment
Widget content
Copy shown to visitors in the widget UI. Every field is optional — leave blank to use the defaults.Branding
Access & security
By default the widget is fully public: it can be embedded on any site and anyone who loads it can chat. Two independent, opt-in controls let you lock that down.Domain locking
Restrict which websites are allowed to embed the widget. When enabled, Noxus emits aContent-Security-Policy: frame-ancestors header so browsers refuse to render the widget anywhere else.
Authentication
Host page integration (signed token)
When Signed token mode is on, your embedding page supplies a token that Noxus validates on every request. Define a provider function before loading the embed snippet:window.NOXUS_EMBED_TOKEN = "<jwt>" is also supported, but a provider function is preferred because it can return a fresh token when the previous one expires.
Your backend mints the JWT after authenticating the user. Required and optional claims:
The token is delivered to the widget over
postMessage and sent to Noxus in an x-embed-token header — it never appears in the page URL.
Authenticate as a Noxus user (noxus_user)
Choose Noxus user when the agent should run as the visitor’s real Noxus account — it can read and act on everything that user can in Noxus. Authentication is a Noxus-issued JWT your integration obtains and relays as a bearer token; it does not rely on browser cookies (third-party cookies are blocked inside cross-origin iframes, so cookie-based sessions aren’t reliable here).
Noxus is the authorizer: the user consents, Noxus mints an ES256 access token (≈1h) signed with a platform keypair, and your page relays the access token to the widget. Each authorized client is revocable from Settings → Authorized clients.
Recommended: the Noxus consent popup (no backend, no CORS)
For a website with no backend, open the Noxus-hosted consent popup and wait for the token — the whole flow runs on the Noxus origin, so your page never makes a cross-origin call:origin against the deployment’s Allowed domains and delivers the token via postMessage scoped to that origin, so it can only reach the page you authorized. When the token expires, the provider is called again and re-opens the popup — silent if the Noxus session is still valid.
Alternative: server-side PKCE (browser extensions, host backends)
If you have a backend (or you’re a browser extension), run the PKCE flow and exchange the code server-side, then relay the access token the same way. This is the flow the Noxus Copilot extension uses.1
Authorize (PKCE consent, per device)
With the user signed in to Noxus, send them to the consent page with a PKCE
code_challenge and your redirect_uri. On consent, Noxus registers a device and redirects back with a one-time code.2
Exchange the code for tokens
access_token, refresh_token, and expires_in.3
Relay the access token to the widget
Authorization: Bearer; Noxus verifies the signature, checks the device is still active, and runs the conversation as that user.4
Refresh before expiry
Domain locking is recommended for
noxus_user but not required: a forged token fails signature verification server-side no matter where the widget is framed, so the JWT — not the frame origin — is the security boundary.Page context
A host page (e.g. a browser extension or your own app) can feed the agent what the user is currently looking at, so it can answer with that context in mind — the record open in your CRM, the article being read, the cart contents, etc.- Enable Accept page context from the embedding page in the widget deployment’s Access & security settings. It’s off by default; only turn it on for embeds you trust, since the context is client-supplied.
- From the host page, push context whenever it changes: