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

Uploaded Python 3

File details

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

File metadata

  • Download URL: devs_webadmin-4.0.7.tar.gz
  • Upload date:
  • Size: 18.3 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.7.tar.gz
Algorithm Hash digest
SHA256 6eed3ce1f30855bf5a926bb40c49bdb621aa601672e3a29e7ec5c6c117409867
MD5 7552834d78136b7eb9d20b227a1d6f7e
BLAKE2b-256 3e818103e3916c224e6b21abbeedb03d58408d22afe74225d7c43ed353a77005

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: devs_webadmin-4.0.7-py3-none-any.whl
  • Upload date:
  • Size: 17.2 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 747c5c971ebf227cf74cd2655b5cd7f5430da337ed73961795824b0387341a2f
MD5 90c64254330bf4b77a13d077fc7550f4
BLAKE2b-256 1ef0403e7259c66d7dae3ade3501646cd9069e0188f91b409dca5fd34a1970ee

See more details on using hashes here.

Provenance

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