Put your own name and logo on it
Prism runs on your infrastructure, in front of your engineers. Out of the box it calls itself Prism, which is the right answer while you are evaluating it and the wrong one once you have rolled it out internally under a name of your own.
Two values change that: what it calls itself, and the mark it wears. Nothing else is themeable — there are no colour or stylesheet overrides, deliberately — and both values are optional, so an install that leaves them alone is exactly the install you had before.
What changes, and what does not
Setting branding.productName replaces the word Prism in the browser tab
and in the heading of every page. The rest of each heading is the page, and it
stays: with the name set to Acme Lighthouse the chat page reads
Acme Lighthouse · ROI Insights, the admin page reads Acme Lighthouse
admin, and the self test reads Acme Lighthouse · Built-in Self Test. So
set the product name alone — Acme Lighthouse, not
Acme Lighthouse ROI Insights.
What it does not change:
- The answers. Ask Prism about itself and it still says Prism. The name is page furniture, not something the model has been told.
- These docs, in any of the three places you can read them.
- Anything inside Kubernetes — the release name, the namespace, the object
names, the images. Nothing about
helm,kubectlor your registry changes.
Setting the name
branding:
productName: "Acme Lighthouse"
Then helm upgrade as usual. It takes effect when the app pod restarts, which
that upgrade does for you. It is plain text: markup in it is escaped and shown
as characters, not rendered.
Setting the logo
The logo has one constraint worth understanding before you prepare the file: it travels inside the install, as SVG source. It is not a URL. Prism may have no route out of your network and must not depend on one to draw its own header — the same reason its browser libraries are baked into the image rather than loaded from a CDN — so the mark itself lives in your values file and is rendered straight into the page.
That means SVG, not PNG or JPEG. If what you have is a raster export, ask whoever owns your brand assets for the vector original; it is what they drew it in.
Supply it with --set-file rather than pasting it into the values file:
helm upgrade prism ./prism-<version>.tgz \
-f my-values.yaml \
--set-file branding.logoSvg=./acme-lighthouse.svg
If you would rather keep everything in one file, a block scalar works too:
branding:
productName: "Acme Lighthouse"
logoSvg: |
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<path d="..." fill="#0b5fff"/>
</svg>
Give it a viewBox, and do not worry about its width and height. Prism
ignores both and sizes the mark to the height of the heading it sits in, so a
512-pixel export does not arrive 512 pixels tall. Without a viewBox there is
nothing to scale and the result will be wrong — that is the one thing to check
in the file before you use it.
The mark appears immediately before the product name, in the header of the chat page, the admin page, the self test and the ingestion activity page, and on the sign-in page.
What Prism does to the file
The logo is rebuilt from shape-drawing elements before it reaches a page. This is not about distrusting you — anyone who can edit your values file can already change the images the appliance runs — it is that the logo is the only setting that lands in a page as markup, and everything else on that page is escaped.
So a file is stripped down to its drawing: <path>, <rect>, <circle>,
<g>, gradients, clip paths, <text> and their presentation attributes. Parts
that could execute, fetch or navigate do not survive — <script>, <style>,
<a>, <image>, <use>, <foreignObject>, animation elements and any event
handler.
A file is refused entirely, and the header renders with no logo at all, if:
- its root element is not
<svg>— including an HTML file with an SVG in it; - it is not well-formed XML;
- it is over 64 KB, or expands to over 64 KB.
Refusing beats half-drawing: a mark missing pieces looks like a bug in Prism.
Check it worked
Look at the header. That is the whole check, and it is why the version is on
the page beside it — after a helm upgrade you can see in one glance both that
the new name is live and which release is serving it.
If the name changed and the logo did not appear, the file was refused. The app pod's log says which of the reasons above applied:
kubectl -n <namespace> logs deploy/prism-app | grep branding
Most often it is the first one: an .svg file that is really an HTML wrapper,
or a designer's export whose root element is a comment block. Open it in a text
editor and check the first tag.
If neither changed, the values did not reach the pod — check that the upgrade used the values file you think it did, and that the pod actually restarted.