Repository Analysis

smol-machines/smolvm

Portable, lightweight, self-contained virtual machines.

10.7 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of smol-machines/smolvm, a Rust project with 4,395 GitHub stars. SynthScan v2.0 examined 132,554 lines of code across 300 source files, recording 899 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 10.7 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

10.7
Adjusted Score
10.7
Raw Score
100%
Time Factor
2026-07-14
Last Push
4.4K
Stars
Rust
Language
132.6K
Lines of Code
300
Files
899
Pattern Hits
2026-07-14
Scan Date
0.00
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 0MEDIUM 234LOW 665

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 899 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Decorative Section Separators217 hits · 688 pts
SeverityFileLineSnippetContext
MEDIUMMakefile.toml16# =============================================================================COMMENT
MEDIUMMakefile.toml18# =============================================================================COMMENT
MEDIUMMakefile.toml78# =============================================================================COMMENT
MEDIUMMakefile.toml80# =============================================================================COMMENT
MEDIUMMakefile.toml102# =============================================================================COMMENT
MEDIUMMakefile.toml104# =============================================================================COMMENT
MEDIUMMakefile.toml158# =============================================================================COMMENT
MEDIUMMakefile.toml160# =============================================================================COMMENT
MEDIUMMakefile.toml172# =============================================================================COMMENT
MEDIUMMakefile.toml174# =============================================================================COMMENT
MEDIUMMakefile.toml197# =============================================================================COMMENT
MEDIUMMakefile.toml199# =============================================================================COMMENT
MEDIUMMakefile.toml238# =============================================================================COMMENT
MEDIUMMakefile.toml240# =============================================================================COMMENT
MEDIUMMakefile.toml252# =============================================================================COMMENT
MEDIUMMakefile.toml254# =============================================================================COMMENT
MEDIUMcrates/smolvm-network/src/netns_tap.rs11//! ┌─────────┐ ethernet frames ┌──────────────┐ unixstream ┌────────┐COMMENT
MEDIUMcrates/smolvm-network/src/netns_tap.rs12//! │ tapX │◀───────────────────▶│ netns_tap │◀───────────▶│ libkrun │COMMENT
MEDIUMcrates/smolvm-network/src/netns_tap.rs15//! └─────────┘ └──────────────┘ └────────┘COMMENT
MEDIUMcrates/smolvm-shim/src/engine.rs378/// stdin fifo (nonblocking read) ──────────────────────────► │COMMENT
MEDIUMtests/test_gpu.sh38# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh40# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh71# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh73# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh80# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh82# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh187# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh189# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh258# =============================================================================COMMENT
MEDIUMtests/test_gpu.sh260# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh28# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh30# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh39# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh41# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh157# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh159# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh319# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh321# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh497# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh499# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh557# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh559# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh649# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh651# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh897# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh899# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh926# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh928# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1004# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1006# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1061# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1063# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1248# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1250# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1342# =============================================================================COMMENT
MEDIUMtests/test_smolfile.sh1344# =============================================================================COMMENT
MEDIUMtests/test_secrets.sh67# =============================================================================COMMENT
MEDIUMtests/test_secrets.sh69# =============================================================================COMMENT
MEDIUMtests/test_secrets.sh83# =============================================================================COMMENT
MEDIUMtests/test_secrets.sh85# =============================================================================COMMENT
157 more matches not shown…
Over-Commented Block606 hits · 586 pts
SeverityFileLineSnippetContext
LOWMakefile.toml1# cargo-make configuration for smolvmCOMMENT
LOWbuild.rs1//! Build script for smolvm.COMMENT
LOWbuild.rs21//! cp /opt/homebrew/opt/libkrun/lib/libkrun.dylib lib/COMMENT
LOWpackaging/nfpm.yaml1# nfpm config for the official smolvm .deb / .rpm packages.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs1//! Protocol types for smolvm host-guest communication.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs61pub const ROSETTA_GUEST_PATH: &str = "/mnt/rosetta";COMMENT
LOWcrates/smolvm-protocol/src/lib.rs81/// frame (~1.4 MB) fits inside typical kernel Unix-socket sendCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs101/// after the first chunk that pushes the accumulated total past theCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs121/// The host polls for this file through its virtiofs mount of the guestCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs161/// fsnotify event masks, mirroring the kernel's `FS_*` bits inCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs181 /// Event occurred against a directory.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs201pub enum AgentRequest {COMMENT
LOWcrates/smolvm-protocol/src/lib.rs221 /// Pull an OCI image and extract layers.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs301 /// container isolation. Useful for VM-level operations and debugging.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs321 background: bool,COMMENT
LOWcrates/smolvm-protocol/src/lib.rs341 /// User inside the rootfs. If omitted, the OCI image default applies.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs361 /// Detached mode — start the container and return immediately with theCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs401 /// New height in rows.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs421 #[serde(default)]COMMENT
LOWcrates/smolvm-protocol/src/lib.rs441 /// [`FILE_TRANSFER_MAX_TOTAL`]. The agent uses this for anCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs461 FileRead {COMMENT
LOWcrates/smolvm-protocol/src/lib.rs481 /// The host OCI runtime spec (config.json bytes). The agent extractsCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs641COMMENT
LOWcrates/smolvm-protocol/src/lib.rs701 /// Resource usage sample for a pod container (`PodStats` reply). Summed overCOMMENT
LOWcrates/smolvm-protocol/src/lib.rs721 DataChunk {COMMENT
LOWcrates/smolvm-protocol/src/lib.rs781 pub const EXPORT_FAILED: &str = "EXPORT_FAILED";COMMENT
LOWcrates/smolvm-protocol/src/lib.rs841 /// Convert a Result into an AgentResponse.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs881 pub layer_count: usize,COMMENT
LOWcrates/smolvm-protocol/src/lib.rs921 /// Number of cached layers.COMMENT
LOWcrates/smolvm-protocol/src/lib.rs1061}COMMENT
LOWcrates/smolvm-protocol/src/image_ref.rs1//! Image reference canonicalization.COMMENT
LOWcrates/smolvm-protocol/src/image_ref.rs21/// present it takes precedence and any tag is dropped.COMMENT
LOWcrates/smolvm-protocol/src/image_ref.rs101}COMMENT
LOWcrates/smolvm-protocol/src/retry.rs1//! Retry utilities for transient failure recovery.COMMENT
LOWcrates/smolvm-protocol/src/retry.rs21/// Default maximum retry attempts for general operations.COMMENT
LOWcrates/smolvm-protocol/src/retry.rs41/// failing within a reasonable time (~45 seconds worst case).COMMENT
LOWcrates/smolvm-protocol/src/secrets.rs1//! Secret reference types shared across smolvm surfaces.COMMENT
LOWcrates/smolvm-protocol/src/secrets.rs41/// A reference to a secret. Exactly one of the two sources must beCOMMENT
LOWcrates/smolvm-protocol/src/guest_env.rs1//! Shared environment-variable contract between the host launcher and guest agent.COMMENT
LOWcrates/smolvm-protocol/src/guest_env.rs21/// Absent means no GPU was requested.COMMENT
LOWcrates/smolvm-protocol/src/guest_env.rs41/// falls back to the shared [`crate::AGENT_READY_MARKER`] constant.COMMENT
LOWcrates/smolvm-cudart-shim/src/lib.rs1//! Drop-in `libcudart.so.11.0` for smolvm guests: the CUDA **Runtime API**,COMMENT
LOWcrates/smolvm-cudart-shim/src/lib.rs201 /// Active CUDA graph capture, `(stream_handle, capture_id)`. KeptCOMMENT
LOWcrates/smolvm-cudart-shim/src/lib.rs281/// domains for one guest program-order stream; the driver shim fences thisCOMMENT
LOWcrates/smolvm-cudart-shim/src/lib.rs1801}COMMENT
LOWcrates/smolvm-cudart-shim/src/lib.rs2901}COMMENT
LOWcrates/smolvm-network/src/device.rs1//! smoltcp `phy::Device` adapter for the virtio-net backend.COMMENT
LOWcrates/smolvm-network/src/device.rs21//! ```COMMENT
LOWcrates/smolvm-network/src/device.rs41use smoltcp::phy::{self, DeviceCapabilities, Medium};COMMENT
LOWcrates/smolvm-network/src/device.rs101 /// - the poll loop may need to classify it before callingCOMMENT
LOWcrates/smolvm-network/src/tcp_relay.rs1//! TCP relay support for the virtio-net backend.COMMENT
LOWcrates/smolvm-network/src/tcp_relay.rs121}COMMENT
LOWcrates/smolvm-network/src/tcp_relay.rs141#[derive(Clone, Debug)]COMMENT
LOWcrates/smolvm-network/src/tcp_relay.rs201 }COMMENT
LOWcrates/smolvm-network/src/tcp_relay.rs281COMMENT
LOWcrates/smolvm-network/src/netns_tap.rs1//! CNI netns ↔ virtio-net L2 bridge for the Kubernetes runtime.COMMENT
LOWcrates/smolvm-network/src/netns_tap.rs61///COMMENT
LOWcrates/smolvm-network/src/queues.rs1//! Shared queues and wake notifications for the virtio-net backend.COMMENT
LOWcrates/smolvm-network/src/queues.rs21//!COMMENT
LOWcrates/smolvm-network/src/queues.rs41//! -> guest_to_host.pop()COMMENT
546 more matches not shown…
Self-Referential Comments13 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMtests/common.sh54# Initialize SMOLVM variableCOMMENT
MEDIUMtests/test_gpu.sh155 # Create a named machine with --gpu, stop+start it, verify DRI still present.COMMENT
MEDIUMtests/test_smolfile.sh474 # Create a Smolfile in the temp dir (simulating CWD)COMMENT
MEDIUMtests/test_api.sh209 # Create a fresh machineCOMMENT
MEDIUMtests/test_api.sh574 # Create a machine (never start it)COMMENT
MEDIUMtests/test_machine_bare.sh255 # Create the named VM firstCOMMENT
MEDIUMtests/test_pack.sh635 # Create a named VM with network, install a package, then stop itCOMMENT
MEDIUMtests/test_pack.sh521 # Create a temp dir with a single .smolmachine fileCOMMENT
MEDIUMtests/test_db.sh29 # Create a named VM with specific configurationCOMMENT
MEDIUMtests/test_db.sh58 # Create a named VMCOMMENT
MEDIUMtests/test_db.sh103 # Create a VMCOMMENT
MEDIUMtests/test_volumes.sh29 # Create a host directory with a test fileCOMMENT
MEDIUMsrc/api/mod.rs15//! # Create a machineCOMMENT
Example Usage Blocks16 hits · 23 pts
SeverityFileLineSnippetContext
LOWMakefile.toml4# Usage:COMMENT
LOWtests/test_gpu.sh13# Usage:COMMENT
LOWtests/test_smolfile.sh8# Usage:COMMENT
LOWtests/test_secrets.sh15# Usage:COMMENT
LOWtests/test_cli.sh8# Usage:COMMENT
LOWtests/test_api.sh7# Usage:COMMENT
LOWtests/test_pack_registry.sh12# Usage:COMMENT
LOWtests/test_resize.sh6# Usage:COMMENT
LOWtests/run_tests.sh5# Usage:COMMENT
LOWtests/test_pack.sh8# Usage:COMMENT
LOWtests/test_scale.sh8# Usage:COMMENT
LOWscripts/build-dist.sh4# Usage:COMMENT
LOWscripts/install.sh8# Usage:COMMENT
LOWscripts/test-registry.sh9# Usage:COMMENT
LOWscripts/install-local.sh4# Usage:COMMENT
LOWscripts/install-k8s-runtime.sh11# Usage:COMMENT
Verbosity Indicators14 hits · 22 pts
SeverityFileLineSnippetContext
LOWcrates/smolvm-registry/src/client.rs893 // Step 1: attach a preemptive bearer to the initial send only.COMMENT
LOWcrates/smolvm-registry/src/client.rs902 // Step 2: send.COMMENT
LOWcrates/smolvm-registry/src/client.rs979 // Step 1: attach preemptive bearer (optimization — wrong scope → extra 401, not corruption).COMMENT
LOWcrates/smolvm-registry/src/client.rs986 // Step 2: send with a fresh body from the factory.COMMENT
LOWcrates/smolvm-registry/src/client.rs1007 // Step 3: token for the scope this request actually needs, fresh body.COMMENT
LOWcrates/smolvm-registry/src/client.rs1014 // Step 4: force-evict stale cache entry, genuinely fresh token, final body.COMMENT
LOWcrates/smolvm-registry/src/client.rs198 // Step 1: POST to initiate upload.COMMENT
LOWcrates/smolvm-registry/src/client.rs228 // Step 2: PUT the blob data with digest.COMMENT
LOWcrates/smolvm-registry/src/client.rs319 // Step 1: POST to initiate upload (empty body — always replayable).COMMENT
LOWcrates/smolvm-registry/src/client.rs350 // Step 2: PUT with streaming body via factory.COMMENT
LOWcrates/smolvm-registry/src/client.rs403 // Step 1: POST to open an upload session (empty body — replayable).COMMENT
LOWcrates/smolvm-registry/src/client.rs419 // Step 2: PATCH contiguous chunks. The registry hands back a fresh uploadCOMMENT
LOWcrates/smolvm-registry/src/client.rs458 // Step 3: PUT (empty body) to close the session, carrying the digest.COMMENT
LOWcrates/smolvm-registry/src/client.rs936 // Step 5: force-evict and fetch a genuinely fresh token → second retry.COMMENT
Structural Annotation Overuse14 hits · 22 pts
SeverityFileLineSnippetContext
LOWcrates/smolvm-registry/src/client.rs893 // Step 1: attach a preemptive bearer to the initial send only.COMMENT
LOWcrates/smolvm-registry/src/client.rs902 // Step 2: send.COMMENT
LOWcrates/smolvm-registry/src/client.rs979 // Step 1: attach preemptive bearer (optimization — wrong scope → extra 401, not corruption).COMMENT
LOWcrates/smolvm-registry/src/client.rs986 // Step 2: send with a fresh body from the factory.COMMENT
LOWcrates/smolvm-registry/src/client.rs1007 // Step 3: token for the scope this request actually needs, fresh body.COMMENT
LOWcrates/smolvm-registry/src/client.rs1014 // Step 4: force-evict stale cache entry, genuinely fresh token, final body.COMMENT
LOWcrates/smolvm-registry/src/client.rs198 // Step 1: POST to initiate upload.COMMENT
LOWcrates/smolvm-registry/src/client.rs228 // Step 2: PUT the blob data with digest.COMMENT
LOWcrates/smolvm-registry/src/client.rs319 // Step 1: POST to initiate upload (empty body — always replayable).COMMENT
LOWcrates/smolvm-registry/src/client.rs350 // Step 2: PUT with streaming body via factory.COMMENT
LOWcrates/smolvm-registry/src/client.rs403 // Step 1: POST to open an upload session (empty body — replayable).COMMENT
LOWcrates/smolvm-registry/src/client.rs419 // Step 2: PATCH contiguous chunks. The registry hands back a fresh uploadCOMMENT
LOWcrates/smolvm-registry/src/client.rs458 // Step 3: PUT (empty body) to close the session, carrying the digest.COMMENT
LOWcrates/smolvm-registry/src/client.rs936 // Step 5: force-evict and fetch a genuinely fresh token → second retry.COMMENT
Redundant / Tautological Comments13 hits · 19 pts
SeverityFileLineSnippetContext
LOWtests/common.sh410# Check if any smolvm processes are running that might interfere with testsCOMMENT
LOWtests/test_pack.sh1198 # Check if docker is availableCOMMENT
LOWtests/test_volumes.sh45 # Read the file via machine exec (VmExec) — this exercises boot-time mountCOMMENT
LOWtests/bench_vm_startup.sh41# Check if smolvm is availableCOMMENT
LOWscripts/build-dist.sh305# Set CODESIGN_IDENTITY to a Developer ID for distribution signing.COMMENT
LOWscripts/smolvm-wrapper.sh35# Check if binary existsCOMMENT
LOWscripts/smolvm-wrapper.sh42# Check if libraries existCOMMENT
LOWscripts/install.sh499 # Check if already in PATHCOMMENT
LOWscripts/install.sh505 # Check if already in profileCOMMENT
LOWscripts/rebuild-agent.sh43# Check if rootfs directory existsCOMMENT
LOWscripts/install-local.sh194 # Check if it's a tarball or directoryCOMMENT
LOWscripts/smol-wrapper.sh39# Check if binary existsCOMMENT
LOWscripts/smol-wrapper.sh46# Check if libraries existCOMMENT
AI Slop Vocabulary3 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_secrets.sh76 # `env` (busybox) prints the whole environment — robust across rootfs builds.COMMENT
MEDIUM.github/workflows/ci.yml277 # the WHP QA harness (unit tests can additionally be run under Wine withCOMMENT
MEDIUMsrc/agent/manager.rs2276 // Combined with agent-side sync(), this provides robust data integrityCOMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMscripts/check-secrets-guards.sh3# Static guardrails for host-side secret references.COMMENT
Fake / Example Data1 hit · 2 pts
SeverityFileLineSnippetContext
LOWcrates/smolvm-cudart-shim/src/lib.rs1966 // warning, never cause wrong behavior — unlike the fake-data stubs thatCOMMENT
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtests/test_network.sh629 except Exception:CODE