leaningtech/webvm
32.0
Weak · 1 October 2026
2.2k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is a Web-based virtual machine platform that runs Linux environments, such as Debian and Alpine, directly in the browser using WebAssembly. It provides an interactive terminal interface with enhanced accessibility and styling, alongside a document management system for hosting sample files. The application also integrates third-party services, including Claude AI for system control and Plausible for analytics, while serving as a hub for community engagement through blog posts and social links.
Features
Add Alpine Linux WebVM demo route
A new route at /alpine has been added, providing a WebVM instance pre-configured with Alpine Linux. This page reuses the existing WebVM component but applies a specific configuration and a unique cache ID to ensure its state does not conflict with other demos. It also includes a cross-link to the classic Debian Linux terminal and tracks initialization via analytics.
src/routes/alpine · high confidence
Add SvelteKit app entry point with social and analytics integration
The application now includes a new \src/app.html\ entry point required for SvelteKit support. This template configures the page structure, including meta tags for social media previews (Open Graph and Twitter cards) and Apple web clip compatibility, while ensuring the Plausible analytics script is loaded before the application code executes.
src · high confidence
Add sample documents and index to the application
The application now includes a set of sample documents in the documents directory, specifically a welcome text file, an architecture overview image, and a PDF about WebAssembly tools. These files are registered in an index list, making them discoverable and accessible to users within the application's document management system.
documents · high confidence
Introduce Claude AI integration and new sidebar tabs
WebVM now includes a Claude AI integration, allowing users to prompt the AI to control the system via a new 'ClaudeAI' sidebar tab. Users must provide their own Anthropic API key, which is stored locally. The AI interface supports features like thinking mode, conversation history management, and downloading chat logs as images. Additionally, the sidebar has been expanded with new tabs for viewing blog posts, joining the Discord community (with live presence counts), and viewing the GitHub repository (with star counts). The sidebar itself now supports pinning and displays activity indicators for CPU, disk, and AI usage.
src/lib · high confidence
Architecture
Migrate to SvelteKit and introduce Tailwind CSS styling
The project has been restructured to use the SvelteKit framework, replacing the previous static setup with a Vite-based build pipeline and a static adapter. This migration introduces Tailwind CSS for styling, managed via a new configuration file and a PostCSS plugin that selectively preserves Font Awesome icons. The build process now copies static assets like the service worker and login page, and the application supports environment-driven configuration to switch between GitHub and public deployment modes.
(repo-wide) · high confidence
Behavioural changes
Added LuaJIT shebangs to example scripts
The sorting and symmetric\_difference example scripts now include a \#!/usr/bin/env luajit shebang line at the top, allowing them to be executed directly with the LuaJIT interpreter.
examples · high confidence
Added placeholder for custom disk images directory
A .gitkeep file was added to the custom-disk-images directory to ensure the folder persists in the repository, aligning with documentation that indicates this location is intended for persistent storage.
custom-disk-images · low confidence
Enable server-side rendering for the main WebVM terminal page
The main WebVM terminal page now uses SvelteKit's server-side rendering (SSR) capabilities. A new server-side layout file fetches and parses metadata (title and image) for a list of blog posts, making this data available to the application. The main page component is configured for prerendering and initializes the WebVM terminal component with specific configuration and analytics callbacks, while also providing a link to the Alpine Linux graphical demo.
src/routes · high confidence
Updated Debian-based Docker images with EOL mirror configuration and standardized credentials
The dockerfiles for debian\_large and debian\_mini have been updated to use the archived Debian Buster mirrors to address End-of-Life availability issues. Both images now include netcat-openbsd and cowsay, with debian\_large retaining its broader suite of development tools. Additionally, the root and user passwords are now explicitly set to 'password' in both images, and environment variables (WORKDIR, HOME, TERM, etc.) are standardized to support WebVM extraction.
dockerfiles · high confidence
xterm upgraded to v5 with new addons, accessibility, and styling
The xterm library has been upgraded to version 5, introducing the new WebLinksAddon for handling URL clicks and a redesigned FitAddon that now safely handles NaN dimension calculations. Accessibility support has been enhanced with improved screen-reader mode, including specific CSS rules to hide debug elements and manage selection colors. The terminal's visual appearance has been updated with a default text cursor, support for multiple underline styles (dotted, dashed, wavy), overlines, and a new decoration layering system for better visual hierarchy.
xterm · high confidence
Dependencies
Initial NPM dependency setup for WebVM
The project now uses an NPM-based build system, introducing a new package.json and package-lock.json that define the development dependencies. This setup includes SvelteKit (v2), Svelte (v4), Vite (v5), and Tailwind CSS for the frontend framework and styling, alongside @leaningtech/cheerpx for the virtualization engine, xterm.js for terminal emulation, and @anthropic-ai/sdk for AI integration.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 32 → 32 (+0.2)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 37 → 41 (+3.6)
- Architecture 69 → 97 (+28.3)
- Maturity 59 → 61 (+2.1)
- Readiness 20 → 15 (-5.3)
- Security 50 → 56 (+6.6)
- Accessibility 36 → 36 (+0.0)
- Performance 100 (new)
Resolved (3)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no usage examples (README.md)
- Off-boarding risk: anonymized user #1
New (3)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (the committed lockfile resolved no direct production dependency)
- No ADRs found
- Off-boarding risk: anonymized user #1
Changes since last survey
- 2 commits — 2 feature/other, 0 fixes
By area
- (root) — 1 commit
- src/lib — 1 commit
Notable commits
- change: drops labs depends and vendors inhouse
- change: removed deprecated navbar
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
leaningtech/webvm was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f5d6dafe7eb98d278d1884425bea10d9a9945b61 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.