Skip to content
mbianchidevPublic

About

A free alternative to Orbstack, Docker Desktop and Portainer. An orchestrator for local/self-hosted apps and homelabs

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

420 Commits

Folders and files

Repository files navigation

Porto - Docker Desktop but better

CI CodeQL

Warning

Porto is not production-ready. Use it for local development and experimentation only, not production or critical workloads.

Releases are not code-signed, and macOS builds are not notarized. Your operating system may display security warnings or block installation or launch.

Porto is an open-source desktop (and optionally web) control plane for development workloads running on your machine, NAS, or home system. It discovers mixed-stack repositories and gives you one daemon, CLI, and dashboard to manage native applications, containers, Compose stacks, local Kubernetes clusters, and Linux virtual machines.

It provides a portable, open-source alternative to proprietary desktop container managers while keeping standard Docker clients and Compose workflows.

Porto dashboard showing containers, runtime controls

Why Porto

  • One place for every project. Scan your workspace(s) root once, then control processes, ports, readiness, and persistent logs from the CLI or dashboard.
  • Mixed stacks, one workflow. Porto recognizes Make, Compose, Node.js, Python, Go, and Rust projects and chooses the appropriate setup and start commands.
  • Containers without a separate dashboard. Inspect and operate containers, images, builds, volumes, and networks through Porto or standard Docker clients.
  • Local Kubernetes. Create managed k3s, k0s, or kind clusters without inheriting an unrelated global kube context.
  • Cluster terminal included. Open a cluster-scoped k9s session from the dashboard or with porto kubernetes terminal <cluster-name>.
  • Disposable Linux machines. Create standalone Ubuntu, CentOS Stream, openSUSE, NixOS, Arch, and Alpine environments; Kali is catalogued where an official compatible cloud image exists.
  • No more port bookkeeping. Stable automatic assignments avoid collisions, while pinned and Compose-published ports remain supported.
  • Branch-aware workflows. Switch branches with automatic restarts or run concurrent branches in isolated managed worktrees.
  • Friendly local URLs. Open projects and managed Kubernetes Services through stable zero-configuration HTTP hostnames or trusted portless HTTPS on macOS.
  • Local and portable. Runtime state stays in a small SQLite database, and the Go daemon runs on Linux, macOS, and Windows.
  • Docker, Compose, and Buildx included. Desktop packages ship a pinned Docker CLI plus Compose and Buildx for the porto context. Porto's managed engine sets up CPU emulation automatically, without proxying another Docker engine.
  • Image layers in the terminal. Run porto docker dive IMAGE with the bundled Dive client to inspect layer contents, file changes, and wasted space.
  • Local diagnostics and repair. Run porto diagnose or use the Diagnostics page to inspect runtime health, preview a redacted local bundle, and apply confirmed Porto-owned repairs.
  • Optional runtime cleanup. Prune unused images and build cache weekly or with Run now, with retained results for both manual and scheduled runs.

See the Docker API compatibility matrix for supported, partial, capability-gated, and explicitly unsupported operations. See image layer inspection for Dive usage and the separate local Grype/SBOM roadmap.

Quickstart

1. Install Porto

Install and launch the latest desktop release on macOS or Linux:

curl -fsSL https://raw.githubusercontent.com/mbianchidev/porto/main/scripts/install-desktop.sh | sh

On Windows PowerShell:

irm https://raw.githubusercontent.com/mbianchidev/porto/main/scripts/install-desktop.ps1 | iex

The one-liners detect the OS and architecture, verify the published SHA-256 checksum, install the native macOS DMG or Windows EXE package for the current user, expose the porto CLI, and launch the desktop app. Linux uses the portable desktop archive. Every desktop package bundles the daemon, dashboard, kubectl, k9s, Lima, the supported kind binary, and Porto's Linux runtime helper for direct container I/O, Windows containerd connections, CNI, and checkpoint capability discovery.

New Windows container engines use Ubuntu 24.04 LTS instead of Lima's moving default image. Windows packages include Lima's stale-process recovery and consoleless force-stop fixes; normal shutdown recovery does not require deleting PID files or recreating the runtime VM. See Windows guest recovery for an existing crashed engine.

For a headless installation, download the CLI/web archive from the releases page. Keep the porto binary and ui/dist directory together, then add the binary to PATH.

See the installation guide for checksum verification, source builds, and custom dashboard paths.

CLI/web archives remain available for headless machines and servers.

Open Settings to see the running Porto release version, including prerelease and build metadata.

2. Discover projects

porto scan ~/code ~/work --depth 3
porto list

3. Start the daemon

porto daemon start

The daemon runs in the foreground. Leave it open and use a second terminal for project commands.

Desktop and daemon diagnostics are saved to logs/porto.log under Porto's OS-specific data directory, with debug logging enabled by default. Porto compresses completed days and keeps seven calendar days unless System settings selects a different retention period. See application diagnostic logs for exact paths and the PORTO_LOG_LEVEL setting.

macOS desktop packages include a temporary native guard for a macOS 27 power-notification startup crash. No recovery command is needed for new packages; see compatibility and older-release recovery.

4. Start a project

porto start api
porto logs api --stream stdout -n 100
porto stop api

Replace api with a project name shown by porto list. Open the dashboard at:

http://127.0.0.1:37623

Running projects are also available without DNS setup at http://<project>.porto.localhost:37680. On macOS, install the trusted portless HTTPS helper once to use https://<project>.porto.localhost/:

porto https install

See local networking for certificate, DNS, dotted-hostname, and custom-forwarding details.

For an always-available setup, follow the daily-use guide to install Porto in a stable location and start it at login or boot.

Documentation

License

MIT

About

A free alternative to Orbstack, Docker Desktop and Portainer. An orchestrator for local/self-hosted apps and homelabs

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages