{"id":35556442,"url":"https://github.com/luxury-yacht/app","last_synced_at":"2026-07-05T01:00:59.107Z","repository":{"id":329898268,"uuid":"1118641657","full_name":"luxury-yacht/app","owner":"luxury-yacht","description":"Luxury Yacht - A cross-platform app for managing Kubernetes clusters and resources","archived":false,"fork":false,"pushed_at":"2026-06-29T23:27:07.000Z","size":11953,"stargazers_count":279,"open_issues_count":1,"forks_count":11,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-30T00:19:51.427Z","etag":null,"topics":["cloud-native","cross-platform","desktop","k8s","k8s-cluster","k8s-clusters","kubectl","kubernetes","kubernetes-cluster","kubernetes-clusters"],"latest_commit_sha":null,"homepage":"https://luxury-yacht.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/luxury-yacht.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-12-18T04:18:10.000Z","updated_at":"2026-06-29T23:21:19.000Z","dependencies_parsed_at":"2026-01-28T19:06:41.316Z","dependency_job_id":"b7215712-fb27-4e18-91c7-1a4d3d7a16cd","html_url":"https://github.com/luxury-yacht/app","commit_stats":null,"previous_names":["luxury-yacht/app"],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/luxury-yacht/app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxury-yacht%2Fapp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxury-yacht%2Fapp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxury-yacht%2Fapp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxury-yacht%2Fapp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luxury-yacht","download_url":"https://codeload.github.com/luxury-yacht/app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luxury-yacht%2Fapp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35140189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","cross-platform","desktop","k8s","k8s-cluster","k8s-clusters","kubectl","kubernetes","kubernetes-cluster","kubernetes-clusters"],"created_at":"2026-01-04T09:05:37.560Z","updated_at":"2026-07-05T01:00:59.093Z","avatar_url":"https://github.com/luxury-yacht.png","language":"TypeScript","funding_links":[],"categories":["\u003ca name=\"TypeScript\"\u003e\u003c/a\u003eTypeScript","kubernetes"],"sub_categories":[],"readme":"# Luxury Yacht\n\nLuxury Yacht is a cross-platform GUI desktop app for managing Kubernetes clusters and resources.\n\n![Screen shot of Luxury Yacht](https://luxury-yacht.app/images/screenshots/object-panel-right-dark.png)\n**New to Luxury Yacht?** Check out the [Features](https://luxury-yacht.app/features) page!\n\n**Luxury Yacht is open source and free for personal and commercial use.** No fees, no subscriptions, no telemetry.\n\n## Why Luxury Yacht?\n\nI'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.\n\nLuxury 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.\n\n### Highlights\n\nHere are some of the features of Luxury Yacht that you might not find in other apps.\n\n- **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.\n\n- **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.\n\n- **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.\n\n- **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.\n\n- **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.\n\n- **Favorites.** Save a view (and its filters) as a favorite for quick access. Favorites can be cluster-specific, or create a generic favorite that works in any cluster.\n\n- **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.\n\n- **Zero-touch setup.** Luxury Yacht uses your existing kubeconfig files. It reads `~/.kube` and loads your clusters into a dropdown menu. Select a cluster from the dropdown to get started. Open Settings to add or change which directories Luxury Yacht scans for kubeconfig files.\n\n- **Node maintenance.** Cordon, drain, and delete nodes with ease.\n\n- **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.\n\n- **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.\n\n## Installation\n\n### Direct Downloads\n\nVisit [Downloads](https://luxury-yacht.app/#downloads) on the web site, or go to the [Releases](https://github.com/luxury-yacht/app/releases) page if you know exactly what you need.\n\n### Package Managers\n\nPackage manager support is currently limited, but more will be added.\n\n#### Homebrew (macOS only)\n\n```sh\nbrew install luxury-yacht\n```\n\n### Building from Source\n\nIf you prefer to build the app from source, see the Development section.\n\n### Troubleshooting\n\n#### The app won't start on Linux\n\nLuxury 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.\n\n| Distro       | Installation                           |\n| ------------ | -------------------------------------- |\n| Ubuntu 20.04 | Unsupported                            |\n| Ubuntu 22.04 | `sudo apt install libwebkit2gtk-4.1-0` |\n\nIf 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](mailto:admin@luxury-yacht.app) or open an issue.\n\n## Development\n\n### Prerequisites\n\n- Go 1.26\n- Node 25\n- [Wails](https://wails.io/)\n- [Mage](https://magefile.org/)\n- [Staticcheck](https://staticcheck.dev/)\n\n#### Wails\n\nLuxury Yacht is built with [Wails](https://wails.io/), a framework for building cross-platform apps in Go.\n\nTo install Wails:\n\n```bash\ngo install github.com/wailsapp/wails/v2/cmd/wails@v2.12.0\n```\n\nOnce Wails is installed, run `wails doctor` to see what other dependencies you'll need to install.\n\n📝 _If `wails` is not found, make sure your go `bin` path (typically `$HOME/go/bin`) is in your `PATH`._\n\n#### Staticcheck\n\nStaticcheck is a static analysis linter for Go.\n\nTo install Staticcheck:\n\n```bash\ngo install honnef.co/go/tools/cmd/staticcheck@latest\n```\n\n#### Mage\n\nFor scripting builds, testing, releases, etc., Luxury Yacht uses [Mage](https://magefile.org/) for cross-platform compatibilty. Makefiles and bash scripts are fine for Linux and macOS, but they don't work in Windows. The `magefile` is written in Go, so should work the same in any OS.\n\nTo install Mage:\n\n```bash\ngo install github.com/magefile/mage@latest\n```\n\nTo see what `mage` targets are available, run `mage -l` in the repo root.\n\n### Development Mode\n\nThe fastest way to get the app up and running for development is to run in Wails development mode. This gives you hot-reloads and access to the browser console for debugging.\n\n```bash\nmage dev\n```\n\nNote that hot-reload of the Go backend will cause the app to restart, while changes to frontend code will be reflected immediately without an app restart.\n\n### Storybook\n\n[Storybook](https://storybook.js.org/) is available for developing and previewing UI components in isolation.\n\n\u003e _NOTE_: you may need to run `nvm install` in the repo root to install the correct version of node from `.nvmrc`\n\n```bash\nmage storybook\n```\n\nThis starts the Storybook dev server at [http://localhost:6006](http://localhost:6006).\n\n### Build\n\n```bash\nmage build\n```\n\n### Install\n\nTo install the app locally:\n\n```bash\nmage install:unsigned\n```\n\n## Versions\n\nWhen updating versions in the app, these are the canonical sources. All scripts/workflows should get app and toolset versions from these sources and these sources only.\n\n#### App Version\n\nApp version is derived from `info.productVersion` in [wails.json](wails.json)\n\n```bash\nAPP_VERSION=$(jq -r '.info.productVersion' wails.json)\n```\n\n#### Go Version\n\nGo version is derived from go.mod\n\n```bash\nGO_VERSION=$(grep '^go ' go.mod | awk '{print $2}')\n```\n\n#### Wails Version\n\nWails version is derived from go.mod\n\n```bash\nWAILS_VERSION=$(grep 'github.com/wailsapp/wails/v2' go.mod | awk '{print $2}')\n```\n\n#### Node Version\n\nNode version is derived from .nvmrc\n\n```bash\nNODE_VERSION=$(cat .nvmrc | tr -d 'v')\n```\n\n## Publishing Releases\n\nRun the prerelease checks. This should surface any problems that could cause the release to fail.\n\n```bash\nmage qc:prerelease\n```\n\nYou should also run the benchmark tests if you're going to make changes to the backend code. Compare the numbers before and after your change to make sure you haven't introduced any major performance hits.\n\n```bash\nmage qc:benchmark\n```\n\n1. Update the version in [wails.json](wails.json)\n\n1. Commit and push the change.\n\n1. Create and push a tag. The `release` workflow will do the rest.\n\n```bash\ngit tag $(jq -r '.info.productVersion' wails.json)\ngit push origin main --tags\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluxury-yacht%2Fapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluxury-yacht%2Fapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluxury-yacht%2Fapp/lists"}