app

command module
v1.11.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 11, 2026 License: GPL-3.0 Imports: 14 Imported by: 0

README

Luxury Yacht

Copilot CodeQL Quality gate status Release

Luxury Yacht is a cross-platform GUI desktop app for managing Kubernetes clusters and resources.

Screen shot of Luxury Yacht New to Luxury Yacht? Check out the Features page!

Luxury Yacht is open source and free for personal and commercial use. No fees, no subscriptions.

Why Luxury Yacht?

I'm a Kubernetes admin. I've tried most of the other apps in this space. None of them worked quite the way I wanted. I created Luxury Yacht to close those gaps, and make my job (and hopefully yours) a little easier.

Luxury Yacht has all the standard features of a Kubernetes management app. If you've used k9s, Lens, Headlamp, or similar apps, you know what to expect: cluster summary data, real-time metrics, workload status, detailed drilldown info, pod logs, etc.

Highlights

Here are some of the features of Luxury Yacht that you might not find in other apps.

  • Maybe the best log viewer you've ever used. Highlight search text. Invert your search to only show lines without the text. Use regular expressions. Show system timestamps for logs without their own timestamps, or logs that have indecipherable formats like unix epoch time. Customize the timestamp format. Show times in UTC or your local time zone. Toggle support for ASCII color codes. Make JSON logs more readable by showing them in tabular or pretty-print format.

  • Object Maps. Visualize the relationships between objects in your clusters. View a node-level map, an namespace-level map, or drill down to specific objects.

  • Informative Cluster Overview. See your cluster's overall utilization and latest warning events at a glance.

  • Attention View. Quickly identify problems in your cluster. Selectively ignore issues that you don't want to be notified about, per-object, per-cluster, or globally.

  • Split-Pane Workloads View. See workloads and their associated Pods in a single view. Highlight a specific workload to filter the view to show only that workload's pods.

  • Flexible panel layouts. Organize your info however you like. Dock panels to the right, bottom, or float them as a resizable window. Open multiple object tabs in each panel. Drag tabs between panels, or drag out to create a new floating panel.

  • Object Diff. Can't understand why a deployment is working correctly in one cluster, but not the other? Open both deployments in the Diff Objects panel to see exactly what the differences are. Compare any kind of object to any other object, in any cluster.

  • Command Palette. Instant access to nearly everything in the app. Open clusters, toggle settings, select a namespace, go straight to a specific object's details, change the app's appearance, and much more.

  • Favorites. Save a view and its filter settings for quick access. Favorites can be cluster-specific, or create a generic favorite that works in any cluster.

  • Themes per cluster. The flexible theme system allows you to assign colors to specific clusters or patterns in cluster names. Assign your dev clusters a blue theme, and your prod clusters a red theme, so you can instantly know when you're working in production. And, of course, you can have light and dark versions of your themes.

  • Zero-touch setup. Luxury Yacht automatically parses your existing kubeconfig files. If your kubeconfig works in any other app, it will work in Luxury Yacht. It automatically scans the default ~/.kube location, but can be configured to scan any directory.

  • Node maintenance. Cordon, drain, and delete nodes with ease.

  • Simple port forwarding. Right-click on a workload, pod, or service and click Port Forward. Select a port and click Start. That's it. Run multiple port forwards simultaneously, and easily track them in a centralized status console.

  • Shell support with debug containers. Of course you expect to be able to get a shell in a container, but what if the container doesn't support shell access? Luxury Yacht gives you a simple way to start an ephemeral debug container in that pod, attached to the container.

Installation

Direct Downloads

Visit Downloads on the web site, or go to the Releases page if you know exactly what you need.

Package Managers

Package manager support is currently limited, but more will be added.

Homebrew (macOS only)
brew install luxury-yacht
Building from Source

If you prefer to build the app from source, see the Development section.

Troubleshooting
The app won't start on Linux

Luxury Yacht requires webkit2 4.1. Some distros don't include it, or don't install it by default. Installation will vary depending on your distro.

Distro Installation
Ubuntu 20.04 Unsupported
Ubuntu 22.04 sudo apt install libwebkit2gtk-4.1-0

If your distro isn't on this (admittedly short) list, you'll have to search your package manager to determine the exact package name. If you have info you'd like to add to this list, email admin@luxury-yacht.app or open an issue.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
* backend/portforward_targets.go * * Shared capability table for Kubernetes resources that can be used as * port-forward targets.
* backend/portforward_targets.go * * Shared capability table for Kubernetes resources that can be used as * port-forward targets.
internal/authstate
Package authstate provides centralized authentication state management.
Package authstate provides centralized authentication state management.
internal/credentialerrors
Package credentialerrors classifies Kubernetes client errors into a typed diagnostic that distinguishes credential/auth failures from connectivity failures.
Package credentialerrors classifies Kubernetes client errors into a typed diagnostic that distinguishes credential/auth failures from connectivity failures.
internal/genappbindings
Package genappbindings renders the App.Get<Kind> resource-detail bindings and the object-panel detail-fetcher dispatch map, both from one binding table.
Package genappbindings renders the App.Get<Kind> resource-detail bindings and the object-panel detail-fetcher dispatch map, both from one binding table.
internal/genappbindings/cmd command
Command genappbindings writes the generated App.Get<Kind> bindings and the object-panel detail-fetcher dispatch map.
Command genappbindings writes the generated App.Get<Kind> bindings and the object-panel detail-fetcher dispatch map.
internal/lifecycle
Package lifecycle adapts an owned cancellation signal into an operation context.
Package lifecycle adapts an owned cancellation signal into an operation context.
kind/objectmapnode
Package objectmapnode is the leaf that lets each kind declare how the object-map collects it: how to list its objects from the shared informer factory and how to project each into a graph node's status (and optional action facts).
Package objectmapnode is the leaf that lets each kind declare how the object-map collects it: how to list its objects from the shared informer factory and how to project each into a graph node's status (and optional action facts).
kind/objectmapspec
Package objectmapspec is the leaf that lets each kind declare its object-map relationship edges without importing the snapshot package.
Package objectmapspec is the leaf that lets each kind declare its object-map relationship edges without importing the snapshot package.
objectaction
Package objectaction owns the action catalog shared by backend dispatch and the generated frontend action contract.
Package objectaction owns the action catalog shared by backend dispatch and the generated frontend action contract.
objectcatalog
Package objectcatalog discovers Kubernetes resources and maintains the in-memory catalog used for browsing and lookup.
Package objectcatalog discovers Kubernetes resources and maintains the in-memory catalog used for browsing and lookup.
refresh/domainpermissions
Package domainpermissions owns the shared refresh-domain resource contracts used by runtime permission checks, registration gates, and resource streams.
Package domainpermissions owns the shared refresh-domain resource contracts used by runtime permission checks, registration gates, and resource streams.
refresh/ingest
Package ingest implements an owned-reflector columnar ingestion path: a cache.Store that projects each Kubernetes object to a row at intake and keeps ONLY the projection, fed by a reflector that borrows client-go's List/Watch/ relist machinery.
Package ingest implements an owned-reflector columnar ingestion path: a cache.Store that projects each Kubernetes object to a row at intake and keeps ONLY the projection, fed by a reflector that borrows client-go's List/Watch/ relist machinery.
refresh/querypage
Package querypage is the one production Query → Page engine for the v2 store: every typed-table and catalog serve path executes here (maintained stores queried in place, per-Build stores, and the catalog engine store), and this file's value-keyed Cursor is the ONE cursor codec on the wire.
Package querypage is the one production Query → Page engine for the v2 store: every typed-table and catalog serve path executes here (maintained stores queried in place, per-Build stores, and the catalog engine store), and this file's value-keyed Cursor is the ONE cursor codec on the wire.
refresh/resourcestream
Package resourcestream keeps projection metadata aligned with the shared refresh-domain composition contract.
Package resourcestream keeps projection metadata aligned with the shared refresh-domain composition contract.
refresh/ringbuffer
Package ringbuffer provides a fixed-capacity ring buffer of sequence-numbered items with replay-after-sequence.
Package ringbuffer provides a fixed-capacity ring buffer of sequence-numbered items with replay-after-sequence.
refresh/snapshot
Package snapshot builds refresh-domain payloads for list, table, object, and diagnostics views.
Package snapshot builds refresh-domain payloads for list, table, object, and diagnostics views.
refresh/storebench
Package storebench is Prototype #1 (see docs/architecture/data-layer.md, "Provenance"): the write-path benchmark that gated the v2 store decision.
Package storebench is Prototype #1 (see docs/architecture/data-layer.md, "Provenance"): the write-path benchmark that gated the v2 store decision.
refresh/system
Package system wires refresh domains into the registry and keeps registration gates aligned with the shared permission contracts.
Package system wires refresh domains into the registry and keeps registration gates aligned with the shared permission contracts.
resources
Package resources contains Kubernetes object detail and action services.
Package resources contains Kubernetes object detail and action services.
resources/appbinding
Package appbinding defines the per-kind App.Get<Kind> detail-binding declaration.
Package appbinding defines the per-kind App.Get<Kind> detail-binding declaration.
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL