<!-- ⚠ GENERATED by nornir from .nornir/README.md — DO NOT EDIT this file -->
# holger
Secure artifact server for airgap environments — serves Maven, Python,
Rust, npm, NuGet, Go, Gem, Deb, Helm, Docker and more from znippy
archives. Replaces Nexus/Artifactory where auditability and airgap
compliance matter.
**10,084,953 rust crate ops/sec · 32 cores · v0.7.0**
| Artifact type | Single-core ops/sec | 32-core ops/sec |
|---|---|---|
| rust crate | 417,602 | 10,084,953 |
| python wheel | 313,469 | 7,740,871 |
| java jar | 283,015 | 7,307,041 |
## Benchmark history (manual log)
| Version | Date | Best ops/sec | Machine |
|---|---|---|---|
| 0.6.4 | 2026-05-29 | 10,084,953 (rust crate, 32-core) | 32-core |
| 0.7.0 | 2026-06-13 | 6,841,254 (rust crate, 32-core) | 32-core |
## Benchmarks
<!-- nornir:gen:start:benches -->
**v0.1.0 · oden · 32 cores · 2026-06-15**
| workload | bytes | mb_per_sec | ops | ops_per_sec | seconds |
|---|---|---|---|---|---|
| blake3_256MiB | 0.268B | 3,131 | | | 0.08 |
| java_jar_mt32 | 8.289B | 3,936 | 11.163M | 5.558M | 2.01 |
| java_jar_st | 0.342B | 163.05 | 0.461M | 0.230M | 2.00 |
| memcopy_512MiB | 0.537B | 2,590 | | | 0.20 |
| pip_wheel_mt32 | 6.573B | 3,130 | 8.960M | 4.475M | 2.00 |
| pip_wheel_st | 0.290B | 138.38 | 0.396M | 0.198M | 2.00 |
| rust_crate_mt32 | 9.879B | 4,706 | 15.805M | 7.894M | 2.00 |
| rust_crate_st | 0.391B | 186.35 | 0.626M | 0.313M | 2.00 |
<!-- nornir:gen:end:benches -->
## Tests
Every Rust test in the workspace (incl. `#[tokio::test]` async tests),
grouped by the standard categories. Run with `cargo test --workspace`.
<!-- nornir:gen:start:tests -->
**Unit tests** (109)
| file | tests |
|---|---|
| `agent/connector/world/src/pip.rs` | `test_normalize_name_basic`, `test_normalize_name_edge_cases`, `test_archive_path`, `test_archive_path_normalization`, `test_parse_requirements_txt`, `test_parse_requirements_txt_invalid`, `test_parse_uv_lockfile` |
| `server/lib/src/exposed/tls.rs` | `extracts_common_name_from_cert`, `empty_chain_yields_no_cn` |
| `server/lib/src/proxy.rs` | `fetch_returns_primary_hit_without_consulting_upstreams`, `fetch_falls_through_to_upstream_on_primary_miss`, `fetch_returns_none_when_all_miss`, `http_returns_primary_on_non_404`, `http_falls_through_to_upstream_on_primary_404`, `http_returns_404_when_all_404`, `proxy_name_and_format_delegate_to_primary` |
| `server/repository/file-oci/src/lib.rs` | `version_probe`, `full_push_pull_roundtrip_session_upload`, `percent_encoded_digest_on_finalize`, `monolithic_upload`, `chunked_upload_via_patch`, `digest_mismatch_rejected`, `manifest_with_unknown_blob_rejected`, `unknown_blob_and_manifest_404`, `malformed_digest_400`, `traversal_in_image_or_reference_blocked`, `referenced_digests_scan`, `put_via_trait_requires_blobs` |
| `server/repository/file-rust/src/lib.rs` | `sparse_path_test_1`, `sparse_path_test_2`, `sparse_path_test_3`, `sparse_path_test_n`, `sparse_path_into_tuple`, `put_then_fetch_round_trip`, `fetch_missing_returns_none`, `list_returns_all_put_artifacts`, `list_filters_by_name_substring`, `list_on_missing_base_dir_is_empty`, `config_json_uses_configurable_base_url`, `sparse_index_returns_real_checksums`, `sparse_index_missing_crate_returns_404`, `download_returns_real_crate_bytes`, `download_missing_crate_returns_404`, `streaming_hash_matches_in_memory_hash`, `cksum_cache_hits_and_invalidates_on_change` |
| `server/repository/znippy-composer/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-conda/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-deb/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-docker/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-gem/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-go/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-helm/src/index.rs` | `parse_chart_yaml_extracts_fields`, `parse_chart_yaml_ignores_nested_and_requires_name_version`, `chart_meta_from_tgz_roundtrip`, `digest_is_stable_sha256`, `generate_index_lists_entry_with_digest_and_url`, `generate_index_groups_versions_under_one_chart` |
| `server/repository/znippy-helm/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-maven/src/lib.rs` | `test_new_maven_repo`, `test_readonly`, `test_format` |
| `server/repository/znippy-npm/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-nuget/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-package/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-python/src/lib.rs` | `test_new`, `test_readonly`, `test_format`, `test_normalize_name` |
| `server/repository/znippy-rpm/src/lib.rs` | `test_new`, `test_format` |
| `server/repository/znippy-rust/src/lib.rs` | `new_repo_has_no_files`, `znippy_repo_is_readonly`, `has_archive_reflects_reader`, `config_json_uses_configured_base_url`, `sparse_index_returns_real_checksums_for_archived_crate`, `sparse_index_returns_404_for_absent_crate`, `sparse_index_with_multiple_versions_returns_all`, `download_returns_crate_bytes_from_archive`, `parse_crate_path_handles_hyphenated_names`, `list_with_no_reader_is_empty` |
| `server/ui/src/app.rs` | `default_preset_is_os_resolved_and_roster_is_facett_presets`, `switching_preset_rethemes_the_resolved_palette`, `apply_publishes_the_coherent_legacy_palette_into_egui` |
| `server/ui/src/data.rs` | `status_ok_populates_view_and_state_json`, `status_error_is_surfaced_not_loaded`, `repos_load_selects_first_and_preserves_selection_by_name`, `upload_enabled_tracks_selected_repo_writable`, `fetch_found_sets_size_and_does_not_leak_bytes_into_state_json`, `fetch_missing_is_not_found_not_error`, `fetch_transport_error_is_surfaced`, `put_rejected_on_read_only_repo`, `put_succeeds_on_writable_repo`, `combined_state_json_has_all_three_views`, `archive_lists_files_and_stats`, `archive_transport_error_is_surfaced`, `browse_lists_artifacts_for_repo`, `browse_unknown_repo_is_empty_not_error` |
| `traits/src/lib.rs` | `znippy_type_ids_match_znippy_skeletons`, `format_str_roundtrips_aliases` |
**Integration tests** (38)
| file | tests |
|---|---|
| `agent/cli/tests/integration_holger.rs` | `test_holger_h2c_with_mannequin_nexus`, `test_oidc_auth_flow_with_mannequin`, `test_mtls_auth_validation_with_mannequin` |
| `agent/cli/tests/integration_latency_bench_twin.rs` | `test_latency_tail_twin_small_scale` |
| `agent/cli/tests/integration_latency_tail.rs` | `test_tail_latency_gc_pressure` |
| `agent/cli/tests/integration_nexus_bench_twin.rs` | `test_nexus_load_twin_small_scale` |
| `agent/cli/tests/integration_nexus_load.rs` | `test_nexus_load_with_real_artifacts` |
| `agent/cli/tests/integration_pip.rs` | `test_pip_requirements_txt_to_directory`, `test_pip_uv_lock_to_directory`, `test_pip_airgap_and_push_to_mannequin` |
| `agent/cli/tests/integration_tar_zstd.rs` | `test_tar_zstd_round_trip_with_mannequin`, `test_tar_zstd_archive_contents_valid`, `test_tar_zstd_push_to_holger_with_oidc` |
| `mannequin/tests/gui_robot.rs` | `mannequin_gui_renders_three_system_nodes_with_badges`, `mannequin_gui_click_selects_node_and_state_reflects_it`, `mannequin_chart_renders_under_every_look_preset` |
| `mannequin/tests/smoke_serve.rs` | `mannequin_serve_boots_and_listens` |
| `server/lib/tests/integration_oci_tls.rs` | `oci_push_pull_over_tls`, `writes_blocked_without_auth_reads_open` |
| `server/lib/tests/unit_tests.rs` | `test_parse_minimal_config`, `test_wire_holger`, `test_rust_api_fetch`, `test_list_repositories`, `test_fetch_unknown_repo_errors`, `test_maven_config` |
| `server/repository/znippy-rust/tests/integration_znippy_serve.rs` | `test_znippy_archive_full_roundtrip`, `test_znippy_archive_smoke`, `test_all_types_download_pack_benchmark` |
| `server/ui/tests/local_core.rs` | `ui_data_round_trips_through_real_local_holger`, `browse_paginates_with_load_more` |
| `server/ui/tests/remote_grpc.rs` | `ui_data_round_trips_over_real_grpc`, `bearer_token_path_is_wire_correct` |
| `server/ui/tests/robot_ui.rs` | `browse_view_state_json_lists_seeded_artifacts`, `archive_view_state_json_exposes_tree_and_stats` |
| `xtask/tests/holger_matrix.rs` | `holger_component_matrix_is_green`, `holger_matrix_heavy_mannequin_boot`, `red_cell_shows_up_red_in_the_grid`, `testmatrix_feature_emits_functional_rows_into_the_sink` |
**Doc tests** (0)
_(none)_
<!-- nornir:gen:end:tests -->
## Dependency graph
<!-- nornir:gen:start:depgraph -->

<!-- nornir:gen:end:depgraph -->