Skip to content
CAI
Software that uses CAICheck a score

coollabsio/coolify

41.7

Weak · 5 August 2026

148.8k

lines of production code

PHP

with JavaScript

3

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Coolify is a self-hosted platform for managing and deploying applications, databases, and services. It provides a comprehensive interface for provisioning servers, configuring environments, and handling deployments via Docker and Kubernetes. The system supports a wide range of resources including PostgreSQL, MySQL, Redis, and various cloud providers, with robust notification and security features.

How it got here

2021–2023 — Laravel and Livewire 3 migration

121 changes.

The project underwent a major architectural shift, migrating the codebase from a SvelteKit-based frontend to a Laravel and Livewire 3 backend-driven architecture. This period involved removing legacy deployment logic and Svelte components, replacing them with new PHP controllers, service providers, and Livewire components for all UI interactions. The work also included establishing a new database schema, implementing comprehensive notification channels, and introducing robust security measures like encrypted storage and strict middleware.

2024–2025 — Comprehensive UI and API expansion

78 changes.

This period focused on significantly expanding the user interface and backend capabilities, introducing new management interfaces for scheduled tasks, database backups, shared variables, and server security. The release also delivered a full REST API, enhanced notification channels, and improved terminal access, while simultaneously hardening the codebase with extensive validation and test coverage.

2026 — MCP server and configuration tracking

15 changes.

This period focused on introducing a read-only MCP server for infrastructure inspection and implementing application configuration change tracking. The work was heavily supported by extensive test coverage for webhooks, security, and deployment configurations.

Features

Add CA Certificate management interface for servers

Users can now view, save, and regenerate the Certificate Authority (CA) certificate for a server. The new Show component allows administrators to upload a CA certificate, which is then written to the server's filesystem and triggers a regeneration of SSL certificates. This provides a centralized UI for managing server-level CA certificates.

app/Livewire/Server/CaCertificate · high confidence

Add Docker destination creation form

A new Blade view for creating Docker-based destinations has been added at resources/views/livewire/destination/new/docker.blade.php. The form collects the destination name, network, and a selected server, and includes a permission check that displays a warning callout if the user lacks the 'createAnyResource' capability.

app/Livewire/Destination/New, resources/views/livewire/destination/new · high confidence

Add Dragonfly database configuration view

Users can now configure general settings for a Dragonfly database instance, including name, description, Docker image, and initial password. The interface also allows mapping host ports, enabling public access with a configurable proxy timeout, and enabling log draining.

resources/views/livewire/project/database/dragonfly · high confidence

Add Dragonfly database management interface

Users can now manage Dragonfly database instances through the web interface. The new General and StatusInfo Livewire components allow users to configure database settings such as name, description, Docker image, port mappings, and public accessibility. The General component also supports custom Docker run options and log drain configuration, enabling users to tailor their Dragonfly database environment directly from the dashboard.

app/Livewire/Project/Database/Clickhouse, app/Livewire/Project/Database/Dragonfly, app/Livewire/Project/Database/Keydb · high confidence

Add GitHub source show page template

A new Blade template for the GitHub source show page has been added. This template wraps the Livewire component for GitHub app changes, passing the GitHub app, name, IPv4, IPv6, and FQDN as parameters.

resources/views/source/github · high confidence

Add Livewire component for managing server private keys

Introduced a new Livewire component (Show.php) that allows users to select and associate a private key with a server. The component handles authorization checks, updates the server's private key association within a database transaction, and validates the connection to ensure the new key works. It also provides a manual connection check feature to verify server reachability.

app/Livewire/Server/PrivateKey · high confidence

Add PostgreSQL general configuration and management UI

A new Blade view for the PostgreSQL database component has been introduced, providing a comprehensive UI for managing general settings. Users can now configure the database name, description, image, username, password, and initial database arguments. The interface also supports custom Docker run options, port mappings, and public proxy settings including a configurable timeout. Additionally, the view includes controls for log draining, SSL certificate regeneration, and the ability to add and manage initialization scripts.

resources/views/livewire/project/database/postgresql · high confidence

Add Redis configuration and management UI

Introduces a new Livewire Blade view for managing Redis database resources. The interface allows users to configure general settings, including name, description, and image. It provides input fields for Redis username and password, with conditional rendering based on the Redis version (6.0+). Users can also set custom Docker run options, map public ports, configure proxy timeout, and provide custom Redis configuration directives. The UI includes a proxy section with public port and timeout settings, log drain toggling, and a resource details modal.

resources/views/livewire/project/database/mongodb, resources/views/livewire/project/database/redis · high confidence

Add Redis database management components

Introduced new Livewire components for managing Redis databases, including a General configuration page and a StatusInfo component. The General component enables users to configure Redis-specific settings such as username, password, Docker image, port mappings, and custom Docker run options, with validation rules applied to all inputs. The StatusInfo component provides status information for Redis instances.

app/Livewire/Project/Database/Redis · high confidence

Add S3 storage detail page

A new Livewire component and associated view have been introduced to display the details of a specific S3 storage resource for the current team. This change provides a dedicated interface for viewing S3 storage information, separating it from other storage types.

app/Livewire/Team/Storage · high confidence

Add admin dashboard with subscriber search and user impersonation

A new Livewire component at app/Livewire/Admin/Index.php introduces an admin dashboard that displays active and inactive subscriber counts and allows searching for users by name or email. The component enforces strict access control: only authenticated users with ID 0 (or those impersonating) can access the dashboard, and only root users can switch to other users. The view also includes a 'back' function to end impersonation sessions.

app/Livewire/Admin · high confidence

The applications area now includes two new Blade components: 'advanced.blade.php' provides a 'Force deploy (without cache)' action for running applications, and 'links.blade.php' displays a comprehensive list of application links, including Git repository URLs, Docker Compose domains, preview environment URLs, and port mappings.

resources/views/components/applications · high confidence

Users can now access advanced service controls and external links via new dropdown menus. The 'Advanced' component provides context-sensitive actions: 'Pull Latest Images & Restart' for running services, 'Force Restart' for degraded services, and 'Force Deploy' or 'Force Cleanup Containers' for others. Additionally, a 'Links' component renders a list of external URLs associated with the service.

resources/views/components/services · high confidence

Add container restart and stop notifications

Users will now receive notifications when a container restarts or stops unexpectedly. This new feature adds support for multiple notification channels, including email, Discord, Telegram, Pushover, Slack, and webhooks, ensuring that users are promptly alerted about container status changes.

app/Notifications/Container · high confidence

Add custom job repository with status-based job retrieval

A new CustomJobRepository and its interface are introduced to manage job data. The repository implements getJobsByStatus and countJobsByStatus to filter and count jobs by their status, and adds a getHorizonWorkers method to retrieve active Horizon workers.

app/Repositories · medium confidence

Add database backup notification templates for success, failure, and S3 upload warnings

Users will now receive detailed notifications about database backup outcomes via email, Discord, Telegram, Pushover, Slack, and webhooks. Three new notification classes—BackupFailed, BackupSuccess, and BackupSuccessWithS3Warning—provide status updates including database name, frequency, and error details. The S3 warning template specifically alerts users when a local backup succeeds but the S3 upload fails, including a link to the S3 storage configuration.

app/Notifications/Database · high confidence

Add general internal notification support for multiple channels

A new GeneralNotification class has been added to the internal notification system, enabling the delivery of general notifications via Discord, Telegram, Pushover, and Slack. The notification is queued on the high-priority queue and respects the user's enabled channels for each service.

app/Notifications/Internal · high confidence

Add new Modal and ResourceView view components

Introduced two new Laravel view components, Modal and ResourceView, to the application's UI library. The Modal component supports configuration for modal IDs, submit actions, titles, body content, and boolean flags for no-submit and yes/no modes. The ResourceView component provides a template for displaying resource views with optional wire, logo, documentation, and upgrade flags. These components render their respective Blade templates (components.modal and components.resource-view).

app/View/Components · high confidence

Add notification channel navigation bar

A new navbar component for the notifications section has been added, providing navigation links for Email, Discord, Telegram, Slack, Pushover, and Webhook notification channels. The component includes active state styling and wire:navigate attributes for SPA navigation.

resources/views/components/notification · high confidence

Add preview URL template configuration for applications

A new Livewire form component has been introduced to allow users to configure and update the template used to generate preview URLs for applications. This feature enables dynamic URL generation by replacing placeholders like \{{domain}}\ with actual domain values, supporting both HTTP and HTTPS protocols.

app/Livewire/Project/Application/Preview · medium confidence

Add profile appearance preferences and email change verification

Users can now customize their appearance preferences via a new Livewire component. Additionally, the profile page now supports a secure email change process, requiring a verification code sent to the new address, with rate limiting and security checks to prevent abuse.

app/Livewire/Profile · high confidence

Add project and team shared variables management views

New Blade templates for the project and team shared variables sections provide a dual-view interface for managing environment variables. Users can switch between a 'Normal view' that lists individual variables and a 'Developer view' that presents all variables in a monospace textarea for bulk editing. The UI includes title headers, helper links to documentation, and conditional rendering based on user permissions.

resources/views/livewire/shared-variables/project · high confidence

Add project configuration and development environment files

The repository now includes essential configuration files to standardize code formatting and editor behavior, specifically adding .editorconfig to enforce consistent indentation, line endings, and whitespace trimming across all files. Additionally, a .coolify-logo ASCII art file was added to the project root. These changes support a consistent development environment and improve the project's visual identity.

(repo-wide) · high confidence

Add read-only MCP server for Coolify resources

A new read-only MCP server named 'Coolify' is introduced, providing tools to inspect infrastructure, servers, projects, applications, databases, and services. The server exposes read-only access to these resources, ensuring that sensitive data such as passwords, tokens, and internal IDs are scrubbed from all responses. Each tool supports pagination and includes suggested next steps for navigation.

app/Mcp · high confidence

Add scheduled task success and failure notifications

Users can now receive notifications for scheduled task outcomes. New notification classes (TaskSuccess and TaskFailed) have been added, each supporting email, Discord, Telegram, Pushover, Slack, and webhook channels. Each notification includes the task name, UUID, output, and a link to the task in the application or service. The notifications are sent on the 'high' priority queue to ensure timely delivery.

app/Notifications/ScheduledTask · high confidence

Add server patching and terminal access management to the security settings

A new Server Patching interface has been added to the server's security settings, allowing administrators to check for and apply package updates via apt, dnf, or zypper. The UI displays available updates with version details, provides a confirmation modal for bulk updates, and includes a test email button for development environments. Additionally, a Terminal Access control has been introduced, enabling team administrators and owners to enable or disable terminal access for the server and its containers directly from the dashboard.

resources/views/livewire/server/security · high confidence

Add shared variables index page

A new index page for shared variables has been added, providing a central hub to access team, project, environment, and server-wide variable configurations. Each scope is presented as a distinct card linking to its respective management interface, enabling users to manage environment variables at different levels of the application hierarchy.

resources/views/livewire/shared-variables · high confidence

Add source listing page for GitHub apps

A new 'Sources' page has been added to list all configured GitHub applications. The view displays each source's name and organization, with a conditional check to show an error state if the configuration is incomplete. The list items use wire:navigate for SPA-style navigation and include a modal form to add new GitHub apps.

resources/views/source · high confidence

Add tag management and deployment tracking UI

Users can now view and manage tags through a dedicated interface. A new 'Show' component displays tag details including associated applications and services, while a 'Deployments' component tracks active and queued deployments per server. The 'Show' component also provides a 'Redeploy All' action to trigger mass deployments for all resources linked to a tag.

app/Livewire/Tags · high confidence

Added complex status check for applications

A new \ComplexStatusCheck\ action has been introduced in the shared actions directory to manage application status updates across multiple servers. This component aggregates container states using the \ContainerStatusAggregator\ service, handling both main and additional server statuses, and correctly processes excluded containers to determine the final application state.

app/Actions/Shared · high confidence

Added status display components

Introduced new Laravel Blade components for rendering status information: an 'Index' component for general status display and a 'Services' component that accepts a Service model and its complex status to render specific service states.

app/View/Components/Status · high confidence

Application settings are reorganized into General and Advanced tabs

The application configuration interface has been split into two distinct views: a 'General' tab for primary settings (name, description, build pack, domains) and a new 'Advanced' tab for secondary settings (build cache, container naming, auto-deploy, proxy, and operations). This change also introduces a new 'Deployment Log' navbar for managing deployments and a 'Destination' view to display server and network details.

resources/views/livewire/project/application · high confidence

CA Certificate Management UI

A new interface for managing the server's CA certificate has been added. Users can now view, edit, and regenerate the CA certificate directly from the server settings. The UI includes confirmation modals for saving or regenerating the certificate, displays the certificate's validity status (including expiration warnings), and provides the recommended Docker bind mount path for containers that require SSL connections to databases.

resources/views/livewire/server/ca-certificate · high confidence

Clickhouse database configuration and proxy settings

A new general configuration view for Clickhouse databases has been added, allowing users to set the name, description, and Docker image. Users can configure the initial admin username and password (editable only before the first start), define custom Docker run options, and set up port mappings. The interface also includes controls for making the database publicly accessible via a TCP proxy, with a configurable public port and proxy timeout, alongside options to enable log draining.

resources/views/livewire/project/database/clickhouse · medium confidence

Configure NGINX for development and production environments

Added NGINX configuration files for both development and production Docker environments. The setup configures the server to listen on port 8080, serves files from /var/www/html/public, and routes PHP requests to PHP-FPM on 127.0.0.1:9000. It also defines a /healthcheck endpoint and increases the client body buffer size to 256k to handle larger payloads.

docker/development/etc/nginx, docker/production/etc/nginx · high confidence

Database backup management and import features

The database configuration view now includes dedicated sections for managing scheduled backups, viewing execution history, and importing backups. Users can configure backup schedules with frequency, timezone, and timeout settings, and define retention policies for both local and S3 storage. The interface allows enabling or disabling local backups when S3 is active, selecting specific databases to back up, and managing backup execution logs with status indicators. Additionally, a new import feature enables restoring databases from local files or S3 storage, with support for PostgreSQL, MySQL, MariaDB, and MongoDB.

resources/views/livewire/project/database · medium confidence

Environment variable management refactored into new Livewire components

The environment variable management UI has been refactored into new, dedicated Livewire components: Add, All, Show, and ShowHardcoded. This change introduces a more structured approach to managing environment variables, including support for shared variables, build-time and runtime flags, and specific handling for hardcoded variables from Docker Compose files. The new components handle validation, authorization checks, and UI interactions for adding, listing, and editing environment variables, with improved handling of special variables like SERVICE\_FQDN and SERVICE\_URL.

app/Livewire/Project/Shared/EnvironmentVariable · high confidence

Hetzner cloud provider token management for servers

Added a new interface for managing Hetzner cloud provider tokens associated with servers. Users can now view, validate, and select a specific Hetzner token for a server, with the system verifying the token's validity and permissions against the Hetzner Cloud API before applying it.

app/Livewire/Server/CloudProviderToken, resources/views/livewire/server/cloud-provider-token · high confidence

Implement dedicated transactional email notifications for email change, invitations, password reset, and testing

Added four new notification classes in app/Notifications/TransactionalEmails: EmailChangeVerification, InvitationLink, ResetPassword, and Test. Each class defines how the corresponding email is constructed and sent via the transactional email channel, ensuring these critical user-facing emails are properly routed and formatted. The ResetPassword notification includes logic to use the base URL for password reset links, and the Test notification allows sending test emails to any address.

app/Notifications/TransactionalEmails · high confidence

Implemented user deletion workflow with phased resource and subscription cancellation

Users can now initiate a comprehensive account deletion process that systematically removes their personal data and associated resources. The new \DeleteUserResources\ action handles the deletion of applications, databases, and services linked to teams the user exclusively owns. The \DeleteUserServers\ action manages the removal of user-owned servers, while \DeleteUserTeams\ handles the deletion or transfer of team ownership, including edge cases where the user is the sole owner or paying subscriber. Additionally, the \RevokeUserTeamTokens\ action ensures that all active access tokens for a user within specific teams are invalidated, enhancing security during the account closure process.

app/Actions/User · high confidence

Initial database schema for core entities

The database/migrations directory now contains the foundational schema for the application's core entities, including users, teams, projects, environments, applications, and servers. This establishes the initial data structure required for the system to function.

database/migrations · high confidence

Introduce CoolifyTask action for remote process execution

A new \RunRemoteProcess\ action class has been added to \app/Actions/CoolifyTask\, providing a structured way to execute remote SSH commands via the \SshMultiplexingHelper\. This class manages the lifecycle of remote processes, including timeout handling, output throttling, and event triggering upon completion.

app/Actions/CoolifyTask · high confidence

Introduce MongoDB database management and status components

Added new Livewire components (General.php and StatusInfo.php) for managing MongoDB database instances. The General component enables users to configure root credentials, database name, Docker image, port mappings, and public access settings, while the StatusInfo component exposes SSL/TLS configuration options (allow, prefer, require, verify-full) for securing MongoDB connections.

app/Livewire/Project/Database/Mongodb · high confidence

Introduce PHP-based version retrieval scripts and application bootstrap

Added new PHP scripts in the bootstrap directory (getVersion.php, getRealtimeVersion.php, getHelperVersion.php) that read version information from config/constants.php, enabling the application to dynamically retrieve version numbers for the Coolify platform. The bootstrap/app.php file was also added to initialize the Laravel application instance and bind essential interfaces like Http Kernel, Console Kernel, and Exception Handler. Additionally, includeHelpers.php was added to load helper functions from the helpers directory.

bootstrap · high confidence

Introduce Private Key management with RSA/ED25519 generation and validation

Users can now create, view, and delete SSH private keys (RSA and ED25519) through new Livewire components. The creation form includes automatic key generation and real-time validation to prevent invalid keys from being added. The interface supports modal-based creation for server forms and includes a cleanup function to remove unused keys. Authorization checks are enforced for all operations.

app/Livewire/Security/PrivateKey · high confidence

Introduce SSH multiplexing and improved SSL certificate generation

Added SshMultiplexingHelper and SshRetryHandler to manage persistent SSH connections, reducing connection overhead and improving reliability with retry logic and health checks. Introduced SslHelper to generate ECC (secp521r1) certificates with proper SAN handling and clientAuth extensions, replacing previous ad-hoc SSL generation logic.

app/Helpers · high confidence

Introduce ServerMetadata data transfer object

A new ServerMetadata class has been added to the application's data layer. This class, extending the base Data class, is designed to hold proxy-related metadata, specifically tracking the proxy type, status, and timestamps for last saved and applied settings.

app/Data · high confidence

Introduce UI for managing API tokens, cloud provider tokens, and cloud-init scripts

Added new Livewire components in the Security section to manage API tokens (with expiration and permission scoping), cloud provider tokens for Hetzner and DigitalOcean (with live API validation), and cloud-init scripts (with YAML validation). Users can now create, view, and revoke API tokens, add and validate cloud provider credentials, and manage custom cloud-init scripts through the UI.

app/Livewire/Security · high confidence

Introduce comprehensive REST API for managing resources

The application now exposes a full-featured REST API for managing core resources, including applications, databases, deployments, GitHub apps, cloud provider tokens, and Hetzner infrastructure. This new API surface allows users to create, list, update, and delete resources programmatically, with built-in OpenAPI (Swagger) documentation and automatic sensitive data filtering in responses.

app/Http/Controllers/Api · high confidence

Introduce comprehensive database seeders for development and production environments

The \database/seeders\ directory has been restructured with a new set of seeders to initialize the application's database state. This includes \DatabaseSeeder\ as the main entry point, along with specific seeders for core entities: \UserSeeder\, \TeamSeeder\, \PrivateKeySeeder\, \ServerSeeder\, \ProjectSeeder\, \ApplicationSeeder\, and \ApplicationSettingsSeeder\. Additionally, new seeders have been added for infrastructure components like \StandaloneDockerSeeder\, \StandalonePostgresqlSeeder\, \StandaloneRedisSeeder\, \S3StorageSeeder\, \OauthSettingSeeder\, \SentinelSeeder\, and \CaSslCertSeeder\. A new \DevelopmentRailpackExamplesSeeder\ provides example applications for development environments, while \PersonalAccessTokenSeeder\ creates test API tokens. The \ProductionSeeder\ has been updated to handle localhost server and key initialization, and \SharedEnvironmentVariableSeeder\ sets up predefined server variables.

database/seeders · high confidence

Introduce dedicated Team navbar component

A new Blade component for the Team section has been added, providing a consistent header with a title, an 'Add' button for creating new teams, and a navigation bar linking to General, Members, and Admin View routes. The component implements SPA-style navigation using Livewire's wire:navigate directive to enable smooth, prefetch-based transitions between team pages.

resources/views/components/team · high confidence

Introduce dedicated server management views for advanced settings, metrics, and Docker cleanup

The server management interface has been restructured into distinct, dedicated views for specific configuration areas. An 'Advanced' settings page now allows users to configure disk usage check frequency, build concurrency, deployment timeouts, and queue limits. A new 'Metrics' view provides interactive CPU and memory usage charts with configurable time intervals. Additionally, a dedicated 'Docker Cleanup' page enables users to manage cleanup frequencies, thresholds, and advanced options like volume and network deletion, with a separate view to track execution history and logs. Other new views include 'Destinations' for managing Docker networks, 'Log Drains' for third-party logging integrations, and a 'Delete' view for server removal.

resources/views/livewire/server · high confidence

Introduce dynamic proxy configuration management

Users can now create, edit, and delete dynamic proxy configuration files directly from the server's proxy dashboard. This adds a new interface for managing proxy settings, supporting both Traefik and Caddy configurations, with validation to prevent command injection and ensure safe file names.

app/Livewire/Server/Proxy · high confidence

Introduce dynamic proxy configuration management and proxy logs

Users can now create, edit, and delete dynamic proxy configurations directly through the server's proxy dashboard, with a dedicated view for each configuration file. The interface includes a navbar for managing individual files, a main page listing all dynamic configurations with reload and add options, and a new logs view to monitor proxy activity. This adds a new capability to manage proxy settings dynamically via the UI.

resources/views/livewire/server/proxy · high confidence

Introduce new base layout and collapsible sidebar navigation

The application's layout structure has been refactored with a new base template (base.blade.php) that initializes the dark theme immediately to prevent flicker and includes comprehensive SEO and social media meta tags. The main application layout (app.blade.php) now features a collapsible sidebar with a toggle button, a mobile-responsive overlay menu, and a sticky header with the Coolify logo and team switcher. This replaces the previous navigation structure, providing a more modern and consistent user interface across the platform.

resources/views/layouts · high confidence

Introduce new resource management views for projects and environments

Added new Livewire components for managing project resources. The Create component now handles the creation of standalone databases (PostgreSQL, Redis, MongoDB, MySQL, MariaDB, KeyDB, Dragonfly, Clickhouse) and one-click services, routing users to their respective configuration pages. The Index component provides a unified view of all resources (applications, databases, services) within an environment, optimizing queries and including status and tag information for each resource type.

app/Livewire/Project/Resource · high confidence

Introduce new scripts for upgrades, installation, and development workflows

Added new shell scripts to the \scripts/\ directory to handle core operational tasks. \upgrade.sh\ and \cloud\_upgrade.sh\ manage the Coolify upgrade process, including downloading configuration files, updating environment variables, pulling Docker images, and tracking upgrade status. \install.sh\ automates the initial Coolify installation, including Docker setup, network creation, and environment configuration. \conductor-setup.sh\ configures shared dependencies via symlinks for Conductor worktrees. Additionally, \railpack-smoke.sh\ provides an end-to-end smoke test for Railpack applications, \sync\_volume.sh\ facilitates Docker volume backups between servers, \upgrade-postgres.sh\ handles internal PostgreSQL major-version migrations, and \run\ serves as a task runner for common development commands like logs, tests, and database resets.

scripts · high confidence

Introduce preview deployment URL template configuration

A new form component has been added to the project application preview section, allowing users to configure a URL template for preview deployments. The interface includes a text input for the template (supporting variables like @@random, @@pr\_id, and @@domain), a live domain preview, and buttons to save changes or reset the template to its default state.

resources/views/livewire/project/application/preview · high confidence

Introduce scheduled task management UI

Added new Livewire components (Add, All, Executions, Show) for creating, listing, and managing scheduled tasks. Users can now configure task parameters (name, command, frequency, container, timeout), toggle task enablement, view and download execution logs, and delete tasks. The UI includes validation for cron expressions and supports tasks for applications, services, and standalone databases.

app/Livewire/Project/Shared/ScheduledTask · high confidence

Introduce scheduled task management UI for applications and services

Added new Blade templates for managing scheduled tasks, including a creation form (add.blade.php) that supports cron expressions, timeouts, and container/service selection. The all.blade.php template provides a list view of existing tasks, while show.blade.php enables editing task configurations and toggling their enabled/disabled state. The executions.blade.php template displays recent task runs with status indicators, log output, and options to download or load all logs.

resources/views/livewire/project/shared/scheduled-task · high confidence

Introduce shared environment variable management for teams, projects, environments, and servers

Adds new Livewire components to manage shared environment variables across four scopes: team, project, environment, and server. Each scope features a list view and a show view with bulk edit capabilities, transactional save operations, and explicit authorization checks. The server scope includes predefined variables (COOLify\_SERVER\_NAME, COOLIFY\_SERVER\_UUID) that are excluded from user edits. All components support a developer view for raw variable formatting and handle variable creation, updates, and deletions with appropriate success messaging.

app/Livewire/SharedVariables · high confidence

Introduce token expiration warning job and encrypted queue jobs

Added a new ApiTokenExpirationWarningJob that proactively notifies users when their API tokens are about to expire, ensuring they have time to renew access. Additionally, the core ApplicationDeploymentJob and ApplicationPullRequestUpdateJob have been updated to implement the ShouldBeEncrypted interface, ensuring that sensitive deployment data is encrypted while in the queue for improved security.

app/Jobs · high confidence

Introduces new API and web route structures for resource management

The application now uses dedicated route files for the API, web, and webhooks, organizing endpoints for managing projects, environments, applications, databases, services, servers, and security keys. This includes new endpoints for creating, updating, and deleting resources, as well as managing environment variables, storage, and deployments. The web routes cover user authentication, profile settings, notifications, and team management. Additionally, a new MCP (Model Context Protocol) server is exposed at /mcp, and webhook handlers are consolidated for GitHub, GitLab, Bitbucket, and Gitea.

routes · high confidence

Introduces new notification channels for Discord, Slack, Telegram, Pushover, and Webhooks

Users can now receive system notifications via Discord, Slack, Telegram, Pushover, and generic webhooks, in addition to the existing email and transactional email channels. Each channel is implemented as a dedicated channel class (e.g., DiscordChannel, SlackChannel) that validates settings and dispatches messages via background jobs. The email channel has been enhanced to support both Resend and SMTP (with configurable encryption) and validates team membership for recipients. Additionally, a new TransactionalEmailChannel handles user-facing emails like email verification and change requests.

app/Notifications/Channels · high confidence

Introduces new traits for resource authorization, global search cache management, session invalidation, environment variable analysis and protection, remote command execution, configuration generation, database health checks, metrics collection, and notification settings

The app/Traits directory now contains a suite of new PHP traits that encapsulate specific functionalities across the application. AuthorizesResourceCreation provides a centralized way to authorize resource creation. CalculatesExcludedStatus handles container status calculations for excluded containers. ClearsGlobalSearchCache manages cache invalidation for global search. DeletesUserSessions handles session invalidation on password changes. EnvironmentVariableAnalyzer and EnvironmentVariableProtection analyze and protect environment variables. ExecuteRemoteCommand handles remote command execution with retry logic and redaction. HasConfiguration generates configuration files. HasDatabaseHealthCheck and HasDatabaseStatusInfo manage database health checks and status info. HasMetrics collects server and container metrics. HasNotificationSettings manages notification channels. HasSafeStringAttribute sanitizes string attributes. SaveFromRedirect handles redirect state. SshRetryable provides SSH retry logic with exponential backoff.

app/Traits · high confidence

KeyDB general configuration and management UI

Added a new Blade view for managing KeyDB database instances, providing a form to configure general settings such as name, description, Docker image, and initial password. The interface includes fields for custom Docker run options, port mappings, and proxy settings, including a public port, proxy timeout, and log draining. It also integrates a resource details modal and proxy log viewing capabilities.

resources/views/livewire/project/database/keydb · high confidence

MariaDB configuration page adds proxy, log, and custom options

The new MariaDB general settings page allows users to configure the database's public TCP proxy (including port, timeout, and log viewing), enable or disable log draining, and supply custom Docker run options. It also exposes fields for the root password, normal user credentials, and a custom MariaDB configuration block.

resources/views/livewire/project/database/mariadb · high confidence

Migrate core UI components to Livewire 3

The application's user interface has been migrated to Livewire 3, introducing new or refactored Blade templates for key areas including the dashboard, global search, activity monitoring, and settings pages. This update brings improved interactivity, such as a new global search modal with keyboard shortcuts and resource creation capabilities, a real-time activity monitor with auto-scrolling, and a redesigned dashboard that consolidates project and server management. Additionally, the settings dropdown now features a changelog with read tracking and unread counts, while the layout popups have been updated to handle subscription warnings and real-time connection status.

resources/views/livewire · high confidence

Migrate team management to new Livewire components

The team management interface has been rebuilt using new Livewire components (AdminView, Create, Index, Invitations, InviteLink, Member, and Member\\Index). This introduces an admin view for deleting users, enforces role-based authorization checks on member actions (makeAdmin, makeOwner, makeReadonly, remove), and adds validation for inviting users with higher privileges. The Invitations component now normalizes email cases and handles invitation revocation, while the Create component uses centralized validation patterns for team creation.

app/Livewire/Team · high confidence

MySQL database management and status components

Added new Livewire components for MySQL database management (General) and status information (StatusInfo). The General component introduces a comprehensive form for managing MySQL instance settings, including root credentials, user/password/database configuration, Docker image selection, port mappings, and public port timeout settings. The StatusInfo component exposes SSL/TLS configuration options for MySQL, allowing users to select from various SSL verification modes (Prefer, Require, Verify CA, Verify Identity) for secure connections.

app/Livewire/Project/Database/Mysql · high confidence

New AI assistant configuration and developer skills

Added a new MCP server configuration for Laravel Boost, which allows the AI assistant to interact with the Laravel Boost tooling. Additionally, new skills and reference documentation were added to guide the AI in configuring Horizon (covering supervisors, metrics, notifications, and tags), implementing Laravel Actions (covering controllers, jobs, commands, listeners, and testing), and using Fortify for authentication. These files provide structured guidance for the AI assistant to follow when working on these specific Laravel features.

.cursor · high confidence

New API and access control middleware for enhanced security and permissions

A suite of new middleware classes has been introduced to the application's HTTP pipeline, significantly altering how API access, authentication, and permissions are enforced. The \ApiAbility\ middleware now enforces token-based permissions (including a new 'root' capability) and logs unauthenticated or unauthorized API requests. \ApiAllowed\ introduces IP-based access control, allowing administrators to restrict API access to specific IP ranges or allow all via '0.0.0.0'. \ApiSensitiveData\ gates access to sensitive data based on token permissions. \CanAccessTerminal\ restricts terminal access to team administrators. \CheckForcePasswordReset\ enforces password resets for users flagged for it. \DecideWhatToDoWithUser\ handles team selection, email verification, subscription status, and onboarding redirects. \TrustHosts\ dynamically trusts the configured FQDN and APP\_URL, caching the result. \TrustProxies\ ensures session cookies are marked secure when behind HTTPS proxies. \ValidateSignature\ and \VerifyCsrfToken\ are configured to exclude webhook routes. \EnsureTokenBelongsToCurrentTeamMember\ validates that API tokens belong to the current team and have appropriate roles. \EnsureMcpEnabled\ gates MCP server access. \CanCreateResources\ and \CanUpdateResource\ are present but currently disabled. \PreventRequestsDuringMaintenance\ allows webhook and health check routes during maintenance. \Authenticate\ and \RedirectIfAuthenticated\ handle standard auth flows. \EncryptCookies\, \TrimStrings\, and other standard middleware are also included.

app/Http/Middleware · high confidence

New API helper functions for request validation and serialization

Added new helper functions in bootstrap/helpers/api.php to standardize API responses and validate incoming requests. The serializeApiResponse function ensures consistent JSON structure by sorting keys and reordering fields (name, description, uuid, id) for both collections and single objects. The validateIncomingRequest function enforces that all API requests are valid JSON, returning a 400 error for invalid or empty payloads. Additionally, sharedDataApplications defines the expected fields and validation rules for application creation and updates via the API.

bootstrap/helpers · high confidence

New Admin Dashboard with User Search and Impersonation

A new Admin Dashboard view has been added at resources/views/livewire/admin/index.blade.php. This page allows administrators to search for users and view their active/inactive subscriber status. It also displays the current user's identity and provides a button to revert from an impersonated state. The user search results are displayed in cards styled with the 'coolbox' class.

resources/views/livewire/admin · high confidence

New Livewire components for project and environment management

The project and environment management interfaces have been migrated to new Livewire components, introducing dedicated UI for creating empty projects, cloning projects and environments, editing project and environment details, and deleting projects and environments with confirmation dialogs. These components handle validation, data synchronization, and redirection, providing a more interactive and consistent user experience for managing projects and their environments.

app/Livewire/Project · high confidence

New Livewire-based onboarding flow for server and project setup

The application introduces a new, interactive onboarding experience for setting up servers and projects. This change replaces the previous implementation with a modern, step-by-step wizard built using Livewire, allowing users to select server types (local or remote), manage SSH keys, and configure projects in a single-page interface. The component manages state for server validation, prerequisite checks, and project selection, providing immediate visual feedback and error handling throughout the setup process.

app/Livewire/Boarding · high confidence

New Livewire-based subscription management interface

The subscription management UI has been rebuilt using new Livewire components (Actions, Index, PricingPlans, Show) to handle subscription flows, including Stripe checkout, server limit updates, refunds, and cancellation. Users can now update their server limits, view pricing previews, and manage their subscription status directly through the new interface.

app/Livewire/Subscription · high confidence

New MariaDB configuration and status components

The application now includes dedicated Livewire components for managing MariaDB instances. The General component allows users to configure database credentials, Docker image, port mappings, and custom Docker run options, with centralized validation rules applied to all fields. The StatusInfo component provides status information for MariaDB, utilizing a shared trait for consistent status display.

app/Livewire/Project/Database/Mariadb · high confidence

New MySQL database management interface

A new Blade view for MySQL database configuration has been added, providing a comprehensive UI for managing general settings, credentials, network ports, proxy visibility, and custom Docker options.

resources/views/livewire/project/database/mysql · high confidence

New S3 storage management interface

Users can now create, edit, and manage S3-compatible storage connections (including Hetzner and DigitalOcean Spaces) through a dedicated Livewire interface. This includes a new creation wizard that validates and auto-formats endpoints, a settings form with a live connection test, and a resources tab that allows grouping backups by database and moving them between storage buckets. The index page lists all team-owned S3 storages, and the show page provides deletion controls and backup counts.

app/Livewire/Storage, resources/views/livewire/storage · high confidence

New Terminal index page for container and server selection

A new Livewire component at app/Livewire/Terminal/Index.php introduces a terminal access interface that lists all active, running containers across reachable servers. The component fetches server and container data, filters for running containers, and allows users to select a container to connect to, dispatching a terminal connection event. This provides the foundational UI and backend logic for terminal access, including loading states and error handling.

app/Livewire/Terminal · high confidence

New Terminal page for browser-based command execution

A new Terminal page has been added, allowing users to execute commands on servers and containers directly from the browser. The page features a dropdown to select a server or container and a Connect button to initiate the terminal session. If no servers with terminal access are found, a corresponding message is displayed.

resources/views/livewire/terminal · high confidence

New and enhanced console commands for system maintenance and administration

A suite of new Artisan commands has been introduced to improve system maintenance and administrative control. Administrators can now perform comprehensive user deletion with the \admin:delete-user\ command, which handles resources, servers, teams, and Stripe subscriptions in a phased, confirmable manner. Routine maintenance is supported by new cleanup commands: \cleanup:database\ for purging old records, \cleanup:redis\ for clearing stale Horizon jobs and locks, \cleanup:names\ to sanitize name fields across models, and \cleanup:stucked-resources\ to force-delete orphaned or stucked resources. Additionally, \CheckApplicationDeploymentQueue\ and \CheckTraefikVersionCommand\ provide diagnostic capabilities for deployments and proxy versions, while \ClearGlobalSearchCache\ allows for manual cache invalidation. The \Dev\ command has also been updated to include Redis cleanup and stucked task marking on startup.

app/Console/Commands · high confidence

New appearance settings and email change flow in profile

Users can now customize their interface preferences, including light/dark/system themes, page width (centered or full), and zoom level (100% or 90%), all saved to the browser's local storage. Additionally, the profile page now includes a dedicated section for changing the account email address, which triggers a verification code sent to the new email, as well as a password reset form and two-factor authentication management.

resources/views/livewire/profile · high confidence

New application status and deployment notification classes

Added new notification classes for application status changes, deployment failures, deployment successes, and restart limit reached events. These classes define how notifications are formatted for email, Discord, Telegram, Pushover, and Slack, ensuring consistent and detailed alerts for critical application states.

app/Notifications/Application · high confidence

New authentication views for login, registration, and password management

Added new Blade templates for the authentication flow, including login, registration, password reset, email verification, and two-factor challenge pages. These views implement the UI for user account creation, secure password confirmation, and recovery processes, integrating with existing form components and session handling.

resources/views/auth · high confidence

New backup execution and index views for database backups

The database backup interface has been updated with new Blade templates for the backup index and execution pages. Users will now see a dedicated 'Backups' header, a configuration checker, and specific Livewire components for managing scheduled backups and viewing backup executions. The index page includes a modal to add new scheduled backups, while the execution page displays the backup edit form and execution history.

resources/views/livewire/project/database/backup · medium confidence

New backup management interface for supported databases

A new backup management interface has been introduced for supported database types. The system now provides dedicated Livewire components to list and execute backups, but explicitly excludes Redis, KeyDB, Dragonfly, and Clickhouse from backup operations, redirecting those users to the configuration page instead.

app/Livewire/Project/Database/Backup · high confidence

New console commands for database restoration and Stripe subscription management

Added three new Artisan commands in the Cloud namespace: \cloud:restore-database\ for restoring PostgreSQL dumps in development, \cloud:sync-stripe-subscriptions\ to check and fix subscription discrepancies with Stripe (with a dry-run/fix mode), and \cloud:fix-subscription\ to verify and correct canceled or inactive subscriptions, including support for dry-run previews and CSV reporting.

app/Console/Commands/Cloud · high confidence

New controllers for authentication, OAuth, and file uploads

Added three new HTTP controllers to handle core user flows: the base \Controller\ now includes methods for email verification, password reset, and invitation acceptance; a new \OauthController\ manages social login redirects and callbacks, enforcing registration settings; and an \UploadController\ handles large file uploads (up to 10 GiB) for database backups, validating allowed file extensions and sizes.

app/Http/Controllers · high confidence

New email notifications for server, application, and system events

A comprehensive set of new email templates has been added to the \resources/views/emails\ directory, enabling users to receive notifications for a wide range of events. These include application deployment status (success/failure), scheduled task execution, Docker cleanup results, and container lifecycle changes (restarts, stops). The update also introduces alerts for server health and maintenance, such as high disk usage, lost connections, automatic revival, and package patch availability. Additional notifications cover subscription and trial status changes, SSL certificate renewals, Traefik version updates, and account security events like email verification and password resets.

resources/views/emails · high confidence

New enum types for application resources, statuses, and roles

A new set of PHP enums has been introduced to standardize state and type definitions across the application. This includes ActivityTypes, ApplicationDeploymentStatus, BuildPackTypes (adding support for Railpack), ContainerStatusTypes, NewDatabaseTypes, NewResourceTypes, ProcessStatus, ProxyTypes (switching from TRAEFIK\_V2 to TRAEFIK), RedirectTypes, Role (with rank-based comparison methods), and StaticImageTypes. These enums provide a consistent, type-safe way to manage resource types, deployment and process statuses, and user roles within the system.

app/Enums · high confidence

New environment-based shared variables interface

A new interface for managing shared environment variables has been added, featuring a list view of environments and a detail view for each. Users can now view environment variables in either a 'normal' list format or a 'developer' monospace text area for bulk editing. Access to add or edit variables is controlled by an 'update' gate, meaning permissions are now enforced at the environment level.

resources/views/livewire/shared-variables/environment · high confidence

New form components for buttons, checkboxes, copy actions, and advanced inputs

The form component library has been expanded with new Blade templates to standardize the user interface for form interactions. A reusable button component now supports confirmation modals and loading states. A new copy-to-clipboard button component provides a visual feedback mechanism for copying text. The form suite now includes a sophisticated datalist component that supports both single and multi-select with search and filtering capabilities. Additionally, a new environment variable input component offers intelligent autocomplete and scope-based variable suggestions. The textarea component has been enhanced to support the Monaco code editor for syntax-highlighted text areas, and the input component now features a password visibility toggle. These components collectively improve the consistency, accessibility, and functionality of the application's forms.

resources/views/components/forms · high confidence

New notification DTOs for Slack, Discord, and Pushover

The application now includes dedicated data transfer objects for formatting messages for Slack, Discord, and Pushover. Slack messages are structured with title, description, and color. Discord messages support title, description, color, critical flags, and inline fields, with automatic timestamping and footer text. Pushover messages include title, message, buttons, and level-based icons. These DTOs enable the system to send notifications via these three new channels.

app/Notifications/Dto · high confidence

New notification channels and UI for event alerts

Added new notification channels—Discord, Slack, Pushover, and Webhook—each with dedicated settings pages to configure credentials and enable alerts for deployments, backups, scheduled tasks, and server events. The existing email and Telegram notification views were also updated to support the same set of event types, allowing users to selectively enable notifications for specific conditions such as container status changes, disk usage, and proxy updates.

resources/views/livewire/notifications · high confidence

New notification channels and alert types for API tokens and SSL certificates

Users can now receive alerts about expiring API tokens and renewed SSL certificates via multiple channels including Discord, Slack, Telegram, and Pushover, in addition to email. A new test notification system allows sending test messages to all configured channels to verify connectivity. The notification system has been refactored to support these new channels and message formats.

app/Notifications · high confidence

New notification channels: Discord, Slack, Telegram, Pushover, and Webhooks

The notification settings interface has been expanded to support five new channels: Discord, Slack, Telegram, Pushover, and generic Webhooks. Each channel includes granular toggle switches for specific event types (deployments, backups, server status, etc.) and dedicated UI components in the Livewire Notifications directory, allowing users to configure and receive alerts via these platforms.

app/Livewire/Notifications · high confidence

New project resource creation and listing views

The project resource index and create views have been replaced with new Blade templates that implement a hierarchical navigation system. The index view now features a dual-level dropdown menu allowing users to navigate between environments and their associated resources (applications, databases, services) via a structured breadcrumb and sidebar. The create view has been refactored to dynamically render specific resource creation forms (e.g., Git repositories, Dockerfiles) based on the selected type, improving the workflow for adding new resources to a project.

resources/views/livewire/project/resource · high confidence

New real-time event system for status and configuration changes

A new set of Laravel events has been introduced to broadcast real-time updates to the UI. These include status change events for applications, databases, and services, as well as specific events for proxy status, scheduled tasks, Docker cleanup, and server reachability. The system also includes events for Cloudflare tunnel changes, file storage updates, and backup operations. Most events broadcast to private channels scoped to a specific team or user, enabling live notifications for server and service state changes.

app/Events · high confidence

New resource creation flow restructured into dedicated Livewire components

The 'New' resource creation interface has been refactored into specific, single-purpose Livewire components (DockerCompose, DockerImage, EmptyProject, GithubPrivateRepository, GithubPrivateRepositoryDeployKey, PublicGitRepository, Select, and SimpleDockerfile). This change introduces a more modular and explicit UI for each resource type, with each component handling its own validation, state, and submission logic. For example, DockerImage now features auto-parsing of image references and SHA256 digest support, while PublicGitRepository and its private counterpart handle branch selection and repository loading with improved error handling and validation. The Select component now drives the initial resource type selection, and each component is scoped to its specific resource creation path.

app/Livewire/Project/New · high confidence

New resource creation flow with dedicated templates for Docker, Git, and static deployments

The new resource selection page now offers distinct, dedicated templates for creating different types of resources: a searchable and filterable main selection view, plus specific forms for Docker images, Docker Compose, simple Dockerfiles, public and private Git repositories, and empty projects. This restructures the project creation workflow to guide users through specialized interfaces for each deployment type, including enhanced handling for GitHub apps, deploy keys, and build packs.

resources/views/livewire/project/new · high confidence

New reusable UI components for consistent interface design

Introduced a suite of new Blade components to standardize the user interface, including a dismissible banner, a boarding progress stepper, a callout for warnings and errors, and various modal and dropdown structures. These components provide a consistent visual language across the application, supporting features like multi-step onboarding flows, domain conflict warnings, and standardized confirmation dialogs.

resources/views/components · high confidence

New security management interfaces for API tokens and cloud provider integrations

Added new Livewire components for managing API tokens and cloud provider tokens (Hetzner, DigitalOcean). Users can now create, validate, and revoke API tokens with granular permissions (root, write, deploy, read, read:sensitive) and expiration settings. Additionally, a new interface allows managing cloud-init scripts and storing cloud provider API tokens, with validation and deletion capabilities.

resources/views/livewire/security · high confidence

New server creation forms for Hetzner and IP-based servers

Introduced new Livewire components (ByHetzner.php and ByIp.php) to handle server provisioning workflows. The Hetzner form supports multi-step configuration including token selection, image/location/server type selection, IPv4/IPv6 network configuration, cloud-init script support, and SSH key management. The IP-based form allows manual server addition with validation for IP uniqueness, port ranges, and build server status. Both forms integrate with existing team authorization, private key management, and server limit checks.

app/Livewire/Server/New, resources/views/livewire/server/new · high confidence

New server security management components for patches and terminal access

Added two new Livewire components, Patches and TerminalAccess, to the server security section. The Patches component enables users to check for and apply package updates on their servers, including a development-mode feature to send a test email notification about available patches. The TerminalAccess component allows administrators and team owners to enable or disable terminal access on a server, protected by password confirmation and authorization checks.

app/Livewire/Server/Security · high confidence

New server setup and management actions

Introduced a suite of new server actions to streamline server provisioning and maintenance. The \InstallPrerequisites\ and \InstallDocker\ actions automate the installation of required system packages and Docker Engine across various Linux distributions (Debian, RHEL, SLES, Arch). A new \CheckUpdates\ action enables server-side package updates, while \CleanupDocker\ provides granular control over unused image, volume, and network cleanup, including application image retention for rollbacks. Additional actions include \ConfigureCloudflared\ for automated tunnel setup, \DeleteServer\ with Hetzner integration, and \StartSentinel\/\StopSentinel\ for managing the monitoring agent. These changes shift server lifecycle management from manual scripts to structured, reusable PHP actions.

app/Actions/Server · high confidence

New server status and maintenance notifications

Added new notification classes for server lifecycle and maintenance events, including Docker cleanup success/failure, server force enable/disable, Hetzner deletion failures, high disk usage, server reachability (unreachable/revived), server patch checks, and Traefik version outdated warnings. Each notification supports email, Discord, Slack, Telegram, Pushover, and webhook channels, ensuring users are alerted about critical server states and maintenance requirements.

app/Notifications/Server · high confidence

New service configuration and management UI

The service configuration interface has been restructured into a dedicated set of Blade templates, providing a unified sidebar navigation for General, Environment Variables, Persistent Storages, Scheduled Tasks, Webhooks, Resource Operations, Tags, and Danger Zone. This includes new views for editing Docker Compose files with dynamic editor height, managing file-based and directory-based volumes with read-only and size-limit warnings, and handling domain configurations with port requirement warnings and conflict detection. The layout separates service-specific settings from the main dashboard, offering a cleaner, more organized experience for managing individual service resources.

resources/views/livewire/project/service · high confidence

New service configuration and management UI components

A new set of Livewire components for the Service resource has been introduced, including Configuration, DatabaseBackups, EditCompose, EditDomain, FileStorage, Heading, Index, ResourceCard, StackForm, and Storage. These components provide the user interface for managing service configurations, editing Docker Compose files, handling file storage and volumes, and controlling service lifecycle (start, stop, restart). The StackForm component specifically adds validation to prevent command injection in Docker Compose files, while the Storage and FileStorage components enable users to manage persistent and file-based storage directly from the UI.

app/Livewire/Project/Service · high confidence

New service detail page components

Added three new Blade view components for the service detail page: Advanced, Explanation, and Links. The Links component specifically handles the display of application URLs and ports, extracting FQDNs and port mappings from the service's applications.

app/View/Components/Services · high confidence

New services for changelog, container status, configuration, and proxy dashboard caching

Added ChangelogService to fetch and track user read status for changelog entries, including an unread count method. Introduced ContainerStatusAggregator to centralize container status logic with a priority-based state machine that handles mixed states (e.g., running, restarting, exited) and preserves 'Restarting' status for sub-resources. Created ConfigurationGenerator to build application configuration objects, and ConfigurationRepository to manage mail and SSH mux settings. Added DockerImageParser to handle image string parsing, including SHA256 hashes. Implemented ProxyDashboardCacheService to manage Traefik dashboard availability caching. Added SchedulerLogParser to retrieve recent skipped jobs and manager start events. These services collectively enhance the application's ability to manage configuration, track user engagement with changelogs, and monitor container and scheduler states.

app/Services · high confidence

New settings navigation components

Added new Blade components for the settings area: a top navbar (resources/views/components/settings/navbar.blade.php) providing links to Configuration, Backup, Transactional Email, OAuth, and Scheduled Jobs, and a sidebar (resources/views/components/settings/sidebar.blade.php) for General, Advanced, and Updates settings. Both components use Livewire's wireNavigate for navigation.

resources/views/components/settings · high confidence

New shared Livewire components for resource management

Introduced a suite of new shared Livewire components in app/Livewire/Project/Shared to handle resource operations, including ConfigurationChecker for tracking configuration diffs, Danger for secure resource deletion, Destination for managing server and network assignments, ExecuteContainerCommand for container command execution, GetLogs and Logs for log viewing, HealthChecks for configuring health checks, Metrics for resource monitoring, ResourceDetails for displaying resource information, ResourceLimits for setting CPU and memory constraints, and ResourceOperations for managing resource lifecycles.

app/Livewire/Project/Shared · high confidence

New shared resource management views for configuration, logs, and operations

Introduced a set of new shared Blade templates in the \resources/views/livewire/project/shared\ directory to standardize the user interface for managing resources. This includes a configuration checker that alerts users when unapplied configuration changes require a redeploy, a dedicated logs viewer with filtering and search capabilities, a health check configuration form supporting both HTTP and CMD types, and a resource operations panel for cloning, moving, or deleting resources. Additionally, new views for terminal access, metrics visualization, and resource details provide a consistent experience across applications, databases, and services.

resources/views/livewire/project/shared · high confidence

New subscription management actions for cancellation, refunds, and quantity updates

Added new Stripe action classes to handle subscription lifecycle management. Users can now cancel subscriptions immediately or at the end of the billing period, process full refunds within a 30-day window, and adjust server limits (subscription quantity) with real-time price previews. The implementation includes robust error handling, dry-run capabilities for user deletion workflows, and automatic reversion of quantity changes if payment fails.

app/Actions/Stripe · high confidence

New tag management and deployment tracking views

Users can now view a list of all tags and access a dedicated page for each tag. The tag detail page displays associated applications and services, provides a bulk redeploy action, and shows a live-updating list of current deployments with status indicators.

resources/views/livewire/tags · high confidence

New team members management page

A new Livewire view for managing team members has been added, displaying a table of current members with their name, email, and role, alongside an invitation section that conditionally displays an email configuration warning if transactional emails are not enabled.

resources/views/livewire/team/member · high confidence

New terminal server implementation with enhanced security and session management

The Coolify Realtime container now includes a new terminal-server.js implementation that enforces an 8-hour session timeout, validates WebSocket clients using XSRF and Laravel session cookies, and restricts SSH target hosts to an authorized IP list. The Dockerfile integrates Cloudflared for tunneling support and updates the base image to Soketi 1.6-16-alpine with cloudflared 2025.7.0. The entrypoint script manages both the terminal server and Soketi processes, forwarding signals and handling logs. Tests verify the new utility functions for SSH argument parsing and host authorization.

docker/coolify-realtime · high confidence

New user registration, password, and profile update actions

Added Fortify action classes for creating new users, resetting and updating passwords, and updating user profile information. The registration flow now enforces a registration-enabled check, assigns the first user as root, and handles email verification for cloud environments. Password resets now invalidate all existing sessions, and profile updates trigger email verification if the email address changes.

app/Actions/Fortify · high confidence

Nightly build now includes full installation and upgrade scripts with configurable Docker network pools

The nightly build now provides the complete set of deployment and maintenance scripts, including install.sh, upgrade.sh, and upgrade-postgres.sh, alongside the corresponding docker-compose configurations (.env.production, docker-compose.yml, docker-compose.prod.yml, docker-compose.windows.yml). The installation and upgrade processes now support pre-configuring the root user via environment variables (ROOT\_USERNAME, ROOT\_USER\_EMAIL, ROOT\_USER\_PASSWORD) and allow customization of the Docker network address pool (DOCKER\_ADDRESS\_POOL\_BASE, DOCKER\_ADDRESS\_POOL\_SIZE). The upgrade script also introduces logging to /data/coolify/source and status tracking for API polling.

other/nightly · high confidence

Redesign environment variable management with new UI components

The environment variable management interface has been completely redesigned with new Blade templates for adding, listing, and displaying variables. The 'all' view now supports a 'Developer view' for bulk editing and a 'Normal view' with search and filtering. New components include 'show-hardcoded' for displaying inherited or hardcoded variables, and an 'add' form with support for multiline values, literal strings, and build-time/runtime toggles. The UI now distinguishes between shared and non-shared variables, with specific controls for Docker build secrets and environment sorting.

resources/views/livewire/project/shared/environment-variable · high confidence

Redesigned onboarding flow with new server selection options

The onboarding experience has been completely redesigned to guide users through a modern, step-by-step setup process. New users are now presented with clear choices for their first server: a local 'Quick Start' for testing, a 'Remote Server' for cloud or bare metal, or a direct 'Hetzner Cloud' integration. The flow includes an introductory overview of Coolify's capabilities, such as automated Docker management and self-hosted deployment, before allowing users to skip the process.

resources/views/livewire/boarding · high confidence

Refactored database backup management into dedicated Livewire components

The database backup management interface has been refactored into specific Livewire components (BackupEdit, BackupExecutions, CreateScheduledBackup, Heading, Health, Import, ImportForm, InitScript, and ScheduledBackups). This change introduces granular control over scheduled backups, including the ability to disable local backups, configure S3 storage retention, and manage backup executions. The refactoring also adds validation for database names and file paths to prevent command injection, and introduces health check configuration for standalone databases.

app/Livewire/Project/Database · high confidence

Refactored database start and proxy actions to support new standalone database types

The \app/Actions/Database\ directory was restructured to introduce dedicated action classes for starting and managing standalone database instances, including ClickHouse, Dragonfly, and KeyDB, alongside existing ones like PostgreSQL, MySQL, and Redis. The \StartDatabase\ class now routes to specific handlers for each database type, while \StartDatabaseProxy\ and \RestartDatabase\ have been updated to handle the new types and their specific configuration requirements, such as SSL certificate generation and volume mounting. This change ensures that all supported database types are managed through a consistent, type-specific action pattern.

app/Actions/Database · high confidence

Reworked server sidebar navigation with dedicated sub-menus

The server sidebar has been restructured to improve navigation clarity. A new main sidebar component (sidebar.blade.php) organizes general, advanced, private key, and other server settings. Additionally, three new sub-menu components have been introduced: sidebar-proxy.blade.php for proxy configuration, dynamic configurations, and logs; sidebar-security.blade.php for server patching and terminal access; and sidebar-sentinel.blade.php for Sentinel configuration and logs. These changes group related settings into logical sections, making it easier for users to find and manage specific server features.

resources/views/components/server · high confidence

Server shared environment variables management

Added new Blade templates for the server shared variables feature, enabling users to view a list of servers and manage their shared environment variables. The index view lists all servers, while the show view allows adding, editing, and saving shared environment variables for a specific server, supporting both a normal list view and a developer textarea view.

resources/views/livewire/shared-variables/server · high confidence

Track and display application configuration changes

The application now tracks and displays configuration differences between deployments. A new \ApplicationConfigurationSnapshot\ service captures the current state of an application's settings, build, runtime, domain, and environment variables. A \ConfigurationDiffer\ compares snapshots to identify changes, categorizing them by impact (build or redeploy) and section. The \configuration-diff\ Blade component renders these changes in a modal, showing field names, old and new values, and indicating whether a rebuild or redeploy is required. Sensitive values are masked, and long text fields are truncated with an option to expand.

app/Services/DeploymentConfiguration, resources/views/components/deployment · high confidence

Removals

Removal of legacy application deployment and configuration logic

The API's application management module has been removed, including the core orchestration logic for building and deploying applications via Docker. This change eliminates the previous implementation that handled repository cloning, container image building, service deployment, and log management for applications and databases. The deletion of these files indicates a significant architectural shift away from the old deployment pipeline.

api, api/libs/applications · high confidence

Removed legacy Docker-based installation scripts and templates

The \install\ directory's legacy installation mechanism has been removed. This includes the deletion of \install/Dockerfile\, \install/Dockerfile-base\, \install/coolify-template.yml\, \install/install.js\, and \install/update.js\. Users relying on these specific files for manual Docker-based installation or updates will need to use the updated installation method provided by the new version.

install · high confidence

Security

Encrypted storage for sensitive application configuration data

A new \EncryptedArrayCast\ class has been introduced to handle the encryption of array-type database columns, ensuring that sensitive configuration data is stored as encrypted JSON rather than plaintext. This change enhances security by protecting application settings and environment variables at rest, with backward compatibility for legacy unencrypted records.

app/Models · high confidence

New validation rules for URLs, IPs, and configuration files

Added new validation rules in the app/Rules directory to enforce stricter input validation across the application. This includes SafeExternalUrl and SafeWebhookUrl to prevent Server-Side Request Forgery (SSRF) by blocking internal, loopback, and reserved IP ranges; ValidIpOrCidr and ValidDnsServers to validate IP addresses and CIDR notations; ValidHostname and ValidServerIp for robust hostname and IP validation; ValidGitRepositoryUrl and ValidGitBranch to secure Git URLs and branch names against command injection; and ValidCloudInitYaml, ValidProxyConfigFilename, and DockerImageFormat to validate configuration files and image formats. These changes enhance security and data integrity by rejecting malformed or dangerous inputs at the validation layer.

app/Rules · high confidence

Architecture

Centralize application configuration into dedicated config files

The application's configuration has been refactored from a single, monolithic file into separate, dedicated configuration files (e.g., api.php, app.php, auth.php, database.php). This change improves maintainability and allows for more granular control over settings such as API rate limits, authentication guards, and database connections.

config · high confidence

Refactored proxy management actions for improved clarity and consistency

The proxy management logic has been refactored into four dedicated action classes: CheckProxy, GetProxyConfiguration, SaveProxyConfiguration, and StartProxy (alongside the existing StopProxy). This change replaces the previous monolithic or loosely organized proxy handling with a consistent, single-responsibility structure. CheckProxy now handles proxy status checks and port conflict detection. GetProxyConfiguration manages the retrieval and validation of proxy configurations, ensuring they match the current proxy type. SaveProxyConfiguration handles the persistence of proxy configurations to disk and database. StartProxy orchestrates the proxy startup process, including dynamic configuration generation and container management. This refactoring improves code maintainability and consistency across proxy operations.

app/Actions/Proxy · high confidence

Behavioural changes

Add advanced configuration and backup management options to the service database sidebar

The service database component now includes a new sidebar navigation that provides access to an 'Advanced' settings page and, when available, 'Backups' and 'Import Backup' options. This change introduces the UI structure for managing service configurations and database backups directly from the sidebar menu.

resources/views/components/service-database · high confidence

Added English translations for password reset messages

The application now includes English language files for password reset notifications, providing user-facing messages for successful resets, email delivery status, invalid tokens, and rate-limiting. This enables the system to display appropriate feedback to users during the password recovery process.

lang/en · medium confidence

Application lifecycle actions refactored into dedicated classes

The application management logic has been reorganized into specific action classes: CleanupPreviewDeployment handles the full cleanup of PR preview deployments (canceling active deployments, killing helper containers, and dispatching the DeleteResourceJob); StopApplication and StopApplicationOneServer manage the graceful stopping of application containers with configurable grace periods and server iteration; and supporting actions like GenerateConfig, IsHorizonQueueEmpty, and LoadComposeFile encapsulate their respective responsibilities. This structure unifies cleanup logic across providers and ensures resources are stopped and removed cleanly.

app/Actions/Application · medium confidence

Application settings and management UI restructured into dedicated Livewire components

The application configuration, general settings, source management, and deployment controls have been migrated from the previous monolithic or mixed Blade/Livewire structure into dedicated, isolated Livewire components (Advanced, General, Source, Heading, etc.). This change improves maintainability and allows each section of the application settings to be managed independently. Users will see a more organized settings interface where each tab or section (e.g., General, Advanced, Source, Previews) is handled by its own component, ensuring that changes in one area do not inadvertently affect others. The migration also introduces stricter validation and real-time updates for application properties like force HTTPS, git shallow cloning, and deployment queue management.

app/Livewire/Project/Application · high confidence

Authorization checks disabled across all resource policies

The application's authorization layer has been effectively disabled for most resources. In the \app/Policies\ directory, numerous policy classes—including ApiToken, Application, Database, Environment, GithubApp, Project, Service, and others—have been updated to return \true\ for all actions, bypassing previous checks for admin status, team membership, or ownership. This change grants all authenticated users unrestricted access to view, create, update, and delete these resources, significantly reducing the security posture of the application.

app/Policies · high confidence

Centralized HTTP middleware configuration for new security and access controls

The application now uses an explicit HTTP Kernel to register global, group, and alias-based middleware. This introduces new middleware aliases for API token team context validation, resource creation and update authorization, sensitive data handling, and MCP (Model Context Protocol) enablement, alongside standard authentication and session management. Users will experience stricter access controls on API endpoints and resource management features, with specific middleware ensuring tokens belong to the correct team and that users have the necessary permissions to create or update resources.

app/Http · high confidence

Centralized configuration and authentication setup

The application's provider structure has been reorganized into dedicated service providers to improve modularity and security. AppServiceProvider now handles environment-specific configurations, including stricter password requirements for production, disabling Eloquent strict mode, and configuring the GitHub HTTP client. AuthServiceProvider maps policies to models (Server, PrivateKey, Application, etc.) and defines gates for resource creation and terminal access. FortifyServiceProvider manages the login flow, including automatic team attachment for invited users and rate limiting for login and password reset endpoints. HorizonServiceProvider configures job handling and suppresses specific failure logs on cloud environments. RouteServiceProvider centralizes rate limiting for API and web routes. These changes collectively enhance security by enforcing stronger passwords, securing rate limiters against header spoofing, and implementing granular access control policies.

app/Providers · high confidence

Centralized scheduling for background jobs and cleanup tasks

The application's console kernel has been refactored to use a centralized scheduling mechanism for background jobs. This change introduces a new \ScheduledJobManager\ to handle backups and tasks, while also managing the frequency and timezone for update checks, auto-updates, and various cleanup jobs (such as Redis keys, orphaned containers, and stale SSH connections). The schedule now distinguishes between development and production environments, with production jobs running on a single server to prevent duplicate executions.

app/Console · high confidence

The error pages for HTTP status codes 400, 401, 402, 403, 404, 419, 429, 500, and 503 have been replaced with custom, styled views. These pages now include consistent navigation options, allowing users to return to the previous page, go to the dashboard, or contact support. The 500 error page additionally displays the exception message, sanitized using Purify, and the 419 page includes specific troubleshooting steps for reverse proxy or Cloudflare Tunnel users.

resources/views/errors · high confidence

Debug mode now clears optimized classes after installing dev dependencies

When the APP\_DEBUG environment variable is set to true, the Docker entrypoint script now automatically installs development dependencies via Composer and then runs the artisan optimize:clear command to clear optimized classes. This ensures that the application state is properly reset for debugging sessions.

docker/production/entrypoint.d · high confidence

Enhanced container status aggregation and restart tracking

The GetContainersStatus action now provides more granular container status reporting, including support for Docker Swarm label fallbacks and preservation of 'Restarting' states with health suffixes. It also introduces container restart counting and crash loop detection logic, allowing the system to track and potentially limit repeated container restarts.

app/Actions/Docker · high confidence

Enhanced terminal connection management and session handling

The terminal component now features improved connection management with auto-reconnect logic, heartbeat-based keep-alive to prevent idle disconnects, and an eight-hour session expiry with a visible countdown timer. Additionally, the JavaScript entry point (app.js) was updated to initialize the terminal on Livewire navigation events and strip stale x-cloak attributes to prevent UI blanking during navigation.

resources/js · high confidence

Improved proxy status handling and Traefik version check integration

The application now handles proxy status changes more robustly. For Traefik proxies, the system verifies the Traefik version after the proxy becomes running, dispatching a background job to check versions before updating the UI. For Cloudflare tunnels, a new listener ensures the tunnel container is healthy before updating server settings and IP addresses, with retry logic for health checks. Additionally, proxy status changes now trigger appropriate UI updates, with specific handling to avoid redundant UI refreshes when version checks are in progress.

app/Listeners · medium confidence

Migrate app/Livewire components to Livewire 3

The app/Livewire directory has been fully migrated to Livewire 3, introducing new component classes such as ActivityMonitor, Dashboard, DeploymentsIndicator, GlobalSearch, Help, LayoutPopups, MonacoEditor, NavbarDeleteTeam, SettingsBackup, SettingsDropdown, SettingsEmail, SettingsOauth, SwitchTeam, Upgrade, and VerifyEmail. This migration updates the framework version and restructures the component implementations to align with Livewire 3's API and conventions.

app/Livewire · high confidence

Migrate service startup to s6-overlay for production

The production Docker image now uses s6-overlay to manage the startup of background services. Database migrations, the application init script, and the database seeder are now defined as one-shot s6 services that run before the main application starts. Additionally, the Horizon worker, Nightwatch agent, and scheduler worker are now managed as long-running s6 services that respect environment variables (HORIZON\_ENABLED, NIGHTWATCH\_ENABLED, SCHEDULER\_ENABLED) to conditionally start or sleep, replacing the previous method of starting these processes.

docker/production/etc/s6-overlay · high confidence

Migrate service startup to s6-overlay scripts

The Docker development environment now uses s6-overlay scripts to manage the startup of background workers. The Horizon, scheduler, and Nightwatch agent services are now controlled via dedicated run scripts that check environment variables (HORIZon\_ENABLED, SCHEDULER\_ENABLED, NIGHTWATCH\_ENABLED) to conditionally start or sleep, replacing the previous Artisan command-based startup. An init-setup script handles initial setup steps like composer install and database migrations.

docker/development/etc/s6-overlay · high confidence

Migrate storage management components to Livewire 3

The storage management interface has been migrated to Livewire 3, introducing new \All\ and \Show\ components. The \All\ component now provides a stable method to retrieve the first storage ID, ensuring consistent display even when storages are deleted. The \Show\ component implements explicit property binding, validation rules for volume names and paths, and handles instant saving and deletion with password confirmation. This change improves stability and user experience when managing project storages.

app/Livewire/Project/Shared/Storages · medium confidence

Migrated GitHub source configuration to new Livewire components

The GitHub source configuration interface has been refactored into dedicated Livewire components (\Change.php\ and \Create.php\) within the \app/Livewire/Source/Github\ directory. This change introduces a new UI for managing GitHub App settings, including support for custom webhook endpoints, private key authentication, and explicit validation for API/HTML URLs. Users will now interact with a more structured form for creating and editing GitHub source connections, with improved handling of permissions and state management via the new Livewire architecture.

app/Livewire/Source · high confidence

Migrated Postgres database management to new Livewire 3 components

The Postgres database management interface has been rewritten using new Livewire 3 components (General.php and StatusInfo.php). This update introduces centralized validation for database credentials, ports, and configuration, while adding support for custom Docker run options, log drain settings, and SSL mode selection. Users will see improved input validation, better error handling for null server states, and a more responsive UI for managing Postgres instances.

app/Livewire/Project/Database/Postgresql · high confidence

New dedicated view for the team invitation acceptance flow

A new Blade template for the invitation acceptance page has been added, providing a dedicated UI for users to view their team invitation details (team name, role) and accept or dismiss the invitation via a POST form. This view supports a conditional warning if the user is already a member of the team, and includes a button to either 'Accept Invitation' or 'Dismiss Invitation' depending on the user's current status.

resources/views/invitation · medium confidence

New deployment index and show components with pagination, PR filtering, and log improvements

The deployment list now supports pagination and filtering by pull request ID, allowing users to navigate through deployment history and isolate specific PRs. The deployment detail view includes a debug toggle, prevents multiple finish events from firing, and provides a download-all-logs feature that formats output with timestamps and command prefixes.

app/Livewire/Project/Application/Deployment · high confidence

New email template components for consistent email styling

The email rendering system has been refactored to use new Blade components (header, footer, and layout) that provide a consistent structure for all outgoing emails. The header component now displays 'Hello,' as the default greeting, while the footer component includes a thank-you message with the application name and a link to contact support. These components are wrapped in a new layout component that combines the header, content, and footer, ensuring all emails follow this unified format.

resources/views/components/emails · high confidence

New manual webhook controllers for Bitbucket, Gitea, GitHub, GitLab, and Stripe

The webhook handling logic for Bitbucket, Gitea, GitHub, GitLab, and Stripe has been moved into dedicated controller classes (Bitbucket, Gitea, Github, Gitlab, and Stripe) under app/Http/Controllers/Webhook/. Each controller implements a manual() method that validates incoming webhooks, verifies signatures or tokens, checks server status, and queues deployments or processes events. This refactoring centralizes webhook processing, improves security through signature verification, and provides consistent error handling and audit logging for each provider.

app/Http/Controllers/Webhook · high confidence

New team management and administration views

The team management interface has been rebuilt using new Blade templates for team creation, member management, and invitations. Users can now create teams, manage team members with role-based actions (promote to owner/admin, remove, or change roles), and manage pending invitations. An admin view has been added to search for and delete users, and the team deletion flow now requires confirmation and checks for active subscriptions or existing resources.

resources/views/livewire/team · high confidence

Redesign of status components with health check context

The status display for applications and services has been redesigned to provide more context about container health. The new \status\ components (\running\, \degraded\, \restarting\, \stopped\) now parse backend status strings (e.g., \running:healthy\) to display both the primary state and the specific health check result (e.g., \Running (healthy)\). Additionally, the \running\ component now shows a helper message when a container is in an \unknown\ or \unhealthy\ state, linking to documentation about health checks. The \index\ and \services\ components have been updated to route to these new specific status components, and the \stopped\ component now correctly hides health status for exited containers.

resources/views/components/status · high confidence

Redesign private key management interface

The private key management section has been completely redesigned with new views for creating, listing, and managing SSH keys. Users can now generate new ED25519 or RSA SSH keys directly from the interface, with a streamlined form for entering private keys and viewing public keys. The list view displays all private keys with status indicators for unused keys, and includes a dedicated button to delete unused keys. The detail view allows editing key names, descriptions, and updating the private key, with a toggle to show/hide the sensitive private key value. The interface also respects user permissions, showing view-only states for users without edit access.

resources/views/livewire/security/private-key · high confidence

Redesign storage management UI with read-only and editable states

The storage management interface has been refactored into two new Blade components: \all.blade.php\ and \show.blade.php\. The \all\ component now iterates through persistent storages and renders them using the new \show\ component. The \show\ component introduces a clear distinction between read-only and editable storage states. For read-only volumes (such as those in Docker Compose apps or services), the UI displays a warning and disables editing fields. For editable volumes, users can modify the name, source path, and mount path, with an additional option to enable a PR suffix for preview deployments. The layout has been restructured to improve clarity and responsiveness, and confirmation modals have been updated for deletion actions.

resources/views/livewire/project/shared/storages · medium confidence

Redesigned and refactored the resource breadcrumbs component

The breadcrumbs component has been completely rewritten to improve navigation and accessibility. It now supports passing \lastDeploymentInfo\ and \lastDeploymentLink\ props to display the latest deployment status. The layout has been updated to use flexbox for better wrapping on smaller screens, and dropdowns for project and environment selection now feature improved positioning, hover states, and SPA navigation via \wire:navigate\. The component also handles various resource types (applications, services, databases) with specific routing and display logic.

resources/views/components/resources · high confidence

Redesigned deployment list and log viewer with search and filtering

The deployment index view has been completely rewritten to include pull request filtering and pagination, allowing users to narrow down deployment lists by pull request ID. The deployment show view now features a full-height log viewer with client-side search, highlighting, and copy functionality, alongside improved status indicators and commit message display.

resources/views/livewire/project/application/deployment · high confidence

Redesigned project and environment management UI

The project and environment management interfaces have been completely redesigned with new Blade templates. Users can now create new projects and environments via inline modals, edit their details, and access dedicated confirmation modals for deletion. The project index displays projects in a grid with quick-add and settings actions, while the project show page lists environments sorted by creation date. A new clone interface allows users to duplicate resources to a new project or environment, selecting a target server and network. All views utilize consistent styling with the 'coolbox' class and wire:navigate for smooth navigation.

resources/views/livewire/project · medium confidence

Redesigned subscription management with pay-as-you-go pricing

The subscription interface has been rebuilt using Livewire components, introducing a new pay-as-you-go pricing model for Cloud users. The updated subscription page now displays the active plan, billing interval, and next billing date. Users can adjust their server limits directly from the subscription page, with a modal that calculates prorated charges and displays a price preview before confirming updates. The pricing plans component now supports monthly and annual billing cycles, showing dynamic pricing based on the number of connected servers. Additionally, the page includes a billing portal link for managing payment methods and a warning when server limits are exceeded.

resources/views/livewire/subscription · high confidence

Refactor form components with unique IDs and authorization-based disabling

The form input components (Button, Checkbox, Datalist, EnvVarInput, Input, Select, and Textarea) have been refactored to use the Cuid2 library for generating unique HTML IDs, which prevents duplicate ID warnings and ensures proper form binding. Additionally, each component now supports an authorization check via the Laravel Gate; if a user lacks the specified permission, the component is automatically disabled, improving security and user experience by preventing unauthorized actions.

app/View/Components/Forms · high confidence

Refactored Destination management into dedicated Livewire components

The Destination management interface has been refactored into three new Livewire components: Index, Resources, and Show. The Index component now handles the listing of all destinations, while the Show component manages the editing and deletion of individual destinations, including the ability to remove associated Docker networks. A new Resources component displays all applications, services, and databases deployed to a specific destination, providing a centralized view of resources. This change reorganizes the UI logic into distinct, reusable components for better maintainability.

app/Livewire/Destination, app/Livewire/Server · high confidence

Refactored destination management UI into dedicated Livewire components

The destination management interface has been refactored into separate Blade templates for the index, show, and resources views, each with their own Livewire component structure. The index view now displays a grid of destinations with links to their respective pages, while the show view provides a form for editing destination details and a delete confirmation modal. The resources view lists all resources deployed to a destination in a table format with search functionality. These changes improve the organization and maintainability of the destination management feature.

resources/views/livewire/destination · high confidence

Refactored service lifecycle management with dedicated action classes

The service management logic has been restructured into dedicated action classes (DeleteService, RestartService, StartService, StopService) to handle the full lifecycle of services. This refactoring introduces parallel container stopping for improved performance, ensures .env files are created before Docker Compose operations, and adds explicit handling for volume and network cleanup during deletion. The StartService action now manages network creation and log-drain connectivity, while StopService cancels in-progress deployments to prevent status lock-ups.

app/Actions/Service · high confidence

Refined exception handling and error reporting

The application now uses custom exception classes to better categorize errors. Deployment and non-reportable exceptions are excluded from Sentry and other error tracking services, reducing noise from expected failures. The exception handler now returns JSON 401/403 responses for API requests, providing structured error messages for authorization and authentication failures. Additionally, Sentry reports now include the user's email and instance admin email for better support and debugging.

app/Exceptions · high confidence

Removal of the Loading component

The Loading component, which previously rendered a CSS-based animated loader, has been removed from the application. This change eliminates the visual loading state previously provided by this component.

src/components · high confidence

Removed database configuration and icon components

The database configuration form and associated SVG icon components for MongoDB, MySQL, PostgreSQL, and CouchDB have been removed from the application. This eliminates the user-facing interface for selecting and deploying these specific database types.

src/components/Databases · high confidence

Removed legacy SvelteKit configuration components

The Configuration directory's Svelte components (Branches, Configuration, Login, Repositories, and Tabs) have been deleted. This removes the previous implementation of the application configuration flow, likely as part of a migration to a new framework or architecture.

src/components/Application/Configuration · high confidence

Removed legacy SvelteKit pages and layout components

Deleted all Svelte files in the src/pages directory, including the main App component, layout wrappers for the dashboard, application, and database sections, and all page-specific components. This removes the previous routing structure and associated UI elements, indicating a migration away from the older Svelte/Routify-based page architecture.

src/pages · high confidence

Removed legacy configuration components for build, general, and secret settings

The Svelte components for configuring build steps, general application settings, and secrets have been removed from the application configuration interface. This removes the ability to directly edit build commands, install commands, base directories, build packs, domains, paths, ports, and secret key-value pairs through these specific UI elements.

src/components/Application/Configuration/ActiveTab · high confidence

Reorganized and enhanced service generation commands

The service generation commands have been reorganized into a new 'Generate' namespace, with separate classes for OpenAPI and Services. The Services command now generates two versions of the service templates: one with the standard SERVICE\_URL variable and another with the more specific service FQDN (fully qualified domain name) variable, ensuring that environment files and compose templates are correctly updated. Additionally, the OpenAPI generation command now outputs a properly formatted JSON file with a trailing newline.

app/Console/Commands/Generate · medium confidence

Security section navigation restructured with new tabs

The Security section now features a dedicated navbar component that organizes access to Private Keys, Cloud Tokens, Cloud-Init Scripts, and API Tokens. This new layout groups these security-related settings under a single navigation bar, with each tab linking to its respective management page. The navbar also includes conditional rendering for Cloud Tokens and Cloud-Init Scripts based on user permissions, and uses Livewire's wire:navigate for smooth page transitions.

resources/views/components/security · high confidence

Settings page restructured into dedicated Livewire components

The Settings page has been refactored into separate, dedicated Livewire components (Advanced, Index, ScheduledJobs, Updates) to improve code organization and maintainability. This change introduces new settings for auto-update and update check frequencies, adds manual update check functionality, and includes a domain conflict detection feature with a user confirmation modal. Additionally, the scheduled jobs view now supports pagination and enriched skip logs with resource links.

app/Livewire/Settings · high confidence

Settings page restructured into dedicated sub-pages

The settings interface has been refactored to separate distinct configuration areas into their own Blade templates, improving navigation and code organization. General settings (URL, name, timezone, IPs) are now in \index.blade.php\. Advanced settings (registration, DNS, API, MCP, UI, confirmations) are in \advanced.blade.php\. Scheduled job monitoring (failures, scheduler runs, skipped jobs) is now in \scheduled-jobs.blade.php\. Update and auto-update configurations are in \updates.blade.php\. This change provides a cleaner, more modular settings experience for users.

resources/views/livewire/settings · high confidence

Updated Horizon dark mode styles with Bootstrap 4.6.2

The Horizon dashboard's dark mode styling has been updated to use Bootstrap 4.6.2, introducing a comprehensive set of CSS rules for form controls, buttons, and layout utilities. This update ensures that the dark theme correctly applies Bootstrap's color palette, spacing, and component styles, improving visual consistency across the interface.

public/vendor/horizon · high confidence

Updated Telescope's dark-mode stylesheet to Bootstrap v4.6.2

The dark-mode stylesheet for the Telescope debugging interface has been updated to use Bootstrap v4.6.2, introducing updated CSS variables, form control styles, and component classes to ensure the dark theme renders correctly with the latest Bootstrap framework.

public/vendor/telescope · high confidence

Updated brand assets and public entry point

The public directory now includes new SVG logo variants (red, monochrome, and transparent) alongside the standard Coolify logo, each with proper accessibility attributes. The legacy bye.html file has been removed, and a new index.php entry point has been added to handle HTTP requests via the Laravel kernel. Additionally, a robots.txt file has been introduced to restrict all web crawlers from indexing the site.

public · high confidence

Updated email template views for HTML and text formats

The default email notification templates in the vendor directory have been replaced with new Blade view files for both HTML and plain-text mailers. This update provides a fresh set of default layouts, headers, footers, and component wrappers for email notifications, ensuring consistent styling and structure for outgoing messages.

resources/views/vendor · high confidence

Upgrade to Tailwind CSS v4 with new global styles and utility classes

The application's styling has been migrated to Tailwind CSS v4, introducing a new global CSS file (app.css) that defines custom theme colors (e.g., --color-coollabs, --color-warning), font families (Geist Sans/Mono, Inter), and base element styles. This update includes new utility classes for inputs, buttons, and menus, alongside compatibility styles to ensure consistent appearance across light and dark modes.

resources/css · high confidence

Fixes

Centralized validation patterns for application inputs

The application now uses a centralized \ValidationPatterns\ class to enforce consistent validation rules across the system. This change introduces strict regex patterns for names, descriptions, file paths, Docker container/network/volume names, SSH usernames, shell-safe commands, environment variable keys, database identifiers and passwords, and Docker image names/tags. Users will see more robust input validation, preventing shell injection and ensuring that special characters like @, /, &, and quotes are handled safely in various fields.

app/Support · high confidence

Improved webhook repository matching and skip-deploy detection

Webhooks now correctly handle GitLab SSH repositories that include custom ports, ensuring that repository paths are matched accurately regardless of the port number in the URL. Additionally, the system now supports skipping deployments via commit messages containing \[skip ci\] or \[skip cd\] markers, with logic to detect these markers in both push payloads and pull request titles. Repository name matching for manual webhooks has also been updated to be case-insensitive, aligning with how Git hosts treat owner/repo names.

app/Http/Controllers/Webhook/Concerns · high confidence

Test coverage

Added API tests for application security and Railpack build packs; Added browser and feature tests for authentication, dashboard, and resource deletion; Added browser-based tests for login and project management; Added feature tests for activity monitoring, admin authorization, and API token security; Added missing database model factories for the test suite; Added tests for MCP server enable/disable endpoints; Added tests for Stripe subscription lifecycle and management actions; Added tests for application configuration, stop grace period, and UI components; Added tests for log drain network connectivity; Added tests for manual webhook HMAC verification; Added tests for proxy restart functionality; Added tests for structured audit logging and GitHub App setup security; Added unit tests for Docker Compose image tag injection logic; Added unit tests for EmailChannel error handling; Added unit tests for Livewire components; Added unit tests for RestartProxyJob configuration and middleware; Added unit tests for application configuration diff detection; Added unit tests for cloud-init YAML validation; Added unit tests for database import validation; Added unit tests for resource access policies; Added unit tests for server cleanup and prerequisite validation; Added unit tests for service restart and start behavior; Added unit tests for the DeleteUserResources action; Added unit tests for the autogenerate\_domain API parameter; Expanded unit test coverage for application deployment and status logic; Initial test infrastructure for Laravel Dusk and Pest.

Dependencies

Updated ApexCharts library to v3.49.1

The local JavaScript bundle for ApexCharts has been updated to version 3.49.1. This change replaces the previous version of the charting library, bringing in the latest features and fixes from ApexCharts.

public/js · high confidence

Updated project dependencies and build tooling

The project's dependency management has been updated. The root \package.json\ and \package-lock.json\ now reflect newer versions of frontend build tools, specifically upgrading \vite\ to 7.3.2 and \tailwindcss\ to 4.1.18, alongside updated Tailwind plugins. Additionally, the \docker/coolify-realtime\ subdirectory has been updated with new versions of \ws\ (8.20.1) and \@xterm/xterm\ (6.0.0). The legacy \pnpm-lock.yaml\ file has been removed in favor of the standard \package-lock.json\.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 42.

Lenses

  • Code Health 29
  • Architecture 92
  • Maturity 63
  • Readiness 43
  • Security 54

Changes since last survey

  • 300 commits — 124 feature/other, 176 fixes

By area

  • (repo) — 124 commits
  • app/Livewire — 31 commits
  • resources/views — 21 commits
  • templates/compose — 20 commits
  • tests/Feature — 14 commits
  • (root) — 12 commits
  • app/Http — 12 commits
  • app/Actions — 10 commits
  • app/Jobs — 8 commits
  • app/Console — 6 commits
  • app/Helpers — 5 commits
  • app/Models — 4 commits
  • docker/coolify-realtime — 4 commits
  • tests/Unit — 4 commits
  • other/nightly — 3 commits
  • public/svgs — 3 commits
  • app/Services — 2 commits
  • bootstrap/helpers — 2 commits
  • database/migrations — 2 commits
  • database/seeders — 2 commits

Notable commits

  • fix: Fix source selection flow
  • fix: Fix source selection flow (#10354)
  • fix: Merge branch 'next' into fix/deploy-key-dedicated-path-race
  • fix: Merge branch 'next' into fix/form-state
  • fix: Merge branch 'next' into fix/ux-close-icon-buttons
  • fix: Merge remote-tracking branch 'origin/next' into 5251-large-repo-deploy-bug
  • fix: Merge remote-tracking branch 'origin/next' into fix/api-update-server-private-key
  • fix: Merge remote-tracking branch 'origin/next' into fix/api-update-server-private-key
  • fix: Merge remote-tracking branch 'origin/next' into fix/api-update-server-private-key
  • fix: Merge remote-tracking branch 'origin/next' into fix/application-branch-validation
  • fix: Merge remote-tracking branch 'origin/next' into fix/application-image-validation
  • fix: Merge remote-tracking branch 'origin/next' into fix/application-image-validation
  • fix: Merge remote-tracking branch 'origin/next' into fix/clipboard-https-secure-context
  • fix: Merge remote-tracking branch 'origin/next' into fix/clipboard-https-secure-context
  • fix: Merge remote-tracking branch 'origin/next' into fix/deploy-key-dedicated-path-race
  • fix: Merge remote-tracking branch 'origin/next' into fix/escape-html-log
  • fix: Merge remote-tracking branch 'origin/next' into fix/escape-html-log
  • fix: Merge remote-tracking branch 'origin/next' into fix/escape-html-log
  • fix: Merge remote-tracking branch 'origin/next' into fix/form-state
  • fix: Merge remote-tracking branch 'origin/next' into fix/form-state
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

coollabsio/coolify was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e7dff30b7c998c301fd91bd169727b90c59ec291 — the exact code this score is about.
  • Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer latest.