Portainer vs Portwing
Portainer 2.45.3 offers classic and Edge agents, Business Edition Async Edge, and Swarm. Its built-in agent update/rollback is Business Edition beta for Edge Agents on Docker Standalone environments. Portwing v1.1.0 is a narrower Drydock agent focused on signed requests, replay defense, Sockguard policy, agent-level audit, Prometheus, and MCP in the MIT-licensed build. Choose the controller workflows and supported platforms that fit your deployment. Reviewed October 26, 2026.
Feature Comparison
Here's how we compare on the features that matter most.
| Feature | Portainer | Portwing |
|---|---|---|
| Remote Docker API proxy | On par: Yes (Agent) | On par: Yes |
| Connection modes | Stronger: Classic inbound; outbound Edge; Async Edge (Business Edition) | Weaker: Standard inbound; persistent outbound edge (Drydock v1.6.0-rc.11+) |
| Agent authentication | On par: Non-FIPS controller public key and fixed-message signature headers; optional shared secret; Edge credentials and Business mTLS | On par: Ed25519 per-request HTTP signatures; signed edge hello; token fallback in standard mode |
| Docker socket policy | Weaker: Documented agent mounts the Docker socket; host-root mount is optional | Stronger: Recommended Sockguard path-and-method policy |
| Structured audit | Weaker: Controller activity log in Business Edition | Stronger: Agent-level structured audit and cursor export in every build |
| Supply-chain evidence | Weaker: 2.45.3 controller archives have checksums; Agent images have SPDX SBOMs and SLSA v1 provenance; no Cosign signature found in checked discovery paths | Stronger: Cosign signatures + archive/image CycloneDX SBOMs + SLSA provenance |
| Fleet agent upgrades and policies | Stronger: Business Edition beta update/rollback for Edge Agents on Docker Standalone environments | Weaker: Not shipped; belongs in Drydock plus packaging |
| Host file APIs and Swarm aggregation | Stronger: Yes | Weaker: Intentional non-goals |
| Prometheus agent scrape endpoint | On par: Local Kubernetes Edge metrics; equivalent Docker mediation scrape not documented | On par: Yes |
| Documented read-only MCP endpoint | Weaker: Not documented for the agent; separate unsupported controller MCP server | Stronger: Yes |
| License | On par: Zlib agent; proprietary Business features | On par: MIT |
Comparison Details
Authentication, socket policy, telemetry, release evidence, and controller scope.
Portainer Fleet Operations
Portainer offers Edge stacks, jobs and configuration, plus Business Edition Async Edge. Its built-in agent update/rollback feature is Business Edition beta for Edge Agents on Docker Standalone environments. Portwing provides a persistent edge tunnel; Drydock owns fleet rollout policy.
Different Authentication Layers
Portainer's non-FIPS Agent verifies signature headers on requests, but the signed value is a fixed message or AGENT_SECRET. Portwing's configured Ed25519 path binds method, exact target, body hash, timestamp and nonce, and signs its edge hello. Portainer also offers Edge credentials and optional Business mTLS; these are different mechanisms, not an overall security ranking.
Narrow Socket Boundary
Portainer's agent mounts the Docker socket, with optional host-root mounting for host management. Portwing's hardened path puts Sockguard in between and permits only configured HTTP methods and Docker API paths.
Audit at the Agent
Portainer's controller Activity log is a Business feature. Portwing emits structured authentication and Docker mediation records in every build; Drydock can add user-level context above them.
Host Access Is a Tradeoff
Portainer exposes file-browse APIs and Swarm-wide resource aggregation. Portwing intentionally avoids arbitrary host files and controls one Docker host to keep the privileged surface smaller.
Prometheus and Read-Only MCP
Portwing exposes Docker mediation metrics and five read-only MCP inspection tools. Portainer has a localhost-only Prometheus endpoint populated for Kubernetes Edge. Equivalent Docker mediation scraping and an MCP endpoint were not documented in the reviewed material. Portainer's separate portainer/portainer-mcp server targets the controller API and is marked unsupported for production.
Coming from Portainer Agent?
Inventory Edge Stacks, Jobs, Configurations, RBAC, Swarm, host browsing, and agent update policies before moving controllers. Map those responsibilities to Drydock, then deploy Portwing with Ed25519 keys and the narrowest Sockguard preset that permits the workflows you actually need.
$ docker run -d \
--name portwing \
--read-only --cap-drop=ALL \
--security-opt no-new-privileges:true \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e TOKEN_HASH="$PORTWING_TOKEN_HASH" \
-p 3000:3000 \
ghcr.io/codeswhat/portwing:1.1.0Needs TOKEN_HASH: an Argon2id hash from portwing hash-token. For per-client keys, run portwing keygen and set AUTHORIZED_KEYS instead.
Ready to try Portwing?
Security-first, MIT-licensed, no SaaS required. Drop a secure foothold on any Docker host in minutes.