* feat(frontend): add Rybbit analytics integration with event forwarding
Integrate self-hosted Rybbit analytics as an additional sink alongside
the existing GTM pipeline, which remains fully unchanged:
- Add RybbitScript component to @sealos/gtm, driven by the
NEXT_PUBLIC_RYBBIT_HOST / NEXT_PUBLIC_RYBBIT_SITE_ID env vars;
loads nothing when unset
- Forward all track() events to window.rybbit.event() in addition to
dataLayer; object props are JSON-serialized and truncated at 512
chars per value (Rybbit caps properties at 2KB, primitives only)
- Mount RybbitScript in desktop / applaunchpad / dbprovider / template;
dbprovider and template get an analytics script for the first time
(their track() events previously had no consumer)
- Document the env vars in desktop/.env.template
Verified: @sealos/gtm, desktop, dbprovider and template production
builds pass. The applaunchpad build failure is a pre-existing echarts
SSR issue on main, confirmed unrelated via a stash control test.
* refactor(frontend): drive Rybbit config from runtime backend config
Address review feedback: replace build-time NEXT_PUBLIC_* env vars with
runtime configuration delivered by each app's existing config channel,
symmetric with how gtmId flows today. Config changes no longer require
a rebuild and can be toggled per environment at deploy time.
- RybbitScript is now props-driven (host / siteId); empty host or
siteId disables it. No process.env reads remain
- desktop: add layoutConfig.rybbitHost / rybbitSiteId (type, client
defaults, Helm values + configmap), passed through at the mount point
- applaunchpad: add analytics.rybbit.{host,siteId} to the config
schemas (server + client), example yaml and chart configmap; read in
getInitialProps alongside the existing gtm fields
- dbprovider / template: add optional analytics.rybbit section to the
config schemas, example yamls, chart configmaps and values; read in
getInitialProps and pass to the mount point
- New analytics sections are optional in the zod schemas so existing
deployments keep working when only the image is upgraded
- Drop the NEXT_PUBLIC_RYBBIT_* entries from desktop/.env.template;
document rybbitHost/rybbitSiteId in the Helm values guides
Verified: @sealos/gtm builds; desktop production build passes;
dbprovider / template / applaunchpad compile successfully
(applaunchpad still stops at the pre-existing echarts SSR issue on
/app/detail/monitor, unchanged from main).
* chore(desktop): restore .env.template to drop unrelated diff
* fix(frontend): buffer early Rybbit events and allowlist host in provider CSP
Review follow-up for the Rybbit integration:
- Queue events fired before the Rybbit script finishes loading and
flush them from RybbitScript onLoad, mirroring the dataLayer buffer
the GTM path already has
- Append the configured rybbitHost to script-src in both CSP
annotations (nginx snippet + higress) of the dbprovider/template/
applaunchpad ingresses, so /api/script.js is not blocked when the
integration is enabled; unset values render the CSP unchanged
- Wire applaunchpad rybbitHost/rybbitSiteId through values instead of
hardcoded empty strings in the configmap, matching dbprovider and
template (the config channel was previously broken)
🚀 Develop, deploy, and scale in one seamless cloud platform ☁️
Sealos['siːləs] is an AI-native Cloud Operating System built on Kubernetes that unifies the entire application lifecycle, from development in cloud IDEs to production deployment and management. It is perfect for building and scaling modern AI applications, SaaS platforms, managed databases (MySQL, PostgreSQL, Redis, MongoDB) and complex microservice architectures.
Get started
Create your Development Environment in Sealos with just one click
- Open Sealos Devbox.
- Create a development environment, choosing from a range of languages and frameworks.
Create your Database on Sealos
- Open Sealos database.
- Create your database.
- View your database and access details.
Deploy your Docker Image on Sealos
- Open Sealos App Launchpad.
- Deploy the Docker image using a Kubernetes Deployment and expose it with an Ingress.
- View your app details and access your service.
💡 Core features
- Integrated Cloud IDEs: Zero-setup, collaborative development in the cloud. Eliminate local environment inconsistencies with DevBox.
- Managed Databases & Storage: Production-ready PostgreSQL, MySQL, MongoDB, Redis, and built-in S3-compatible Object Storage.
- Extensive App Store: Deploy complex applications with a single click. No YAML configuration, no container orchestration complexity - just point, click, and deploy.
- Full Kubernetes Power: Access the full power of Kubernetes without the complexity. K8s-native from day one.
- Enterprise Multi-Tenancy: Workspace-based isolation with granular RBAC and per-workspace resource quotas for secure collaboration.
- AI-Native Infrastructure: Build and scale anything with AI simply by describing them.
🏘️ Community & support
- 🌐 Visit the Sealos Website for full documentation and useful links.
- 💬 Join our Discord Server to chat with the Sealos team and other Sealos users. This is a good place to learn about Sealos and Kubernetes, ask questions, and share your experiences.
- 🐦 Tweet at @Sealos_io on X/Twitter and follow us.
- 🐞 Create GitHub Issues for bug reports and feature requests.
🚧 Roadmap
Sealos maintains a public roadmap. It gives a high-level view of the main priorities for the project, the maturity of different features and projects, and how to influence the project direction.
👩💻 Contributing & Development
Have a look through existing issues and Pull Requests that you could help with. If you'd like to request a feature or report a bug, please create a GitHub Issue using one of the templates provided.
Links
- FastGPT is a free, open-source, and powerful AI knowledge base platform, offers out-of-the-box data processing, model invocation, RAG retrieval, and visual AI workflows. Easily build complex LLM applications.
- Buildah The functionalities of Buildah are extensively utilized in Sealos 4.0 to ensure that cluster images are compatible with OCI standard.
📄 License
Sealos is licensed under the Sealos Sustainable Use License, a custom license that allows:
- ✅ Internal business use and personal non-commercial use
- ❌ Providing cloud services to third parties
Not a standard open source license - please review the full license terms before use.
Contributing: By contributing, you agree to our Contributor License Agreement and license change terms.