Statistics
Explore Capsem’s source history from its first commit: where the code lives, how the workspace and tests developed, and how crates depend on each other. Change a snapshot, select chart series, or download the data to investigate a particular part of the architecture.
Where the code lives
Choose a snapshot to compare each component's share of source code.
633,215 source lines · 2026-11-02. All categories use the same percentage scale.
Data table
| Category / date | Share of total LOC (%) |
|---|---|
| Hypervisor | 1.986 |
| Clients | 5.097 |
| Guest agent & scripts | 1.078 |
| Host VM lifecycle | 1.238 |
| Other host components | 18.333 |
| Tests & support | 52.435 |
| Citadel & guardrails | 6.642 |
| Benchmark code | 1.501 |
| Build & release tooling | 10.074 |
| Docs & marketing | 0.666 |
| Other code | 0.948 |
Client source lines at 2026-11-02. Every spoke uses the same 0–14,000 LOC scale across all snapshots; generated code and tests excluded.
Data table
| Category / date | Source lines (LOC) |
|---|---|
| App | 12,003 |
| CLI | 8,747 |
| TUI | 4,710 |
| Tray | 1,047 |
| MCP | 515 |
| Rust SDK | 2,378 |
| Python SDK | 1,389 |
| TypeScript SDK | 1,489 |
Growth from the first commit
Each point is an exact Git snapshot. The early Python implementation is included, Rust crate counts start at zero, and quiet months carry forward the last main-line commit.
Values in LOC. Select legend entries to show or hide a series.
Data table
| Category / date | Hypervisor (LOC) | Clients (LOC) | Guest agent & scripts (LOC) | Host VM lifecycle (LOC) | Other host components (LOC) | Tests & support (LOC) | Citadel & guardrails (LOC) | Benchmark code (LOC) | Build & release tooling (LOC) | Docs & marketing (LOC) | Other code (LOC) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025-10-01 | 0 | 0 | 0 | 0 | 731 | 124 | 0 | 0 | 0 | 0 | 165 |
| 2025-10-31 | 0 | 0 | 0 | 0 | 2,015 | 2,011 | 0 | 0 | 0 | 157 | 0 |
| 2025-11-30 | 0 | 0 | 0 | 0 | 2,015 | 2,011 | 0 | 0 | 0 | 157 | 0 |
| 2025-12-31 | 0 | 0 | 0 | 0 | 2,015 | 2,011 | 0 | 0 | 0 | 157 | 0 |
| 2026-01-31 | 0 | 0 | 0 | 0 | 2,015 | 2,011 | 0 | 0 | 0 | 157 | 0 |
| 2026-02-28 | 521 | 5,036 | 962 | 187 | 6,823 | 11,269 | 0 | 494 | 6 | 0 | 135 |
| 2026-03-31 | 5,294 | 10,184 | 1,233 | 369 | 13,202 | 36,823 | 0 | 699 | 4,941 | 250 | 4 |
| 2026-04-30 | 5,626 | 14,241 | 1,837 | 2,655 | 20,115 | 61,896 | 0 | 941 | 6,398 | 1,330 | 4 |
| 2026-05-31 | 10,653 | 27,011 | 2,873 | 4,992 | 49,287 | 111,636 | 47 | 2,860 | 14,780 | 1,507 | 80 |
| 2026-06-30 | 10,690 | 22,826 | 2,871 | 4,454 | 54,742 | 127,879 | 8,762 | 4,483 | 9,924 | 1,329 | 744 |
| 2026-07-31 | 10,861 | 26,385 | 3,017 | 4,670 | 62,491 | 162,598 | 15,992 | 4,558 | 30,471 | 1,755 | 1,735 |
| 2026-08-31 | 12,684 | 26,914 | 3,135 | 4,693 | 64,165 | 191,471 | 29,902 | 6,325 | 53,709 | 2,082 | 252 |
| 2026-09-30 | 12,237 | 28,743 | 5,182 | 6,051 | 78,479 | 241,129 | 38,954 | 8,064 | 59,799 | 2,082 | 302 |
| 2026-10-31 | 12,577 | 32,278 | 6,826 | 7,840 | 116,090 | 331,851 | 41,993 | 9,507 | 63,653 | 4,218 | 6,003 |
| 2026-11-02 | 12,577 | 32,278 | 6,826 | 7,840 | 116,090 | 332,027 | 42,058 | 9,507 | 63,791 | 4,218 | 6,003 |
Values in count. Select legend entries to show or hide a series.
Data table
| Category / date | Workspace crates (count) | Internal dependency pairs (count) |
|---|---|---|
| 2025-10-01 | 0 | 0 |
| 2025-10-31 | 0 | 0 |
| 2025-11-30 | 0 | 0 |
| 2025-12-31 | 0 | 0 |
| 2026-01-31 | 0 | 0 |
| 2026-02-28 | 5 | 5 |
| 2026-03-31 | 5 | 5 |
| 2026-04-30 | 14 | 24 |
| 2026-05-31 | 19 | 45 |
| 2026-06-30 | 18 | 26 |
| 2026-07-31 | 18 | 26 |
| 2026-08-31 | 18 | 27 |
| 2026-09-30 | 27 | 68 |
| 2026-10-31 | 32 | 118 |
| 2026-11-02 | 32 | 118 |
Values in packages. Select legend entries to show or hide a series.
Data table
| Category / date | rust (packages) | npm (packages) | python (packages) |
|---|---|---|---|
| 2025-10-01 | 0 | 0 | 10 |
| 2025-10-31 | 0 | 3 | 22 |
| 2025-11-30 | 0 | 3 | 22 |
| 2025-12-31 | 0 | 3 | 22 |
| 2026-01-31 | 0 | 3 | 22 |
| 2026-02-28 | 44 | 17 | 0 |
| 2026-03-31 | 56 | 28 | 7 |
| 2026-04-30 | 78 | 26 | 10 |
| 2026-05-31 | 90 | 29 | 15 |
| 2026-06-30 | 94 | 27 | 13 |
| 2026-07-31 | 95 | 27 | 15 |
| 2026-08-31 | 95 | 27 | 19 |
| 2026-09-30 | 98 | 32 | 26 |
| 2026-10-31 | 112 | 38 | 37 |
| 2026-11-02 | 112 | 38 | 37 |
Testing investment
These are declared test definitions. Parameterized cases, architecture runs and reruns can produce more executions. Benchmark code and performance measurements are tracked separately.
Values in definitions. Select legend entries to show or hide a series.
Data table
| Category / date | Rust (definitions) | Python build tooling (definitions) | VM integration (definitions) | Frontend (definitions) | Citadel (definitions) | Source contracts (definitions) | Doctor (definitions) | Ironbank (definitions) | Python SDK (definitions) | TypeScript SDK (definitions) | MCP (definitions) | Inspect AI (definitions) | Other Python (definitions) | Other JavaScript (definitions) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025-10-01 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 8 | 0 |
| 2025-10-31 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 0 |
| 2025-11-30 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 0 |
| 2025-12-31 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 0 |
| 2026-01-31 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100 | 0 |
| 2026-02-28 | 751 | 0 | 0 | 0 | 0 | 0 | 89 | 0 | 0 | 0 | 0 | 0 | 38 | 0 |
| 2026-03-31 | 2,011 | 0 | 0 | 59 | 0 | 0 | 218 | 0 | 0 | 0 | 0 | 0 | 649 | 0 |
| 2026-04-30 | 3,029 | 0 | 640 | 305 | 0 | 0 | 226 | 0 | 0 | 0 | 0 | 0 | 697 | 0 |
| 2026-05-31 | 3,622 | 0 | 743 | 395 | 0 | 3 | 242 | 0 | 0 | 0 | 0 | 0 | 981 | 0 |
| 2026-06-30 | 3,857 | 0 | 796 | 371 | 2 | 190 | 249 | 88 | 0 | 0 | 0 | 0 | 655 | 0 |
| 2026-07-31 | 4,291 | 0 | 1,126 | 376 | 5 | 490 | 249 | 88 | 0 | 0 | 0 | 0 | 1,355 | 3 |
| 2026-08-31 | 4,545 | 2,776 | 1,125 | 377 | 304 | 225 | 249 | 86 | 0 | 0 | 0 | 0 | 218 | 0 |
| 2026-09-30 | 5,769 | 3,212 | 947 | 448 | 603 | 231 | 189 | 127 | 38 | 49 | 24 | 0 | 370 | 0 |
| 2026-10-31 | 7,471 | 3,628 | 996 | 603 | 807 | 239 | 164 | 210 | 92 | 98 | 31 | 99 | 562 | 8 |
| 2026-11-02 | 7,471 | 3,636 | 996 | 603 | 808 | 239 | 164 | 210 | 92 | 98 | 31 | 99 | 562 | 8 |
Release success rate
Follow the percentage of recorded release attempts that succeeded each month. Reruns count separately; cancellations count as unsuccessful attempts.
Monthly success rate = successful attempts ÷ (successful + failed + cancelled attempts). Each rerun counts separately; binary and runtime workflows are included. Months with no attempts have no value.
Data table
| Category / date | Successful attempts (%) |
|---|---|
| 2025-10 | 16.667 |
| 2025-11 | Not recorded |
| 2025-12 | Not recorded |
| 2026-01 | Not recorded |
| 2026-02 | Not recorded |
| 2026-03 | 24.242 |
| 2026-04 | 26.316 |
| 2026-05 | 23.077 |
| 2026-06 | 18.519 |
| 2026-07 | 15.556 |
| 2026-08 | 3.846 |
| 2026-09 | 6.667 |
| 2026-10 | 6.098 |
| 2026-11 | 0 |
Crate dependency explorer
Inspect the dependencies declared in each snapshot's Cargo workspace. Search for a crate to show its direct neighbours, or show the whole workspace. External libraries are counted in the trend chart above.
Legend
- Components, inputs and outputs
No host-permission level assigned by this diagram.
| From | Connection | To |
|---|---|---|
| capsem | runtime | assets |
| capsem | runtime | core — (selected) |
| capsem | runtime | crypto |
| capsem | runtime | foundation |
| capsem | runtime | proto |
| admin | runtime | assets |
| admin | runtime | core — (selected) |
| admin | runtime | crypto |
| assets | runtime | crypto |
| assets | runtime | foundation |
| cache | runtime | telemetry |
| config | runtime | proto |
| core — (selected) | runtime | assets |
| core — (selected) | runtime | cache |
| core — (selected) | runtime | config |
| core — (selected) | runtime | credentials |
| core — (selected) | runtime | crypto |
| core — (selected) | runtime | foundation |
| core — (selected) | runtime | logger |
| core — (selected) | runtime | mcp — transport |
| core — (selected) | runtime | proto |
| core — (selected) | runtime | router |
| core — (selected) | runtime | telemetry |
| credentials | runtime | crypto |
| credentials | runtime | foundation |
| credentials | runtime | proto |
| foundation | runtime | crypto |
| foundation | runtime | proto |
| logger | runtime | cache |
| logger | runtime | crypto |
| logger | runtime | foundation |
| logger | runtime | proto |
| logger | runtime | telemetry |
| mcp — builtin | runtime | core — (selected) |
| mcp — builtin | runtime | foundation |
| mcp — builtin | runtime | mcp — transport |
| mcp — builtin | runtime | proto |
| mcp — transport | runtime | foundation |
| mcp — transport | runtime | proto |
| process | runtime | assets |
| process | runtime | core — (selected) |
| process | runtime | foundation |
| process | runtime | logger |
| process | runtime | proto |
| process | runtime | telemetry |
| proto | runtime | crypto |
| proxy | runtime | core — (selected) |
| proxy | runtime | foundation |
| proxy | runtime | logger |
| proxy | runtime | proto |
| proxy | runtime | telemetry |
| router | runtime | foundation |
| router | runtime | proto |
| service | runtime | assets |
| service | runtime | cache |
| service | runtime | core — (selected) |
| service | runtime | credentials |
| service | runtime | crypto |
| service | runtime | foundation |
| service | runtime | logger |
| service | runtime | mcp — transport |
| service | runtime | proto |
| service | runtime | router |
| service | runtime | telemetry |
Sources and definitions
How these numbers are collected
Source LOC excludes blank lines, comments, generated code, vendor code, data and lockfiles. Tests are assigned before production components; inline Rust test blocks are partitioned. Component ownership follows source paths, including historical layouts.
Direct external dependency counts deduplicate package names across workspaces, including development and build roles. Internal connections count distinct directed crate pairs. These describe size and structure rather than a quality score.
The June main reset has an explicit history-restoration merge. Collection follows that restored original main lineage and then current main, rather than selecting arbitrary feature branches by date. The initial commit already contains source code.
GitHub records are retained when older API evidence expires. GitHub observed at 2026-11-02T20:09:07.332802+00:00. Publication timestamps do not establish that an entire release workflow passed.
Source commit: c1018eacbcfb. Generated at 2026-11-02T20:09:07.332802+00:00. The Python collector and its tests live in the repository.