Oct 162026v0.9.2featuresecurity39 updatesCopy link
Workers and schedulers
Run roles beside your web app
Declare workers and schedulers in
openship.jsonor the project API. Single-app Docker deployments start separate containers from the app image, with shared environment, volumes and connected networks, their own commands and shutdown settings, and no published ports. Roles follow pause, resume, restart, rollback and project deletion.Hand over singletons safely
Scheduler renames, command changes, name swaps and conversions into workers stop and retain outgoing singletons before starting potentially conflicting replacements. Failed deployments restore them only after those replacements are confirmed removed. Failed retirement of an old role is surfaced in the deployment warning with its container identity.
Require a verified startup
Every replica needs exactly one stable result for its container ID before optional exec health checks run. Missing inspections, duplicate results and processes that already exited successfully fail startup. Both project-defined and image-inherited
PORTvalues are removed from roles.Make role configuration explicit
Move and copy refuse active, unfinished or preserved-cancelled role workloads even after saved roles are cleared. Preset-only
whenandunlesskeys in declared roles produce warnings rather than silently appearing to control execution. Automatic framework role selection and cross-server role migration are not included.Improve framework shutdown defaults
Rails presets have measured stop settings, and Laravel's scheduler preset uses SIGTERM with a 10-second grace period while queue and Horizon workers retain 90 seconds. Customize these bounds for long-running tasks; they do not guarantee task completion or exactly-once scheduling. Laravel web-role cache warming is available as an opt-in setting.
Appearance and dashboard
Customize your own appearance
Settings → General → Customize previews color tokens and typography live, with explicit Save, Discard and Reset. Import themes from JSON, a file or an HTTPS URL; export themes and libraries, including supported WOFF2 fonts. Preferences belong to the signed-in user and stay isolated across accounts and instances. API, SDK, CLI and MCP operations use the same theme format.
Keep operational tools together
Project monitoring and logs share one navigation entry with their own views. Backups moves under Infrastructure. Project sidebars show assigned domains, migration retries retain destination choices, and migrated service deployments use the correct icons.
Reduce false outage alerts
The health watcher confirms repeated bounded Docker probe failures before announcing a server outage. Late probe replies cannot falsely announce recovery. Self-hosted administrators can clear resolved monitoring history with confirmation while retaining open incidents.
Improve navigation and terminal reliability
GitHub discovery no longer blocks dashboard pages, selection controls use consistent states, and leaving a server terminal during WebGL loading cancels setup and disposes the terminal. Instance connection and move actions have clearer setup and recovery guidance.
Cloudflare Tunnel and domains
Manage self-hosted ingress from Openship
Server → Security can connect or create a remotely managed named Cloudflare Tunnel using saved credentials, configure proxied DNS and optionally apply an existing reusable Access policy. Install a pinned connector on a supported Linux server or use its existing connector. Managed Openship Cloud routing retains its existing path.
Enroll domains with recoverable setup
Explicitly enable automatic tunnel enrollment for new custom domains or connect existing domains individually. Setup records Access, tunnel and DNS progress, supports retry after interrupted requests, and removes only owned resources. External edits remain visible for review instead of being overwritten. Exact hostnames and
wwwcompanions are supported; wildcard auto-enrollment is not.Choose primary and www behavior
The deployment wizard defaults a newly included companion hostname to a 301 redirect to the entered primary. Choose bare primary, www primary or Serve both on Cloud and self-hosted destinations. Redirect rows show their target instead of duplicate runtime inputs.
Keep domain operations consistent
Service aliases on the same port are preserved, domains added through the CLI receive routing, and Cloud routing retries recover missing Pages through the owning Cloud connection.
Honor trusted proxies on containerized edges
Operator-declared proxy IPs reach the edge without rebuilding its image. Invalid addresses and CIDR prefixes are discarded. Failed configuration updates restore the previous shared trust include, and an incomplete rollback cannot activate a partial configuration.
Cloud spaces, billing and connections
See managed capacity as Cloud spaces
A shared picker, Overview and Activity views show projects, purchased capacity and measured usage, with clear retry states for unavailable readings. Existing allocations and subscriptions keep their identity; connected self-hosted server tools remain available.
Use the owning Cloud account consistently
Connected Desktop and self-hosted installations create Cloud projects through Cloud's API. Server, project and deployment operations enforce their organization and provider namespace. Cloud consent shows the actual account and organization and lets you switch either before explicitly authorizing the connection.
Continue purchases without repeating plan selection
Pricing links carry the chosen plan into the signed-in app's checkout flow. Pending unpaid payments can be cancelled when supported by the provider so another plan can be selected; retries retain the original payment identity. Server cancellation is easier to find and repeated requests cannot create duplicate operations.
Configure Actions on existing spaces
Cloud's Add runner flow opens the capability form directly with the space picker. Local Actions lists remain available when Cloud discovery fails, and official runner containers support non-root SSH supervisors. Temporary runner profiles retain their separate funding flow.
Keep instance handoff with its source
Control-plane provisioning on a linked managed destination stays owned by the source controller until the move transfers the instance, including resumed API-only and dashboard installations.
Build performance and resource control
Keep unconfigured resources uncapped
Omitted build and service CPU/RAM limits no longer become sampled capacity caps or catalog sizing recommendations. Containers share the selected server's capacity unless limits are explicitly configured. Cloud plans and VM capacity still apply. Existing saved limits are preserved; select Full capacity to remove an older unwanted limit.
Allow concurrent Cloud submissions
Different projects can submit builds while a sibling build is active. Unspecified resource dimensions remain shared; explicit limits, saved plan concurrency and exclusive maintenance protection remain enforced.
Reuse bounded project build caches
Compatible builds retain project-owned BuildKit state and supported package/compiler caches while temporary workers are removed. Idle cache collection uses retention targets and storage-pressure checks, preserving active workers, release images and application data.
Optionally warm new Cloud spaces
Operators can select a provider software disk with public build-image layers for new spaces. Matching images are pinned against their current upstream digest; unavailable or outdated packs fall back to registry resolution. Existing spaces are not reattached by an API redeploy.
Show what image preparation is doing
Registry pulls stream progress, preparation heartbeats and elapsed time into deployment logs. Build cleanup waits for tracked Docker commands to acknowledge completion, and static export publication normalizes public file permissions.
Catalog, GPUs and shared databases
Add document, dashboard and media apps
Install Paperless-ngx, Wiki.js, Homepage, Immich and Jellyfin using pinned published images, persistent storage and protected initial setup. Homepage does not require a Docker socket.
Run self-hosted AI apps
Ollama offers CPU or one NVIDIA GPU, and Open WebUI connects to an existing backend with protected chat access. These templates use connected self-hosted destinations, not managed Cloud capacity. vLLM remains a disabled preview pending hardware verification.
Deploy NVIDIA GPU services
Compose import, SDK/CLI sync and adoption share validated GPU selection and Docker device requests. Server detection and picker hints help choose a compatible destination. Unsupported or conflicting requests fail before image acquisition or service replacement.
Skip unnecessary WordPress and Odoo builds
New catalog installs pull the official images and mount setup helpers through the normal deployment engine. Existing installations retain their saved recipes; reviewed catalog repair can update the application service while preserving database siblings, credentials and data.
Share native databases explicitly
Use in a project can connect ready native PostgreSQL or Redis databases to authorized projects in the same cluster. Saved grants and private network rules are checked together; ownership, backups and database management stay with the source project.
Storage, deletion and migration safety
Separate fresh Cloud app data
New logical volume names use immutable project IDs so reinstalling a deleted slug cannot adopt another project's data. Owned legacy mounts and explicitly imported volume identities remain intact.
Recover failed deletion clearly
Failed first installs offer the existing explicit data-removal option, including owned volumes with no container. Data retention stays the default. Cleanup failures remain retryable operations instead of making a partly deleted project appear Live again.
Preserve resources belonging to other projects
Teardown can retain stale Cloud route and network references whose foreign ownership is confirmed. Unreadable or ambiguous ownership still blocks cleanup, and owned networks are removed by immutable identity rather than a potentially reused name.
Avoid ephemeral host-port collisions
Docker allocation checks the target kernel's ephemeral range for both saved preferred ports and fresh candidates. Unsafe legacy allocations move to a safe port during deployment; if no safe candidate exists, allocation fails before reserving a replacement.
Mail, security and localization
Persist webmail backend connectivity
Webmail deployed on its mail server saves the host-gateway mapping through normal service settings and deployment snapshots while retaining the certificate hostname for TLS. Sign-in connection attempts have bounded timeouts rather than hanging indefinitely.
Connect existing mailboxes from Cloud
The Emails screen installs the standard webmail client for existing IMAP/SMTP servers. It does not provision or administer a self-hosted mail server in Cloud; managed email remains Coming soon.
Repair containerized mail operations
Boot restores maildir ownership, backups and restores use the actual host-mounted mail path, and fail2ban uses valid nftables syntax and explicit private PostgreSQL sidecar credentials. Database and unban failures no longer report success.
Resize your inbox and reading pane
Drag the divider or use its keyboard controls. Desktop widths are remembered separately from the mobile layout.
Prevent dashboard clickjacking
Dashboard pages, authentication routes and redirects deny framing through CSP and X-Frame-Options. Customer application routing and headers are unchanged.
Expand translated guidance and documentation
Supported dashboard locales include preferences, transfer, jobs, issues, pricing, diagnostics and audit descriptions. The website adds a blog and broader feature discovery, alongside updated catalog, runtime-role, Cloud, API, SDK, CLI and MCP documentation.
Update the API as well as Desktop/dashboard clients before using the new settings, managed tunnel operations or catalog recipes that require 0.9.2. The included database migrations run through normal API startup.