1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
[]
= "supermachine"
= "0.4.21"
= true
= true
# This package's own source is purely Apache-2.0. The transitive
# dep on `supermachine-kernel` brings in GPL-2.0-only kernel data
# and MIT musl in init-oci; consumers redistributing the combined
# binary must satisfy those licenses on the data blobs (see
# `supermachine-kernel`'s NOTICE for the GPL ยง3(b) source offer).
# Per Cargo convention, the `license` field describes this
# package's contents only.
= "Apache-2.0"
= true
= "Run any OCI/Docker image as a hardware-isolated microVM on macOS HVF (Linux KVM and Windows WHP in progress). Single library API, zero flags for the common case, sub-100 ms cold-restore from snapshot."
= "https://docs.rs/supermachine"
= "README.md"
= ["microvm", "hypervisor", "oci", "docker", "snapshot"]
= ["virtualization", "api-bindings", "command-line-utilities"]
# Whitelist what ships in the published .crate. Excluded: large
# binary fixtures (`oci/init-oci*`, `test-initramfs/`, baked
# snapshots, profiling output) which are dev-only artifacts and
# would push the package past crates.io's 10 MiB cap. The init
# shim source `oci/init-oci.c` ships so embedders building from
# source can rebuild it; the prebuilt binary travels through the
# `supermachine-kernel` crate instead.
= [
"src/**/*.rs",
"examples/**/*.rs",
"entitlements.plist",
"oci/init-oci.c",
"Cargo.toml",
"README.md",
"LICENSE-APACHE",
]
[]
= "supermachine"
= "src/lib.rs"
[[]]
= "supermachine"
= "src/bin/cli.rs"
[[]]
= "supermachine-worker"
= "src/bin/worker.rs"
[[]]
= "supermachine-router"
= "src/bin/router.rs"
[[]]
= "cargo-supermachine"
= "src/bin/cargo_plugin.rs"
[]
# Default off so Apache-style consumers don't pull tokio
# transitively. Opt-in adds an async wrapper surface that
# `spawn_blocking`s the sync API onto tokio's worker pool.
= []
= ["dep:tokio"]
[]
= true
= true
= true
= "0.4"
= "0.11"
# Structured tracing for embedders. We emit `tracing::info_span!`
# spans + events from the public API entry points (bake, acquire,
# snapshot capture, exec) so embedders can wire a
# `tracing-subscriber` JSON layer and get phase-by-phase metrics
# without us having to ship a custom format. Enabled by default;
# zero overhead when no subscriber is installed.
= "0.1"
= { = "1", = ["net", "os-poll"] }
= { = "0.23", = false, = ["std", "tls12", "ring", "aws-lc-rs"] }
= "2"
# Optional async surface โ see the `tokio` feature.
= { = "1", = false, = ["rt", "rt-multi-thread", "sync"], = true }
# Hard dep: kernel + init shim ride inside our binary so
# `cargo install supermachine` produces a CLI that just works,
# zero manual setup. Pinned with `=` because the snapshot format
# is keyed to the kernel build; any drift would invalidate baked
# snapshots. Override with $SUPERMACHINE_KERNEL_PATH at runtime
# for custom kernels.
#
# Licensing: `supermachine-kernel` is `Apache-2.0 AND GPL-2.0-only
# AND MIT` because it bundles the Linux kernel (GPL) and the musl
# libc statically linked into init-oci (MIT). This crate's own
# source stays pure Apache-2.0 โ the GPL component arrives as a
# transitive runtime data dependency. Consumers redistributing a
# binary that pulls supermachine in must comply with GPL-2.0 on
# the kernel blob (point downstream at the kernel-build/ recipe
# in our repo for source); their own code is unaffected since the
# kernel runs as guest data in a separate VM, not as linked code.
= { = "=0.4.21", = "../supermachine-kernel" }
[]
= { = "1.0", = ["macos-15-0"] }
= "0.3"
[]
# For the async-API integration tests under
# `tests/integration_async.rs`, gated on the `tokio` feature.
= { = "1", = false, = ["rt-multi-thread", "macros", "time"] }
# Used by `examples/_tracing_demo.rs` to demonstrate the public
# tracing surface. Embedders pick whichever subscriber they want;
# this is just for the example.
= { = "0.3", = ["env-filter", "fmt"] }
# Used by `examples/_flame_graph.rs` to emit folded-stack-format
# output that `inferno-flamegraph` (or chrome://tracing if you
# convert to JSON) renders as an SVG flame graph. Optional โ
# embedders who want flame graphs install this themselves.
= "0.2"
[]
= "warn"