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-4.0.0.tar.gz (17.6 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-4.0.0-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for devs_webadmin-4.0.0.tar.gz
Algorithm Hash digest
SHA256 d38022f40150c21334fb8f6efd7436ed7b62bb9a1e69a9c96b7f14339e0b4bf6
MD5 d2833b4798670ea7621fbfddea887a71
BLAKE2b-256 8131a7189d86ffdd7dcb69792467d269eccc3e54b36d9061e02061856d2aa4b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for devs_webadmin-4.0.0.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-4.0.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for devs_webadmin-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e06e0c84a91a0e77780f3673357511a7fd12fae107f93a99c9eae559ee1314a9
MD5 9ca5ba4a85a912259c45d70787c091fe
BLAKE2b-256 5010f6a512b5e6c9a7ebd562d33e2ec98b5652c40b3f3f35e7bfefcea600d209

See more details on using hashes here.

Provenance

The following attestation bundles were made for devs_webadmin-4.0.0-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