Gameye Platform Update — June 2026

Billing infrastructure, email notifications, S3 storage support, TLS for secure connections, and secrets encryption.

Bogdan Galatanu
Engineering Manager at Gameye

June was an infrastructure month. The self-service signup and trial flow that went live in May needed monetization plumbing underneath it — billing tables, subscription tracking, and usage reporting all landed. At the same time, two platform capabilities that studios have been asking about shipped: email notifications and S3 file storage. TLS support for secure connections also merged, alongside a set of reliability and UX improvements.

Here’s everything that landed.


Billing infrastructure

The database and service layer for billing is now in place. Two new tables landed: one tracking organization subscriptions (which plan a studio is on, when it started, and the associated subscription type) and one recording usage reports — session minutes consumed per organization per billing period.

Subscription type is now recorded on both the container table and container history, so billing queries can be answered from either live or historical data without joins to external systems. The schema was designed to support the full lifecycle — trial, active subscription, cancellation — with timestamps and identifiers that map cleanly to our payment provider.

The container history table also got a composite index on started_at, finished_at, and organization_name to keep billing queries fast as history accumulates. A previously unused index was removed.

This is the backend foundation for billing — the plumbing beneath our published $0.07/vCPU/hr pricing. The payment flows and subscription management UI are next.


Email notifications

The email notification system is now live. Organizations can subscribe to notification types — session events, quota warnings, and infrastructure alerts — from the admin panel, and the platform delivers them via email as conditions are met.

The system supports notification repeats: for ongoing conditions (such as a quota threshold being sustained), repeat notifications fire at configured intervals rather than only on the first trigger. This prevents alert fatigue from conditions that resolve and re-trigger frequently, while still keeping teams informed when something needs attention.

Notification types are defined and stored in the database, and the generation pipeline from trigger to delivery is in place. Additional notification types can be added without schema changes.


S3 storage

S3 integration has landed. The orchestrator can now read from and write to S3-compatible object storage, which enables game server containers to access shared assets, upload crash dumps or recordings, and read configuration files from object storage at runtime.

The integration is provider-agnostic — it works with AWS S3, compatible self-hosted stores, or any provider that implements the S3 API. Configuration is per-organization.


TLS for secure connections

TLS support has merged — but it is not yet generally available. It ships behind a feature flag while we validate it with a limited set of sessions, and is not enabled for production sessions by default yet. Once it’s rolled out, sessions will be served over encrypted connections with certificates managed by the platform. The underlying x509 and certificate handling code was refactored into a dedicated crypto package, and secrets — including private keys — are now stored using AES-256-GCM encryption rather than plaintext.

HAProxy integration for TLS termination is in place, with a feature flag to enable the ingress controller path. The feature flag approach lets us validate the new routing path incrementally before making it the default.


Smaller changes

Disposable email blocking. The registration flow now rejects addresses from known disposable email providers. This reduces throwaway signups and keeps the trial user base meaningful.

Organization created_at. Organization records now include a creation timestamp. This sounds minor but was missing and affected reporting — we couldn’t answer “when did this studio sign up” without inferring from other tables.

Organization tracking on containers. The orchestrator now records the actual organization that started a container in both the live containers table and the history table. Previously this was inferred from the API key used; it’s now explicit.

Container snapshot rate. The container status snapshot interval was corrected from 600 seconds to 30 seconds. At 600 seconds, the status view in the admin panel was effectively stale for up to 10 minutes.

Auth loading screen consistency. The login and logout flows had flickering on the loading screens, and the transitions between auth states were inconsistent. Both have been smoothed out.

Sessions table improvements. The sessions table got a round of work on data fetching — the useSessions hook now handles pagination and filtering state more reliably, with fewer unnecessary refetches.

DockerHub access instructions. The DockerHub setup step in the onboarding flow now has clearer instructions for granting Gameye read access to private registries.


What’s coming next

The billing backend is in place; the next step is the payment flow and subscription management UI so studios can self-serve upgrades without manual intervention. Email notification coverage will expand as we add more trigger types based on what’s most useful. TLS is behind a feature flag — once it’s validated with a small set of sessions we’ll enable it as the default for new session configurations.

Questions about any of these changes? See the admin panel docs or reach out directly.

More platform updates: ← May 2026