Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
505 commits
Select commit Hold shift + click to select a range
a9295ba
Update dstack/
kvinwang Dec 24, 2025
a4fbb92
Output gcp.tar.gz inside the image dir
kvinwang Dec 24, 2025
c22dfd4
Add cli dstack-cloud
kvinwang Dec 24, 2025
9163e80
Sync dstack/
kvinwang Dec 24, 2025
373ba08
Update dstack
kvinwang Jan 8, 2026
44a4444
Update url of dstack submodule
kvinwang Jan 8, 2026
ea76d25
Fix reproducibility issues
kvinwang Jan 15, 2026
268ce48
Update dstack
kvinwang Jan 15, 2026
d06a4d6
dstack-cloud: Add fw command group
kvinwang Jan 15, 2026
3dea1d5
dstack-cloud: Disable .env when kms is off
kvinwang Jan 15, 2026
8aa5409
dstack-cloud: Auto upload data-disk image
kvinwang Jan 16, 2026
5858bc0
Update dstack submodule url
kvinwang Jan 16, 2026
14b119f
Update dstack
kvinwang Jan 16, 2026
2f1b299
Volatile /etc/
kvinwang Dec 22, 2025
642c225
Suppress the warn Text file busy in build.sh
kvinwang Dec 22, 2025
5beaebe
Remove CF_ZONE_ID
kvinwang Dec 22, 2025
c195dc6
ssh: Disable password auth
kvinwang Dec 22, 2025
8b06b6b
Update dstack/
kvinwang Jan 16, 2026
080aded
Merge pull request #33 from Dstack-TEE/ds-up
kvinwang Jan 16, 2026
8980c09
Update submodules
kvinwang Jan 19, 2026
4da51e9
Update LICENSE
kvinwang Jan 19, 2026
4f72c0c
Update submodule URL
kvinwang Jan 19, 2026
d90c9fa
Update URL in README.md
kvinwang Jan 19, 2026
9a88cf4
Update dstack/
kvinwang Jan 19, 2026
78082be
Fix random fakeroot bb build error
kvinwang Jan 19, 2026
04288d0
bb: Rename image from dstack to dstack-cloud
kvinwang Jan 19, 2026
7cc276f
bb: Refactor image recipes to use multiconfig
kvinwang Jan 20, 2026
37531fe
bb: Move build config from bb-build to meta-dstack/conf
kvinwang Jan 20, 2026
6a0ae2a
Rename dist image prefix from dstack to dstack-cloud
kvinwang Jan 20, 2026
04100cd
mkimage: Fix UKI auth_hash not being written to output
kvinwang Jan 20, 2026
0ff95e2
Update LICENSE
kvinwang Jan 20, 2026
8e59b37
Fix uki filename in bb files
kvinwang Jan 20, 2026
1ee6539
Update dstack/ submodule
kvinwang Jan 20, 2026
2be0714
mkimage: Split output into bare-metal and UKI tarballs
kvinwang Jan 20, 2026
cd84be8
Fix filenames in dstack-cloud.py
kvinwang Jan 20, 2026
0a002d4
Fix url in repro-build.sh
kvinwang Jan 20, 2026
9ebce4c
Update dstack and meta-rust-bin submodules
kvinwang Jan 20, 2026
82555d3
mkimage: Fix authenticode_hash.py path resolution
kvinwang Jan 20, 2026
50ff704
Update Rustc to 1.92.0
kvinwang Jan 20, 2026
b964368
dstack-guest: Restore do_unpack nostamp flag
kvinwang Jan 20, 2026
c65b000
mkimage: Use stat -L to follow symlinks when getting rootfs size
kvinwang Jan 20, 2026
4775271
Remove tpm2 from DISTRO_FEATURES
kvinwang Jan 20, 2026
f1e2879
Remove unused systemd components completely
kvinwang Jan 20, 2026
d82f4d0
dstack-cloud: Remove init command and improve UX
kvinwang Jan 20, 2026
5652ee2
Update dstack/ submodule
kvinwang Jan 20, 2026
4f1d55a
Suppress meta-tpm warning
kvinwang Jan 20, 2026
f899c7e
Always calculate auth hash
kvinwang Jan 20, 2026
479f3bf
Add gptfdisk
kvinwang Jan 21, 2026
53a37fa
Update dstack/ submodule
kvinwang Jan 21, 2026
3569a3d
Merge remote-tracking branch 'ds/main'
kvinwang Jan 21, 2026
0b8d9c3
Update dstack/ submodule
kvinwang Jan 21, 2026
b3519ba
Update dstack/ submodule
kvinwang Jan 21, 2026
e865620
Fix openssh build
kvinwang Jan 21, 2026
037b912
bump version to 0.5.6
kvinwang Jan 21, 2026
6a7da72
Update meta-virtualization: fix runc reproducible build
kvinwang Jan 21, 2026
d6b3acd
Update meta-virtualization/ submodule
kvinwang Jan 21, 2026
6afa83d
Update meta-virtualization
kvinwang Jan 22, 2026
65d6ffd
Fix env issue in dstack-cloud
kvinwang Jan 23, 2026
b49e84b
Update dstack/ submodule
kvinwang Jan 23, 2026
c92e0a8
Upgrade kernel to 6.18.7
kvinwang Jan 26, 2026
d748963
Merge pull request #1 from Phala-Network/upgrade-kernel-6.18.7
kvinwang Jan 26, 2026
44f2945
Update dstack/ submodule
kvinwang Jan 22, 2026
7cf15f5
Update dstack/ submodule
kvinwang Jan 23, 2026
2b082d6
feat: Enable systemd socket proxy for dstack backward compatibility
kvinwang Jan 27, 2026
edc26be
feat: Add dstack-prepare service drop-in configuration
kvinwang Jan 27, 2026
51ba7ea
Update dstack/ submodule
kvinwang Jan 27, 2026
f9db23a
feat: Enable systemd socket proxy for dstack backward compatibility
kvinwang Jan 27, 2026
7d30c7b
Add ephemeral-docker.sh
kvinwang Jan 27, 2026
0e8062e
fix nvidia
Longarithm Jan 27, 2026
83f8d58
fix(dstack-cloud): fix env encryption format for CVM decryption
kvinwang Jan 29, 2026
6da8d86
feat: built-in systemd socket activation for dstack-guest-agent
kvinwang Jan 29, 2026
7ef2b87
Move docker daemon config from package to image level
kvinwang Jan 29, 2026
7e7934a
Remove docker daemon json from dstack-guest/files (moved to images/fi…
kvinwang Jan 29, 2026
0b5b716
Merge pull request #34 from Longarithm/fix-nvidia
kvinwang Jan 29, 2026
cb2c347
Move docker daemon config from package to image level
kvinwang Jan 29, 2026
557ff81
Merge pull request #2 from Phala-Network/fix-nvidia-docker-config
kvinwang Jan 29, 2026
4263d51
feat(guest): install conntrack sysctl config into CVM
kvinwang Feb 2, 2026
f4aedf4
feat(guest): switch to native systemd socket activation
kvinwang Feb 2, 2026
5a368c8
Update dstack/ submodule
kvinwang Feb 3, 2026
e50408e
Faster kernel download url
kvinwang Feb 4, 2026
0db86d1
Update dstack/ submodule
kvinwang Feb 5, 2026
b12b5c6
feat(guest): install conntrack sysctl config into CVM
kvinwang Feb 2, 2026
71d9054
feat(guest): add sysbox container runtime v0.6.7
kvinwang Feb 7, 2026
5d6a81f
feat(guest): add sysbox container runtime v0.6.7
kvinwang Feb 7, 2026
500a531
chore: trigger CI review
kvinwang Feb 8, 2026
9a4f0f6
fix(sysbox): adapt services for dm-verity read-only rootfs
kvinwang Feb 8, 2026
963789b
fix(sysbox): adapt services for dm-verity read-only rootfs
kvinwang Feb 8, 2026
4057785
docs(sysbox): add comments explaining sysctl values
kvinwang Feb 8, 2026
78d8314
docs(sysbox): add comments explaining sysctl values
kvinwang Feb 8, 2026
4790f5e
refactor: move sysbox bind-mount from service into dstack-prepare
kvinwang Feb 8, 2026
69bb46e
refactor: move sysbox bind-mount from service into dstack-prepare
kvinwang Feb 8, 2026
ea244e2
refactor: move sysbox bind-mount from service into dstack-prepare
kvinwang Feb 8, 2026
1e20cc0
refactor: move sysbox bind-mount from service into dstack-prepare
kvinwang Feb 8, 2026
af0eb9d
Update dstack/ submodule
kvinwang Feb 9, 2026
87ec15e
Merge pull request #35 from Dstack-TEE/feat/sysbox-runtime
kvinwang Feb 9, 2026
f1c68d3
Bump version to 0.5.6.1
kvinwang Feb 9, 2026
3aba6f8
Update dstack/ submodule
kvinwang Feb 10, 2026
b93d08d
Merge pull request #3 from Phala-Network/feat/sysbox-runtime
kvinwang Feb 10, 2026
08c1a62
feat(dstack-cloud): support absolute URL in pull command
kvinwang Feb 11, 2026
350002d
fix(gcp): preserve firewall reachability after instance recreation
kvinwang Feb 11, 2026
230c113
Update dstack/ submodule
kvinwang Feb 11, 2026
3865b26
fix: remove env_file from app.json in non-KMS mode
kvinwang Feb 12, 2026
962d729
chore: sync dstack submodule (rename network test -> custom)
kvinwang Feb 12, 2026
ec80adb
fix: handle missing instance gracefully in stop/start commands
kvinwang Feb 13, 2026
eb5b4e5
fix: distinguish "not found" from other gcloud errors
kvinwang Feb 13, 2026
ca1e9ab
Merge pull request #4 from Phala-Network/fix/stop-start-instance-not-…
kvinwang Feb 13, 2026
b71d759
Update dstack/ submodule
kvinwang Mar 3, 2026
8e9bf6b
Add parted to fix disk growing failure
kvinwang Mar 3, 2026
b6fa4c0
Merge pull request #36 from Dstack-TEE/add-parted
kvinwang Mar 3, 2026
1f2c3c7
Bump version to 0.5.7
kvinwang Mar 3, 2026
37f24d7
kernel: enable CONFIG_OVERLAY_FS_METACOPY for sysbox chown fallback
kvinwang Mar 7, 2026
aa614d4
kernel: enable CONFIG_OVERLAY_FS_METACOPY for sysbox chown fallback
kvinwang Mar 7, 2026
ce9efde
dstack-sysbox: disable ovfs on idmapped mounts
kvinwang Mar 9, 2026
0ddc6bd
dstack-sysbox: disable ovfs on idmapped mounts
kvinwang Mar 9, 2026
a674174
Merge pull request #38 from Dstack-TEE/enable-overlay-metacopy
kvinwang Mar 9, 2026
544e5b6
Merge pull request #6 from Phala-Network/enable-overlay-metacopy
kvinwang Mar 9, 2026
baf5631
libnvidia-container: fix TLS verification for build-time downloads
kvinwang Mar 9, 2026
9410b1e
libnvidia-container: fix TLS verification for build-time downloads
kvinwang Mar 9, 2026
889d1df
Merge pull request #39 from Dstack-TEE/fix/libnvidia-curl-tls
kvinwang Mar 9, 2026
98f4f9e
Merge pull request #7 from Phala-Network/fix/libnvidia-curl-tls
kvinwang Mar 9, 2026
1e728ac
libnvidia-container: fix TLS verification for build-time downloads
kvinwang Mar 9, 2026
e793cd5
Add xt_comment and nf_tables kernel modules for k3s support
kvinwang Mar 16, 2026
c3d52c4
Add xt_multiport and other missing iptables modules
kvinwang Mar 16, 2026
2469120
Merge pull request #43 from Dstack-TEE/fix-libnvidia-tls-verification
kvinwang Mar 17, 2026
b777001
Merge pull request #42 from Dstack-TEE/add-k3s-kernel-modules
kvinwang Mar 17, 2026
669942a
Merge branch 'enable-overlay-metacopy'
kvinwang Mar 17, 2026
402cb67
Update submodules
kvinwang Mar 17, 2026
48d6cf0
Bump version to 0.5.8
kvinwang Mar 17, 2026
50172d8
Add xt_comment, nf_tables and other iptables kernel modules for k3s s…
kvinwang Mar 17, 2026
48dd3df
Revert meta-rust-bin to pre-whinlatter commit
kvinwang Mar 17, 2026
f9f11f3
fix: upgrade OVMF to edk2-stable202505 tagged release
kvinwang Mar 18, 2026
0a9a031
ci: add build-guest workflow for manual trigger with optional release
kvinwang Mar 18, 2026
73b0e80
ci: build directly instead of using repro-build docker wrapper
kvinwang Mar 18, 2026
e09a5f7
ci: restore repro-build.sh for reproducible builds
kvinwang Mar 18, 2026
5c22fe8
Add ipset and netfilter kernel modules for k3s NetworkPolicy support
kvinwang Mar 20, 2026
efb1e09
Replace small NTS servers with authoritative providers
kvinwang Mar 20, 2026
5e4b756
Add System76 Oregon and Paris NTS servers for geographic diversity
kvinwang Mar 20, 2026
430659d
Merge pull request #52 from Dstack-TEE/fix/nts-servers
kvinwang Mar 20, 2026
8977e04
Merge pull request #51 from Dstack-TEE/feat/ipset-kernel-modules
kvinwang Mar 20, 2026
d6478e3
add gcp service account and scope config
jerryrhyu Apr 2, 2026
4905ccc
Merge pull request #10 from jerryrhyu/gcp-sa-config
kvinwang Apr 3, 2026
2d56823
fix: add nftables kernel modules to 6.18 defconfig
kvinwang Apr 13, 2026
4e47e23
Merge pull request #9 from Phala-Network/add-k3s-kernel-modules
kvinwang Apr 13, 2026
4201d20
chore: update dstack submodule to latest master
kvinwang Apr 13, 2026
350d520
meta-nvidia: add 580.95.05 recipes for nvidia, fabricmanager, nscq
kvinwang Apr 21, 2026
85e7e17
meta-nvidia: glob topology files + pin nvidia stack via NVIDIA_VERSION
kvinwang Apr 21, 2026
be6feef
Merge pull request #56 from Dstack-TEE/feat/nvidia-580.95.05
kvinwang Apr 21, 2026
e3655d1
Bump version to 0.5.9
kvinwang Apr 21, 2026
d7fecfd
Merge pull request #50 from Dstack-TEE/fix/ovmf-use-stable-release
kvinwang Apr 21, 2026
0c29cf5
meta-nvidia: bump NVIDIA stack to 595.58.03
kvinwang Apr 23, 2026
3fb107b
Merge pull request #57 from Dstack-TEE/feat/nvidia-595.58.03
kvinwang Apr 23, 2026
60c0a4e
kernel: disable DirtyFrag trigger modules
kvinwang May 8, 2026
d920a02
Merge pull request #59 from Dstack-TEE/fix/disable-dirtyfrag-modules
kvinwang May 8, 2026
543da6e
rootfs: include nftables userspace
kvinwang May 8, 2026
3d09e35
Merge pull request #60 from Dstack-TEE/feat/add-nftables-userspace
kvinwang May 8, 2026
2f41755
Bump version to 0.5.10
kvinwang May 8, 2026
51ea485
Fix tar option injection in mk-image-mr helper
h4x3rotab May 8, 2026
faa8e53
Merge pull request #61 from Dstack-TEE/codex/propose-fix-for-tar-opti…
h4x3rotab May 8, 2026
e5db4ae
ci: restrict manual guest releases to protected default branch
h4x3rotab May 9, 2026
d2fb428
Merge pull request #62 from Dstack-TEE/codex/propose-fix-for-release-…
kvinwang May 9, 2026
68068fc
Bump version to 0.5.11
kvinwang May 12, 2026
4693c29
ovmf: pin to edk2-stable202502 and stamp ovmf_variant into metadata
kvinwang May 26, 2026
716729c
mkimage: drop tail -n1 from OVMF_VARIANT lookup
kvinwang May 26, 2026
ce04e92
Merge pull request #63 from Dstack-TEE/fix/ovmf-pin-stable202502
kvinwang May 26, 2026
f1a35b7
kernel: enable CONFIG_CRYPTO_ECDSA for H100 confidential compute
kvinwang May 27, 2026
110991a
Merge pull request #14 from Phala-Network/kvin/fix-h100-cc-crypto-ecdsa
kvinwang May 27, 2026
bab2c0e
dstack-cloud: add gcp_config.provisioning_model for SPOT instances
kvinwang May 27, 2026
5a1bfea
Merge pull request #15 from Phala-Network/kvin/dstack-cloud-spot-prov…
kvinwang May 27, 2026
275ea21
bump dstack submodule to b051018a
kvinwang May 27, 2026
74a86df
Merge pull request #16 from Phala-Network/kvin/bump-dstack-submodule
kvinwang May 27, 2026
7477e4a
bump DISTRO_VERSION to 0.6.1
kvinwang May 27, 2026
7deca28
build: merge dstack-cloud build system; switch to Yocto split layout …
kvinwang May 31, 2026
aeb3e0a
kernel: switch from linux-custom to official linux-yocto 6.18
kvinwang May 31, 2026
4d4a0d3
build: fix flavor dist names (dstack* not dstack-cloud*) and UKI pyth…
kvinwang May 31, 2026
4925deb
build: wrynose migration fixes — parse clean (28395 targets, 0 errors)
kvinwang May 31, 2026
ba6c005
distro: set INIT_MANAGER=systemd (wrynose udev fix)
kvinwang May 31, 2026
dd12be4
dstack-ovmf: drop S = ${WORKDIR}/git (wrynose sets S for git fetches)
kvinwang May 31, 2026
d8da197
dstack-ovmf: add Upstream-Status to local patches (wrynose fatal QA)
kvinwang May 31, 2026
19114d9
dstack-ovmf: build on wrynose (edk2-stable202511 + NASM 3.0 fix)
kvinwang May 31, 2026
42f8b3f
meta-virtualization: bump to runc patch-fuzz fix
kvinwang May 31, 2026
3ac32c5
kernel: build CRYPTO_SHA256 in (dm-verity rootfs hash in initramfs)
kvinwang May 31, 2026
d403f7d
dstack-ovmf: keep edk2-stable202502 (dstack-mr compat) + build on wry…
kvinwang Jun 1, 2026
8f6b753
review: build-system fixes from PR review
kvinwang Jun 1, 2026
fed4cc1
Potential fix for pull request finding
kvinwang Jun 4, 2026
9de071b
mkimage: dedupe sgdisk check from autofix; clearer message
kvinwang Jun 4, 2026
ebdc817
Merge pull request #64 from Dstack-TEE/merge/dstack-cloud-wrynose
kvinwang Jun 4, 2026
8ec3ab7
dstack: bump submodule to bde0d038 (cloud merge + attestation hardening)
kvinwang Jun 4, 2026
13a6890
Remove scripts/bin/dstack-cloud
kvinwang Jun 4, 2026
2e5d5b9
Update submodule dstack/
kvinwang Jun 4, 2026
dde9b6f
Fix NVIDIA recipes for UNPACKDIR and pkg-config
kvinwang Jun 6, 2026
4048a50
build.sh: add help action and usage(), document FLAVORS
kvinwang Jun 11, 2026
4b05747
kernel: enable gVNIC (gve) + virtio-net for GCP C3; bump dstack
kvinwang Jun 11, 2026
6a9fe80
Potential fix for pull request finding
kvinwang Jun 11, 2026
728fce4
Merge pull request #65 from Dstack-TEE/feat/build-sh-help
kvinwang Jun 11, 2026
446a4b0
Merge pull request #66 from Dstack-TEE/feat/gcp-c3-gve
kvinwang Jun 11, 2026
86be7d6
dstack.conf: bump DISTRO_VERSION to 0.6.0.a2
kvinwang Jun 11, 2026
65c675a
linux: add ACPI BadAML sandbox patch for confidential guests
kvinwang Jun 16, 2026
fc2519e
machine: add unified dstack confidential-guest machine (TDX + SEV)
kvinwang Jun 16, 2026
6842454
dstack-ovmf: additionally build AMD SEV firmware (ovmf-sev.fd)
kvinwang Jun 16, 2026
ef000f9
machine: re-enable DM_VERITY for dstack (disk-encryption.scc disables…
kvinwang Jun 16, 2026
a3a7292
machine: address review feedback for dstack machine
kvinwang Jun 17, 2026
b7a40eb
linux: ACPI BadAML sandbox - no-op on non-CC platforms, quieter logging
kvinwang Jun 17, 2026
4eb9fb0
machine: drop QB_KERNEL_CMDLINE_APPEND from dstack machine
kvinwang Jun 17, 2026
13bab3f
Merge pull request #67 from Dstack-TEE/feat/acpi-badaml-sandbox
kvinwang Jun 17, 2026
9b9ac2e
Merge pull request #68 from Dstack-TEE/feat/unified-dstack-machine
kvinwang Jun 17, 2026
5f97cfe
Merge pull request #69 from Dstack-TEE/feat/ovmf-sev-firmware
kvinwang Jun 17, 2026
5efb9d7
mkimage: add bios-sev field to metadata.json for the SEV firmware
kvinwang Jun 17, 2026
90cd128
Merge pull request #70 from Dstack-TEE/feat/metadata-bios-sev
kvinwang Jun 17, 2026
ba97573
mkimage: emit digest.sev.txt (AMD SEV-SNP os_image_hash)
kvinwang Jun 17, 2026
dcf4070
mkimage: compute digest.sev.txt via dstack-mr, build it if needed
kvinwang Jun 18, 2026
17e0b67
Merge pull request #71 from Dstack-TEE/feat/digest-sev-txt
kvinwang Jun 23, 2026
ed0062b
dstack.conf: release 0.6.0
kvinwang Jun 23, 2026
4883e45
nvidia: skip services when hardware is absent
kvinwang Jun 23, 2026
645b9bf
Merge pull request #72 from Dstack-TEE/feat/nvidia-conditional-services
kvinwang Jun 23, 2026
e8f7c7a
build: drop separate NVIDIA flavors
kvinwang Jun 23, 2026
70b1810
Merge pull request #73 from Dstack-TEE/feat/default-nvidia-driver
kvinwang Jun 23, 2026
ff358d2
meta-virtualization: fix docker-compose buildkit fetch
kvinwang Jun 23, 2026
7d47fad
repro-build: install Rust toolchain for dstack-mr
kvinwang Jun 23, 2026
07ccf7c
Merge pull request #74 from Dstack-TEE/fix/docker-compose-buildkit-fetch
kvinwang Jun 24, 2026
00f36be
chrony: enable NTS PACKAGECONFIG
kvinwang Jun 29, 2026
cc88a20
Merge pull request #76 from Dstack-TEE/fix/chrony-nts-packageconfig
kvinwang Jun 29, 2026
f8cc4ba
Suppress systemd in-progress job status
kvinwang Jul 2, 2026
6297269
Merge pull request #77 from Dstack-TEE/codex/disable-systemd-show-status
kvinwang Jul 2, 2026
168b354
gcp: build unified OS image hash artifacts
kvinwang Jul 8, 2026
4e9aa68
Merge pull request #81 from Dstack-TEE/codex/gcp-unified-os-image-has…
kvinwang Jul 8, 2026
5d5ad78
mkimage: stop publishing digest.sev.txt
kvinwang Jul 9, 2026
5865919
Merge pull request #82 from Dstack-TEE/codex/remove-digest-sev-txt
kvinwang Jul 9, 2026
e373ba9
Bump dstack to e5f138c7
kvinwang Jul 9, 2026
8ef9a55
meta-nvidia: gate GPU ready state on local TEE attestation (nvattest)
kvinwang Jul 9, 2026
e345138
Merge pull request #83 from Dstack-TEE/gpu-attestation-gate
kvinwang Jul 12, 2026
72d9f06
refactor: group core sources under dstack
kvinwang Jul 12, 2026
b98f00d
refactor: relocate yocto build under os
kvinwang Jul 12, 2026
6d38c7c
refactor: merge meta-dstack history
kvinwang Jul 12, 2026
a15542b
build: consolidate monorepo submodules
kvinwang Jul 12, 2026
8935638
build: update consumers for monorepo layout
kvinwang Jul 12, 2026
132039c
refactor: define extensible guest os backend interface
kvinwang Jul 12, 2026
367e163
docs: update paths for monorepo layout
kvinwang Jul 12, 2026
a91bd7e
build: fix verifier paths after relocation
kvinwang Jul 12, 2026
d26ab35
chore: preserve merged repository license scopes
kvinwang Jul 12, 2026
3db2890
chore: align checks with relocated files
kvinwang Jul 12, 2026
43bce0c
build: expose guest os release targets
kvinwang Jul 12, 2026
452947e
docs: add guest os build guide
kvinwang Jul 12, 2026
7d4cb9e
fix: harden monorepo integration
kvinwang Jul 13, 2026
d7e0553
fix: fetch nested Foundry dependencies
kvinwang Jul 13, 2026
1cf62f2
fix: align CI Rust toolchain
kvinwang Jul 13, 2026
cb51f44
fix: route legacy guest OS releases
kvinwang Jul 13, 2026
13e382a
fix: avoid hard-coded key false positive
kvinwang Jul 13, 2026
1b47d90
refactor: clarify docs and tool ownership
kvinwang Jul 13, 2026
cac342b
refactor: flatten tools and adopt Apache-2.0
kvinwang Jul 13, 2026
858419b
fix: use current GPL SPDX identifier
kvinwang Jul 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .agent/CODING_TASTE.md
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Argue from dstack's threat model, not from generic best practices.

## Code organization

- **Workspace-managed dependencies.** Declare versions in the root `Cargo.toml`, reference
- **Workspace-managed dependencies.** Declare versions in `dstack/Cargo.toml`, reference
with `foo.workspace = true` (#161, #360).
- **One source of truth.** Shared logic used by two components lives in one crate
(`dstack-mr::sev` used by both KMS and verifier). Duplicated blocks get extracted —
Expand Down Expand Up @@ -208,7 +208,7 @@ not just the symptom:
an `X-App-Version` response header. Follow this skeleton exactly when adding a service.
- **Module layout**: the core RPC surface lives in `main_service.rs` (or `rpc_service.rs`
in guest-agent). When a module grows subordinate concerns, promote it to `foo.rs` + a
`foo/` directory of submodules (`gateway/src/proxy.rs` + `proxy/{sni,tls_terminate,...}`).
`foo/` directory of submodules (`dstack/gateway/src/proxy.rs` + `proxy/{sni,tls_terminate,...}`).
Core files routinely run 800–1500+ lines before splitting — don't over-fragment into
many small files.
- **Config conventions**: each service embeds its default TOML (`include_str!`), extracts
Expand Down Expand Up @@ -298,7 +298,7 @@ not just the symptom:
when async is unavoidable.
- **Golden vectors over mocks**: real captured binary fixtures embedded with
`include_bytes!("../samples/...")`, asserted against inline hex literals or `insta`
snapshots (`cc-eventlog`, `dstack-attest/tests/`). Fixture provenance gets its own
snapshots (`dstack/cc-eventlog`, `dstack/dstack-attest/tests/`). Fixture provenance gets its own
README (`sev_snp_fixture.README.md`). When changing an encoding, add a regression test
proving old and new outputs match (#603).
- **Test names are snake_case behavior statements**: `enforces_ttl`,
Expand Down
4 changes: 2 additions & 2 deletions .claude/agents/sdk-sync-checker.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ You validate SDK implementations against protobuf schemas to ensure synchronizat
## Process

### 1. Discovery
- Find all `.proto` files in `guest-agent/rpc/proto/`
- Find all `.proto` files in `dstack/guest-agent/rpc/proto/`
- Identify SDK implementations in `sdk/` (python, go, rust, js, curl docs)
- Extract services, RPCs, and message types from proto files

Expand Down Expand Up @@ -66,7 +66,7 @@ Details:
- cURL docs: `snake_case` (JSON wire format)

## Locations
- Protos: `guest-agent/rpc/proto/*.proto`
- Protos: `dstack/guest-agent/rpc/proto/*.proto`
- Python: `sdk/python/src/dstack_sdk/dstack_client.py`
- Go: `sdk/go/dstack/client.go`
- Rust: `sdk/rust/types/src/dstack.rs`
Expand Down
2 changes: 1 addition & 1 deletion .cursorrules
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Don't capitalize the first letter for log messages and error messages.
Don't capitalize the first letter for log messages and error messages.
2 changes: 1 addition & 1 deletion .github/scripts/cargo-publish-idempotent.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ set -euo pipefail

crate=${1:?missing crate name}

if output=$(cargo publish -p "$crate" 2>&1); then
if output=$(cargo publish --manifest-path dstack/Cargo.toml -p "$crate" 2>&1); then
echo "$output"
exit 0
fi
Expand Down
73 changes: 39 additions & 34 deletions .github/workflows/docker-build-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,21 +26,21 @@ jobs:
- name: Build Gateway Docker image
uses: docker/build-push-action@v5
with:
context: gateway/dstack-app/builder
context: dstack/gateway/dstack-app/builder
push: false
load: true
tags: dstack-gateway-check:latest
provenance: false
build-contexts: |
build-shared=build/shared
build-shared=dstack/build/shared
build-args: |
DSTACK_REV=${{ env.DSTACK_REV }}
DSTACK_SRC_URL=${{ env.DSTACK_SRC_URL }}

- name: Verify pinned packages
run: |
build/shared/verify-pinned-packages.sh dstack-gateway-check:latest \
gateway/dstack-app/builder/shared/pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh dstack-gateway-check:latest \
dstack/gateway/dstack-app/builder/shared/pinned-packages.txt

- name: Build gateway-builder target
run: |
Expand All @@ -49,44 +49,49 @@ jobs:
--target gateway-builder \
--tag gateway-builder-check:latest \
--provenance=false \
--build-context build-shared=build/shared \
--build-context build-shared=dstack/build/shared \
--build-arg "DSTACK_REV=${DSTACK_REV}" \
--build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \
gateway/dstack-app/builder
dstack/gateway/dstack-app/builder

- name: Verify builder pinned packages
run: |
build/shared/verify-pinned-packages.sh gateway-builder-check:latest \
gateway/dstack-app/builder/shared/builder-pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh gateway-builder-check:latest \
dstack/gateway/dstack-app/builder/shared/builder-pinned-packages.txt

kms:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
submodules: recursive

- name: Checkout KMS contract dependencies
run: |
git submodule update --init --recursive --depth 1 -- \
dstack/kms/auth-eth/lib/forge-std \
dstack/kms/auth-eth/lib/openzeppelin-contracts-upgradeable \
dstack/kms/auth-eth/lib/openzeppelin-foundry-upgrades

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build KMS Docker image
uses: docker/build-push-action@v5
with:
context: kms/dstack-app/builder
context: dstack/kms/dstack-app/builder
push: false
load: true
tags: dstack-kms-check:latest
provenance: false
build-contexts: |
build-shared=build/shared
build-shared=dstack/build/shared
build-args: |
DSTACK_REV=${{ env.DSTACK_REV }}
DSTACK_SRC_URL=${{ env.DSTACK_SRC_URL }}

- name: Verify pinned packages (qemu stage)
run: |
build/shared/verify-pinned-packages.sh dstack-kms-check:latest \
kms/dstack-app/builder/shared/qemu-pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh dstack-kms-check:latest \
dstack/kms/dstack-app/builder/shared/qemu-pinned-packages.txt

- name: Build kms-builder target
run: |
Expand All @@ -95,22 +100,22 @@ jobs:
--target kms-builder \
--tag kms-builder-check:latest \
--provenance=false \
--build-context build-shared=build/shared \
--build-context build-shared=dstack/build/shared \
--build-arg "DSTACK_REV=${DSTACK_REV}" \
--build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \
kms/dstack-app/builder
dstack/kms/dstack-app/builder

- name: Verify builder pinned packages
run: |
build/shared/verify-pinned-packages.sh kms-builder-check:latest \
kms/dstack-app/builder/shared/builder-pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh kms-builder-check:latest \
dstack/kms/dstack-app/builder/shared/builder-pinned-packages.txt

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

- name: Build KMS contracts
run: |
cd kms/auth-eth
cd dstack/kms/auth-eth
forge build

verifier:
Expand All @@ -124,22 +129,22 @@ jobs:
- name: Build Verifier Docker image
uses: docker/build-push-action@v5
with:
context: verifier
file: verifier/builder/Dockerfile
context: dstack/verifier
file: dstack/verifier/builder/Dockerfile
push: false
load: true
tags: dstack-verifier-check:latest
provenance: false
build-contexts: |
build-shared=build/shared
build-shared=dstack/build/shared
build-args: |
DSTACK_REV=${{ env.DSTACK_REV }}
DSTACK_SRC_URL=${{ env.DSTACK_SRC_URL }}

- name: Verify pinned packages (runtime)
run: |
build/shared/verify-pinned-packages.sh dstack-verifier-check:latest \
verifier/builder/shared/pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh dstack-verifier-check:latest \
dstack/verifier/builder/shared/pinned-packages.txt

- name: Build verifier-builder target
run: |
Expand All @@ -148,16 +153,16 @@ jobs:
--target verifier-builder \
--tag verifier-builder-check:latest \
--provenance=false \
--file verifier/builder/Dockerfile \
--build-context build-shared=build/shared \
--file dstack/verifier/builder/Dockerfile \
--build-context build-shared=dstack/build/shared \
--build-arg "DSTACK_REV=${DSTACK_REV}" \
--build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \
verifier
dstack/verifier

- name: Verify builder pinned packages
run: |
build/shared/verify-pinned-packages.sh verifier-builder-check:latest \
verifier/builder/shared/builder-pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh verifier-builder-check:latest \
dstack/verifier/builder/shared/builder-pinned-packages.txt

- name: Build acpi-builder target
run: |
Expand All @@ -166,13 +171,13 @@ jobs:
--target acpi-builder \
--tag verifier-acpi-check:latest \
--provenance=false \
--file verifier/builder/Dockerfile \
--build-context build-shared=build/shared \
--file dstack/verifier/builder/Dockerfile \
--build-context build-shared=dstack/build/shared \
--build-arg "DSTACK_REV=${DSTACK_REV}" \
--build-arg "DSTACK_SRC_URL=${DSTACK_SRC_URL}" \
verifier
dstack/verifier

- name: Verify qemu pinned packages
run: |
build/shared/verify-pinned-packages.sh verifier-acpi-check:latest \
verifier/builder/shared/qemu-pinned-packages.txt
dstack/build/shared/verify-pinned-packages.sh verifier-acpi-check:latest \
dstack/verifier/builder/shared/qemu-pinned-packages.txt
16 changes: 11 additions & 5 deletions .github/workflows/foundry-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ name: KMS Auth-ETH Foundry Tests
on:
push:
paths:
- 'kms/auth-eth/**'
- 'dstack/kms/auth-eth/**'
- '.github/workflows/foundry-test.yml'
pull_request:
paths:
- 'kms/auth-eth/**'
- 'dstack/kms/auth-eth/**'
- '.github/workflows/foundry-test.yml'
workflow_dispatch:

Expand All @@ -27,11 +27,17 @@ jobs:
runs-on: ubuntu-latest
defaults:
run:
working-directory: kms/auth-eth
working-directory: dstack/kms/auth-eth
steps:
- uses: actions/checkout@v5
with:
submodules: recursive

- name: Checkout contract dependencies
working-directory: .
run: |
git submodule update --init --recursive --depth 1 -- \
dstack/kms/auth-eth/lib/forge-std \
dstack/kms/auth-eth/lib/openzeppelin-contracts-upgradeable \
dstack/kms/auth-eth/lib/openzeppelin-foundry-upgrades

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/gateway-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,13 @@ jobs:
env:
SOURCE_DATE_EPOCH: ${{ env.TIMESTAMP }}
with:
context: gateway/dstack-app/builder
context: dstack/gateway/dstack-app/builder
push: true
tags: ${{ vars.DOCKERHUB_ORG }}/dstack-gateway:${{ env.VERSION }}
platforms: linux/amd64
provenance: false
build-contexts: |
build-shared=build/shared
build-shared=dstack/build/shared
build-args: |
DSTACK_REV=${{ env.GIT_REV }}
SOURCE_DATE_EPOCH=${{ env.TIMESTAMP }}
Expand Down
95 changes: 95 additions & 0 deletions .github/workflows/guest-os.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# SPDX-FileCopyrightText: © 2026 Phala Network <dstack@phala.network>
#
# SPDX-License-Identifier: Apache-2.0

name: Build Guest Images

on:
workflow_dispatch:
inputs:
tag:
description: 'Tag to create and release (e.g. guest-os-v0.6.0). Leave empty to build only.'
required: false
default: ''
type: string

jobs:
build:
runs-on: yocto-builder
timeout-minutes: 480
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v5

- name: Build production guest OS
run: make os-image

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: guest-images
path: |
os/yocto/repro-build/dist/*.tar.gz
os/yocto/repro-build/dist/reproduce.sh
retention-days: 30

release:
if: inputs.tag != '' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch)
needs: build
runs-on: yocto-builder
timeout-minutes: 60
environment: release
permissions:
contents: write
steps:
- name: Checkout default branch
uses: actions/checkout@v5
with:
ref: ${{ github.event.repository.default_branch }}

- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: guest-images
path: os/yocto/repro-build/dist

- name: Validate release tag
env:
TAG: ${{ inputs.tag }}
run: |
echo "$TAG" | grep -Eq '^guest-os-v[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$'
VERSION="${TAG#guest-os-v}"
python3 - "$VERSION" <<'PY'
import re
import sys

match = re.match(r"^(\d+)\.(\d+)\.(\d+)", sys.argv[1])
if not match or tuple(map(int, match.groups())) < (0, 6, 0):
raise SystemExit("guest OS versions below 0.6.0 belong in Dstack-TEE/meta-dstack")
PY
BARE="os/yocto/repro-build/dist/dstack-${VERSION}.tar.gz"
UKI="os/yocto/repro-build/dist/dstack-${VERSION}-uki.tar.gz"
test -f "$BARE"
test -f "$UKI"

read -r IMAGE_VERSION IMAGE_REVISION < <(
tar -xOf "$BARE" "dstack-${VERSION}/metadata.json" |
python3 -c 'import json, sys; data=json.load(sys.stdin); print(data["version"], data["git_revision"])'
)
test "$IMAGE_VERSION" = "$VERSION"
test "$IMAGE_REVISION" = "$(git rev-parse HEAD)"
tar -tzf "$UKI" | grep -Fx "dstack-${VERSION}/disk.raw"

- name: Create tag and release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ inputs.tag }}
run: |
git tag "$TAG"
git push origin "$TAG"
gh release create "$TAG" \
os/yocto/repro-build/dist/*.tar.gz \
os/yocto/repro-build/dist/reproduce.sh \
--title "$TAG" --generate-notes
Loading
Loading