Skip to main content

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
DEVS_HERMES_CONFIG_DIR ~/.devs/hermesconfig Hermes Agent data 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)

Metadata

Release files for devs-webadmin 6.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for devs-webadmin 6.0.1
File Size Uploaded Provenance
devs_webadmin-6.0.1.tar.gz 18.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for devs-webadmin 6.0.1
File Interpreter ABI Platform
devs_webadmin-6.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 35.7 kB

Release files / devs_webadmin-6.0.1.tar.gz

Download URL devs_webadmin-6.0.1.tar.gz
Size 18.4 kB
Tags Source
SHA-256 checksum
How to use checksums
a27552cc33a409e5c67ce3ee5da495b26856709617211ccbd1da96043769bea8
BLAKE2b-256 checksum
How to use checksums
196ce6a8605f8b70c4b48541ee3b85d13387bcf0f7da6afb41f21e08cd87f610
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Release files / devs_webadmin-6.0.1-py3-none-any.whl

Download URL devs_webadmin-6.0.1-py3-none-any.whl
Size 17.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e191f358bcd80757d37141dbc2003a50fb2e4647fe9e4fa68c01ffe667eceaea
BLAKE2b-256 checksum
How to use checksums
465b3ffe2a0e1fb5d04250c89b3e5f6102c797a39c624c5503f2091856b6acb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

Security for devs-webadmin 6.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for devs_webadmin-6.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

6.0.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page