Skip to main content

Web admin UI for managing devcontainers on a server

Project description

devs-webadmin - Web Admin UI

A web-based admin interface for managing devcontainers on a server. Provides the same core functionality as the devs CLI but accessible from a browser -- useful for headless servers, remote machines, or when you want a visual overview of running containers.

Features

  • Container Management: Start, stop, and clean up devcontainers from a web UI
  • Repository-Based: Enter any GitHub org/repo to start containers (uses RepoCache, no local checkout needed)
  • All Containers View: See all devs-managed containers across all projects at a glance
  • VS Code Tunnels: Start, stop, and authenticate tunnels directly from the browser
  • Tunnel Auth via Device Flow: GitHub device code flow for tunnel authentication without needing a terminal

Installation

# From the monorepo root
pip install -e packages/webadmin/

# Or when published
pip install devs-webadmin

Quick Start

# Start the web admin server
devs-webadmin serve

# Open http://localhost:8080 in your browser

Usage

Starting the Server

# Default: 0.0.0.0:8080
devs-webadmin serve

# Custom host/port
devs-webadmin serve --host 127.0.0.1 --port 3000

# Development mode with auto-reload
devs-webadmin serve --reload

Web UI

The UI has two main sections:

Start Container Form -- Enter a GitHub repository (e.g. ideonate/devs) and a dev name (e.g. sally), then click Start. The repo is cloned/updated via the shared repo cache at ~/.devs/repocache/.

Container List -- Shows all devs-managed containers with:

  • Status (running/exited) with color indicators
  • Project name, mode (copy/live), creation time
  • Stop (preserves container state) and Clean (removes container + workspace) buttons
  • Tunnel controls for running containers

Tunnel Controls

Each running container shows a tunnel panel:

  • Start tunnel -- Launches a VS Code tunnel in the container. Once running, shows an "Open in browser" link to vscode.dev.
  • Kill tunnel -- Stops a running tunnel.
  • Auth -- Opens a modal with the GitHub device flow. A device code is displayed along with a link to github.com/login/device. Complete the login in your browser and the modal updates automatically when authentication succeeds. Auth persists across container stop/restart cycles.

Configuration

Environment Variables

Variable Default Description
WEBADMIN_HOST 0.0.0.0 Server bind address
WEBADMIN_PORT 8080 Server port
DEVS_WORKSPACES_DIR ~/.devs/workspaces Workspace directory
DEVS_REPO_CACHE_DIR ~/.devs/repocache Repository cache directory
DEVS_CLAUDE_CONFIG_DIR ~/.devs/claudeconfig Claude config directory
DEVS_CODEX_CONFIG_DIR ~/.devs/codexconfig Codex config directory
GH_TOKEN / GITHUB_TOKEN (none) GitHub token for private repos

Shared Directories

The webadmin shares the same directories as the CLI and webhook:

  • ~/.devs/repocache/ -- Cached repository clones
  • ~/.devs/workspaces/ -- Workspace copies for containers
  • ~/.devs/claudeconfig/ -- Claude authentication

Architecture

Backend

  • FastAPI + Uvicorn (same stack as the webhook package)
  • Uses devs-common for all container/workspace/repo operations
  • Synchronous common library calls wrapped with asyncio.to_thread
  • Stop/clean operations work by Docker container name (no repo cloning needed)

Frontend

  • Vue 3 loaded from CDN (no build step, no npm required)
  • Single index.html served as a static file from the Python package
  • Self-contained -- ships inside the pip package with no external build process

API Endpoints

Method Path Description
GET /api/containers List all containers (optional ?repo=org/repo filter)
POST /api/start Start container { repo, dev_name }
POST /api/stop Stop container { container_name }
POST /api/clean Remove container + workspace { container_name }
GET /api/tunnel/status Tunnel status ?container_name=X
POST /api/tunnel/start Start tunnel { container_name }
POST /api/tunnel/kill Kill tunnel { container_name }
POST /api/tunnel/auth Start device flow auth { container_name }
GET /api/tunnel/auth/status Poll auth completion ?container_name=X

Requirements

  • Python 3.8+
  • Docker running and accessible
  • DevContainer CLI: npm install -g @devcontainers/cli
  • devs-common package (installed automatically as a dependency)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

devs_webadmin-3.2.3.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

devs_webadmin-3.2.3-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file devs_webadmin-3.2.3.tar.gz.

File metadata

  • Download URL: devs_webadmin-3.2.3.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for devs_webadmin-3.2.3.tar.gz
Algorithm Hash digest
SHA256 b97ebd9ab8feb2f271da3c196c4e694844245549208b26509684ea9db3cbe823
MD5 0e163495b340a2140b9f0ecc9a85ab1d
BLAKE2b-256 f60578ae33c71158c3f4e564966b063e29e858945c3b76a628201847443dd969

See more details on using hashes here.

Provenance

The following attestation bundles were made for devs_webadmin-3.2.3.tar.gz:

Publisher: bump-and-publish.yml on ideonate/devs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file devs_webadmin-3.2.3-py3-none-any.whl.

File metadata

  • Download URL: devs_webadmin-3.2.3-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for devs_webadmin-3.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6e7f4cde75d5fa1fd48987ba250d4a371a349506e805a55df194ba97392cce37
MD5 a7638ab8dac6202e1d9732c08d018469
BLAKE2b-256 0bf648e298a4a70e94606f11f14dc27c4b3dc746c6aead784b998b543a0cb5d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for devs_webadmin-3.2.3-py3-none-any.whl:

Publisher: bump-and-publish.yml on ideonate/devs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page