KOWAN

Every Docker host, one light console.

Kowan is a free, MIT-licensed Docker manager you host yourself: one small server, an agent on each host, a fast web UI, a CLI and an MCP server for AI assistants.

Quick start · docker run
$ docker run -d --name kowan --restart unless-stopped \
    -p 5081:5081 \
    -v kowan-data:/data \
    -v /var/run/docker.sock:/var/run/docker.sock \
    ghcr.io/kowan-lab/kowan:latest
View on GitHub

Then open localhost:5081. Prefer Compose? See the quick start.

  • Containers
  • Live logs
  • Web console
  • File browser
  • Network map
  • Trivy scans
  • Auto-update
  • Rollback
  • Self-update
  • Compose
  • Templates
  • Git deploys
  • GitOps
  • Workflows
  • Webhooks
  • Schedules
  • Restic backups
  • Exposure
  • HTTPS
  • Teams
  • SSO
  • API keys
  • Audit log
  • MCP
  • Revisions
  • Previews
  • Promotion
  • Uptime
  • Status page
  • Log search
  • Resource history
  • Disk cleanup
  • Digest
  • Portainer import
  • Installable app
The Kowan overview: a host's containers, resource use and what needs attention, on one screen.
Fig. 1 · Overview of a host1440 × 900

From the fleet view to the fix, on one screen.

Kowan answers what is running where, whether it is healthy and what changed, then lets you act on it without leaving the page.

Operate every host

Containers, images, volumes, networks and stacks across all your hosts, in tables that update from Docker events. Every container is one click from its logs, a console and its files.

Logs
Live logs and a web console inside any container
Files
File browser for container and volume contents
Network
Map of containers, networks, published ports and domains
Running9d Restarting Exited 1373m
A container's page: health, image, ports, networks, mounts and live resource use, with tabs for logs, console, stats and files.
Every container one click from its logs, console and files.
A container's live log stream in the Kowan console.
Logs Follow a container's output live, next to its console and actions.
The network map: containers linked to the Docker networks, ports and domains they use.
Network map See how containers, networks, ports and domains connect.

Workloads, not loose containers

Compose stacks, Kowan deployments and lone containers become one list of workloads, whether Kowan deployed them or found them already running. What is broken comes first, with the reason.

Managed
Deployed by Kowan from an editor, a template or git
Discovered
Started outside Kowan, listed and operated as they are
Needs you
Crashed or unhealthy services and failed deploys, on top
Policies
Updates, backups and schedules per workload, each one a knob
Running3/3 Degraded5/6 Deploying
The Workloads page: compose stacks, Kowan deployments and lone containers as cards, with a degraded stack under Needs you.
Managed and discovered workloads, what needs you first.

Connect anywhere

Every host runs a small agent. Behind NAT or a firewall, the agent dials out to the server; when the server can reach the host, it dials in. Both run over the same multiplexed tunnel.

Edge
For home labs and hosts without inbound ports
Direct
For servers on a reachable network
Join
Kowan shows the agent's docker run line when you add a host
How agents connect to the Kowan server The Kowan server sits at the top. On the left, inside a home network behind NAT, an edge agent dials out to the server. On the right, the server dials a direct agent on a reachable host. kowan server UI · REST API · MCP :5081 BEHIND NAT EDGE agent nas · docker DIRECT agent vps-01 · docker agent dials server dials

One token rule. Whoever dials sends the token; whoever accepts verifies it. The same rule holds in both directions.

See what the internet can reach

The Exposure page lists every published port by reach, public, local only or one interface, and warns when a database or admin UI is open to everyone.

Domains
Routed by Traefik, read from container labels
Publish
A service on a domain with automatic HTTPS, through the proxy already on the host
The Exposure page: published ports by reach, with a warning on a database admin tool open to the internet.
Published ports, domains and proxies per host.

Automate deployments

Deploy containers and compose stacks from an editor, a template or a git repository. Kowan checks the compose file before it saves or deploys it: ports already in use, clashing names, missing variables.

GitOps
Export configuration to git and sync it back with a reviewed diff
Workflows
Webhooks and workflows to redeploy from CI or run maintenance
Schedules
Start, stop or restart containers and stacks on cron
Backups
Volumes with restic to local disk, S3 or SFTP, with browsing and restore
A workload's page: its containers, and its update, backup and schedule policies set with knobs.
A Kowan deployment with its source, containers and policies.

Teams and AI assistants

Alone, you never see the team features. With a team, roles and grants decide who can read, operate or manage which hosts, stacks and deployments.

Roles
Admin, operator and viewer, plus teams and resource-scoped grants
SSO
OpenID Connect or GitHub
Keys
API keys with narrowed scopes, and an audit log of every change
MCP
Claude and other assistants inspect and operate hosts with an API key's permissions
The AI assistants page: ready-to-paste MCP setups for Claude Code, Claude Desktop and Cursor.
Ready-to-paste setups for Claude Code, Claude Desktop and Cursor.

Ship changes safely

Every change to what a deployment runs is a revision: who made it, why, and a diff against any other. One click puts an older one back. Branches and pull requests get their own preview next to production, and staging promotes exactly what you tested.

History
Numbered revisions with diff and one-click rollback, pinned to the commit for git
Previews
A copy per branch or pull request, created by the push webhook, gone when it closes
Promote
Staging to production: the image or the commit moves, the environment stays
Import
Bring stacks over from Portainer or a folder of compose files
A deployment's history: five revisions by two people, with the diff of the latest promotion from staging.
Revisions with who, why and what changed.
Preview environments of a git deployment: one for a branch and one for pull request 42, both deployed.
Previews Branches and pull requests run next to the real thing, on free ports.
Disk cleanup: stopped containers, unused images and volumes with their sizes, safe ones picked.
Disk cleanup See what can go and how much it frees; named volumes stay unless you pick them.

Know before your users do

Kowan checks your sites and ports from outside, keeps the logs you choose for as long as you need them, and remembers how every workload used CPU and memory, so a slow leak shows up as a warning and not as an outage.

Uptime
HTTP and TCP checks with response times, incidents, certificate expiry and a public status page
Logs
Kept per workload and searchable across hosts, restarts and redeploys
Resources
CPU, memory and network over 30 days, with a warning when memory keeps climbing
Digest
A daily or weekly message: updates, vulnerabilities, failed backups, expiring certificates
The Uptime page: four checks with their recent results, uptime over 24 hours and 30 days, response time and certificate days left; one check is down.
Checks from outside, with the history behind each status.
Searching the kept logs of three workloads for errors over the last 24 hours.
Log search Words, phrases and exclusions over every host and day you keep.
A workload's CPU and memory over 24 hours, with a warning that memory has grown 22 MB an hour without a restart.
Resources A leak is a warning with an ETA, before it is an outage.

Works from your phone

Every page and every action works on a phone, not a reduced version of them. Install Kowan to the home screen and it opens like an app; it never caches your data, so what you see is always live.

Layout
Tables become cards, panels stack, the menu is a drawer
Install
A web app with its icon and shortcuts to workloads, logs and uptime
Offline
Opens without a network and says so, instead of a browser error
Kowan's Workloads page on a phone, with the workload that needs attention first.
Kowan's Uptime page on a phone: each check as a card.
The same console on a 390-pixel screen.

Also in the box

Images and registries
Pull, inspect and prune images; browse your registries with stored credentials.
Volumes
Create, inspect and explore volume contents in a file browser.
Swarm
Deploy to a single host or to a swarm.
Secrets
Credentials and secrets encrypted with AES-256-GCM, never returned by the API.
Alerts
Monitoring with alert rules, sent by email and chat channels, plus a periodic digest.
Auto-update
Notify, pull or apply new images inside maintenance windows, with Trivy scan gates and rollback when the health check fails.
Self-update
The server and every agent update themselves, with one-click rollback.
Audit log
Every change, by a person, an API key or an AI assistant, with who, from where and the result.
Labels
Set update policy, scan gates and alerts per container with kowan.* labels in compose.
CLI
kowanctl scripts the server from a terminal and bridges MCP over stdio.
No external database
A small Python server with SQLite. Back up one volume and you have everything.
Seven themes
Kowan, Graphite, Nord, Dracula, Catppuccin, Gruvbox and Tokyo Night, each in light and dark.

Running in a minute

Kowan needs a machine with Docker. The server works without configuration; set KOWAN_EXTERNAL_URL before you attach agents on other hosts.

$ docker run -d --name kowan --restart unless-stopped \
    -p 5081:5081 \
    -v kowan-data:/data \
    -v /var/run/docker.sock:/var/run/docker.sock \
    ghcr.io/kowan-lab/kowan:latest
  1. Run the server

    Start Kowan with docker run or Compose. Data, keys and the database live in the kowan-data volume: back it up.

  2. Open :5081 and create the admin

    Go to http://localhost:5081 (5-0-8-1, read ko-o-wa-n) and create the first admin account with the one-time setup token from docker logs kowan. The local Docker host is ready to manage.

  3. Add hosts

    In Hosts → Add host, pick edge or direct and run the one-line agent command Kowan shows on the other machine.

Free, open source and yours to run.