porthole

logo
Release Installer status Tests status


Porthole is a native Windows desktop dashboard for WSL Containers.

It uses a WinUI 3 application for the UI and a tray-hosted backend for container and image operations. The app and tray communicate over named pipes using typed JSON contracts in Porthole.Core.

Table of Contents

Installation

Windows Package Manager (winget)

Porthole is available on Windows Package Manager. Install with:

winget install celloza.Porthole

To upgrade an existing installation:

winget upgrade celloza.Porthole

[!NOTE] Current Porthole releases on winget are pre-release (-alpha) builds, so winget upgrade celloza.Porthole can report No applicable upgrade found. When updating, install the target pre-release version explicitly instead:

winget install celloza.Porthole --version <version> --architecture x64 --force

Replace <version> with the pre-release version you want to install, for example 0.0.10-alpha.

Manual Installation (MSI)

Alternatively, download the .msi installer from GitHub Releases and run it directly.

Features

Implemented:

Planned:

Feature Details

Dashboard

Real-time overview of system status and container inventory:

dashboard

Images

Manage container images in the active session:

dashboard

Containers

Lifecycle management for running containers:

dashboard

VS Code Integration

Porthole integrates with both major VS Code container workflows:

See docs/vscode-integration.md for supported API calls, VS Code settings.json examples, troubleshooting steps, and outstanding compatibility work.

Networking

Inspect and configure container networking in the active session:

Network Mode Toggle

Active Port Bindings

Proxy Configuration

dashboard

Volume Management

Inspect storage attached to the active session, including both named volumes and host-path bind mounts:

Volume Inventory

Volume Operations

Run Wizard Integration

See docs/volume-management.md for behavior details and limitations.

dashboard

Sessions

Isolated container environments for multi-tenant and workload grouping. Create named sessions to group containers, switch between them, and keep workloads separate. The (Default) session represents pre-existing containers in the unnamed WSL session.

Key Features:

📖 For comprehensive session management documentation, see Session Management

session switching toolbar

Tray Flyout Quick Switch

The tray flyout provides a fast way to review and manage sessions without opening the full dashboard.

Quick actions:

tray flyout quick switch panel

Run Wizard

Interactive guided flow for creating a container configuration and starting it:

Wizard Start

Configuration Steps

Volume Mount Guidance

Run Actions

Template Format & Versioning

{
  "version": 2,
  "container": {
    "name": "web",
    "imageReference": "nginx:latest",
    "startupCommand": null,
    "portMappings": ["8080:80"],
    "environmentVariables": ["ENV=prod"],
    "volumeMounts": ["C:\\data:/app/data"]
  },
  "savedAtUtc": "2026-07-05T11:42:52.0000000+00:00"
}

Default Template File Naming

Settings & About

Settings now includes both runtime app preferences and project metadata in one place:

Appearance

About

Installation

Windows Package Manager (winget)

Porthole is available on Windows Package Manager. Install with:

winget install celloza.Porthole

To upgrade an existing installation:

winget upgrade celloza.Porthole

[!NOTE] Current Porthole releases on winget are pre-release (-alpha) builds, so winget upgrade celloza.Porthole can report No applicable upgrade found. When updating, install the target pre-release version explicitly instead:

winget install celloza.Porthole --version <version> --architecture x64 --force

Replace <version> with the pre-release version you want to install, for example 0.0.10-alpha.

Manual Installation (MSI)

Alternatively, download the .msi installer from GitHub Releases and run it directly.

Developer Documentation

For architecture, building from source, and contribution guidelines, please visit our GitHub Pages Documentation.