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
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)

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: devs_webadmin-5.0.2.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for devs_webadmin-5.0.2.tar.gz
Algorithm Hash digest
SHA256 369c4eb73109ecf7aa4ab0b6bd77d0e5bf0be536667667adc8e463acbd22b26d
MD5 81a073dac3c664755f9636e394da3d85
BLAKE2b-256 248109e658b5344ea0da748ce98e86d24fc40f105428559d47f7818eae7a9312

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: devs_webadmin-5.0.2-py3-none-any.whl
  • Upload date:
  • Size: 17.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for devs_webadmin-5.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7a02b02d7df4f95b60da89aa5e03153c415fe30269bd35bc8d5434bc289fab13
MD5 c9f233ba9e83c1d6a1ed6171c83cf274
BLAKE2b-256 a9edf3dbbe28d52f928f2d8a81fdb26d9c2affda493ab1ab213712c389c00660

See more details on using hashes here.

Provenance

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

Release history Release notifications | RSS feed

This release

5.0.2 This release

2 files

5.0.1

2 files

5.0.0

2 files

4.0.7

2 files

4.0.4

2 files

4.0.3

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.4.1

2 files

3.4.0

2 files

3.3.6

2 files

3.3.5

2 files

3.3.4

2 files

3.3.3

2 files

3.3.2

2 files

3.3.1

2 files

3.3.0

2 files

3.2.4

2 files

3.2.3

2 files

3.2.2

2 files

3.2.1

2 files

3.2.0

2 files

2.0.12

2 files

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