Configuration reference#
Squareone is configured at runtime through a YAML configuration file.
The path for this configuration file is set by the SQUAREONE_CONFIG_PATH environment variable in production, and defaults to squareone.config.yaml in development.
This page documents the schema of that configuration file.
Defaults from service discovery#
siteName, environmentName, and baseUrl are optional.
When one is omitted (or set to an empty string), Squareone fills it in at request time from Repertoire service discovery, so these keys no longer need to be set for each Phalanx environment.
An explicitly configured value always takes precedence.
Key |
Default from service discovery |
Fallback |
|---|---|---|
|
|
|
|
|
|
|
|
The origin of the request, from its |
Service discovery is only consulted when repertoireUrl is set and at least one of these keys is omitted.
The fallback applies when repertoireUrl is unset, when the Repertoire API is unavailable (Squareone logs a warning but still serves pages), or when the Repertoire release predates 3.0.0 and so does not provide the environment metadata or the squareone UI service.
The resolved values are used everywhere the keys are: page titles, the Sentry environment and base URL (shown on the /admin/sentry page), and absolute URLs such as notification permalinks.
Server-side Sentry follows the same environmentName resolution, so events from the server and the browser carry the same Sentry environment.
The server resolves it once at startup, before it serves any requests: it waits at most a few seconds for service discovery, and if the Repertoire API doesn’t respond in time it logs a warning and uses the unknown fallback.
The server no longer reads the SQUAREONE_ENVIRONMENT_NAME environment variable.
Dataset documentation cards#
When repertoireUrl is set, the /docs page’s docs.mdx can list the datasets from Repertoire service discovery with the <DatasetDocsCards> component instead of hand-written cards.
Each card shows the dataset’s name and discovery description, and links to its discovery docs_url when it has one.
When repertoireUrl is not set, the component renders nothing.
See Dataset documentation cards.
Service links#
When repertoireUrl is set, any page’s MDX can link to a UI service’s URL from Repertoire service discovery with the <ServiceLink service="…"> component, instead of hardcoding each environment’s host.
For example, settings__index.mdx can link to the COmanage account settings with <ServiceLink service="comanage" />.
When repertoireUrl is not set, no link renders.
See ServiceLink.
Deprecated keys#
coManageRegistryUrlThe COmanage registry URL is available from Repertoire service discovery as the
services.ui.comanageUI service, so Squareone no longer reads this key. To link to it from MDX content, use<ServiceLink service="comanage" />(see Service links). It is still accepted so that existing configurations continue to validate, and can be removed from them.semaphoreUrlThe Semaphore URL is resolved from Repertoire service discovery through
repertoireUrl, so Squareone no longer reads this key. It is still accepted so that existing configurations continue to validate, and can be removed from them.
Schema#
Squareone Configuration#
Publicly-viewable configuration for a Squareone instance.
squareone.config.schema.json |
||||
type |
object |
|||
properties |
||||
|
Site name |
|||
Used as the basis of the HTML title tag and the homepage hero. Optional: when omitted, defaults to the environment title from Repertoire service discovery ( |
||||
type |
string |
|||
|
Site description |
|||
Used as the default site description in the HTML meta.. |
||||
type |
string |
|||
default |
Welcome to the Rubin Science Platform |
|||
|
Base URL for the public ingress |
|||
Used for computing absolute URLs. Does not end in /. Optional: when omitted, defaults to the Squareone UI service URL from Repertoire service discovery ( |
||||
type |
string |
|||
|
Phalanx environment name |
|||
Used in telemetry (the Sentry environment). Optional: when omitted, defaults to the Phalanx environment label from Repertoire service discovery ( |
||||
type |
string |
|||
|
Base URL for the user documentation site. |
|||
Used for computing URLs for user documentation pages for this RSP instance. The default is for the public RSP. For USDF, use |
||||
type |
string |
|||
default |
||||
|
Semaphore URL |
|||
Deprecated: use Repertoire service discovery instead. The Semaphore URL is now resolved via repertoireUrl, so this field is no longer read by the app. It is retained only for backwards compatibility so existing Phalanx configurations that still set it continue to validate. Does not end in /. |
||||
type |
string |
|||
|
Repertoire API URL |
|||
URL prefix of the Repertoire service discovery API. Does not end in /. Omit or set as null to disable service discovery. |
||||
type |
string |
|||
|
Times Square API URL |
|||
URL prefix of the Times Square API service. Does not end in /. Omit or set as null to disable the /times-square/ pages. |
||||
type |
string |
|||
|
COmanage registry URL |
|||
Deprecated: the COmanage registry URL (e.g. https://id.lsst.cloud) is available from Repertoire service discovery as |
||||
type |
string |
|||
|
Plausible tracking domain |
|||
Domain (e.g. data.lsst.cloud) for Plausible tracking. Omit to disable Plausible. |
||||
type |
string |
|||
|
MDX content directory |
|||
Directory path where MDX content files are located. Can be relative (development) or absolute (production with ConfigMap). |
||||
type |
string |
|||
default |
src/content/pages |
|||
|
Footer MDX content path |
|||
Path to MDX file for footer content, relative to mdxDir. If not provided, uses default hardcoded footer content. |
||||
type |
string |
|||
default |
footer.mdx |
|||
|
Sentry traces sample rate |
|||
The percentage of traces to send to sentry. A number between 0 and 1 inclusive, where zero means don’t send any traces, and 1 means send all traces. |
||||
type |
number |
|||
|
Sentry replay session sample rate |
|||
The percentage of replay sessions to send to Sentry. A number between 0 and 1 inclusive, where zero means don’t send any sessions, and 1 means send all sessions. |
||||
type |
number |
|||
default |
0.0 |
|||
|
Sentry error replay session sample rate |
|||
The percentage of replay sessions to send to Sentry when an error occurs. A number between 0 and 1 inclusive, where zero means don’t send any sessions, and 1 means send all sessions. |
||||
type |
number |
|||
default |
1.0 |
|||
|
Sentry debug |
|||
Setting this option to true will print useful information to the console while you’re setting up Sentry. |
||||
type |
boolean |
|||
default |
False |
|||
|
Sentry organization slug |
|||
Sentry organization slug used to build the Sentry dashboard link on the admin page. The dashboard link is shown only when both sentryOrg and sentryProject are set. |
||||
type |
string |
|||
default |
rubin-observatory |
|||
|
Sentry project slug |
|||
Sentry project slug used to build the Sentry dashboard link on the admin page. The dashboard link is shown only when both sentryOrg and sentryProject are set. |
||||
type |
string |
|||
default |
squareone |
|||
|
Enable the Apps menu |
|||
Setting this option to true enables the Apps menu in the header. The menu lists Times Square (when the times-square application is enabled in Repertoire service discovery), the Argo CD, Chronograf, Kafdrop, and WebDAV UI services from service discovery that the user’s scopes allow, and then any appLinks. The menu is hidden when it has no items. |
||||
type |
boolean |
|||
default |
False |
|||
|
Application links |
|||
Additional links appended to the Apps menu after the items derived from Repertoire service discovery, for apps that discovery does not describe. A link whose href repeats an earlier item is dropped. These links are shown to every user, regardless of scopes. Without service discovery (no repertoireUrl), the Apps menu lists only these links. |
||||
type |
array |
|||
default |
||||
items |
type |
object |
||
properties |
||||
|
Display label for the link |
|||
type |
string |
|||
|
URL or path for the link |
|||
type |
string |
|||
|
Whether this is an internal route or external URL |
|||
type |
boolean |
|||
|
Show preview badge |
|||
Whether to show the preview badge on the homepage hero |
||||
type |
boolean |
|||
default |
False |
|||
|
Preview badge link URL |
|||
URL for the preview badge link |
||||
type |
string |
|||
default |
||||
|
Enable user notifications |
|||
Setting this option to true enables the user-facing notifications UI: the unread badge in the header user menu and the /notifications inbox and detail pages. Defaults to false so the feature stays hidden until it is released. |
||||
type |
boolean |
|||
default |
False |
|||
|
User notifications poll interval (seconds) |
|||
Background polling cadence, in seconds, for the unread notification count shown in the header user menu. Consumed by the useUnreadNotificationCount hook (converted to milliseconds for TanStack Query’s refetchInterval). Only relevant when enableUserNotifications is true. |
||||
type |
integer |
|||
minimum |
30 |
|||
default |
300 |
|||
|
Admin page scopes |
|||
Maps each admin page to the Gafaelfawr scopes that grant access to it. A user may use a page when they hold any of the scopes listed for it; configuring an empty list hides the page from everyone. Page ids are fixed by the application, so an unrecognized id is a configuration error. Omit this key — or any individual page within it — to use the defaults shown below, which match Gafaelfawr’s out-of-the-box admin scopes. This mapping controls the admin sidebar navigation, the page each user lands on from /admin, and the in-page authorization gate; it does not change the order of the navigation or which admin pages exist. |
||||
type |
object |
|||
default |
notifications |
admin:notifications |
||
serviceTokens |
admin:token |
|||
oidcClients |
admin:oidc |
|||
sentry |
exec:admin |
|||
properties |
||||
|
Scopes for the user-notifications admin page |
|||
Scopes granting access to /admin/notifications, which sends user notifications through Semaphore. |
||||
type |
array |
|||
default |
admin:notifications |
|||
items |
type |
string |
||
|
Scopes for the service-tokens admin page |
|||
Scopes granting access to /admin/service-tokens, which manages Gafaelfawr service tokens. |
||||
type |
array |
|||
default |
admin:token |
|||
items |
type |
string |
||
|
Scopes for the OpenID Connect clients admin page |
|||
Scopes granting access to /admin/oidc-clients, which manages Gafaelfawr’s OpenID Connect clients. |
||||
type |
array |
|||
default |
admin:oidc |
|||
items |
type |
string |
||
|
Scopes for the Sentry admin page |
|||
Scopes granting access to /admin/sentry, which links to the Sentry dashboard and exercises error and log reporting. |
||||
type |
array |
|||
default |
exec:admin |
|||
items |
type |
string |
||
|
Header logo URL |
|||
HTTPS URL to an external logo image. Takes priority over headerLogoData if both are set. If neither URL nor data is provided, uses the default Rubin Observatory logo. When using this option, headerLogoWidth must also be provided. |
||||
type |
string |
|||
pattern |
^https:// |
|||
|
Header logo base64 data |
|||
Base64-encoded image data (without the data URL prefix). Must be used together with headerLogoMimeType and headerLogoWidth. Used only if headerLogoUrl is not provided. |
||||
type |
string |
|||
|
Header logo MIME type |
|||
MIME type for the base64-encoded logo data (e.g., ‘image/png’, ‘image/jpeg’, ‘image/svg+xml’). Required when headerLogoData is provided. |
||||
type |
string |
|||
enum |
image/png, image/jpeg, image/jpg, image/svg+xml, image/webp, image/gif |
|||
|
Header logo height |
|||
Height of the header logo in pixels. |
||||
type |
number |
|||
minimum |
1 |
|||
default |
50 |
|||
|
Header logo width |
|||
Width of the header logo in pixels. Required when using headerLogoUrl or headerLogoData to ensure correct aspect ratio. |
||||
type |
number |
|||
minimum |
1 |
|||
|
Header logo alt text |
|||
Alternative text for the header logo for accessibility. |
||||
type |
string |
|||
default |
Logo |
|||
additionalProperties |
False |
|||