Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
0b2fd18
feat: keep the enclave's state on ZFS and retire s3fs
aruokhai Oct 8, 2026
9330475
feat: name a tenant's dataset after its passkey, not a minted id
aruokhai Oct 8, 2026
ffaf913
feat: give every request a fresh instance, and keep only a tenant's lock
aruokhai Oct 8, 2026
b343ec1
chore: remove what can no longer run since ZFS
aruokhai Oct 9, 2026
6a6d8b7
feat: cut the runtime's settings to what differs between deployments
aruokhai Oct 9, 2026
9691344
test(zfs): reproduce acknowledged writes lost to a same-nonce disk
aruokhai Oct 10, 2026
1ad1c53
fix(zfs): admit a pool by the txg the kernel loaded, and stop rewinding
aruokhai Oct 10, 2026
d1c4b52
feat(zfs): fence anchors behind a per-boot generation claim
aruokhai Oct 10, 2026
043ab9e
refactor(zfs): make the pool's identity fields, not constants
aruokhai Oct 10, 2026
e939f93
feat(zfs): v2 anchor format, binding each anchor to its pool
aruokhai Oct 10, 2026
3f38a68
refactor(zfs): introduce the storage manager seam
aruokhai Oct 10, 2026
b63e90b
feat(zfs): a pool per tenant, on its own encrypted disk region
aruokhai Oct 10, 2026
48f80f5
docs(zfs): correct comments the per-tenant pools made stale
aruokhai Oct 10, 2026
8705a19
feat(zfs): keep each tenant's tasks and streams on its own pool
aruokhai Oct 10, 2026
1005e14
fix: take Object Lock retention and boot verification from trusted PT…
aruokhai Oct 10, 2026
b3cb68e
feat: hold a guest's wakes until its writes are anchored, and anchor …
aruokhai Oct 10, 2026
224d00b
feat(zfs): version the storage layout v2 and refuse a v1 store
aruokhai Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ jobs:
# There is deliberately no SQLite job. The runtime measures its guest into
# PCR16 before it will serve, and that reads the NSM — which a hosted runner
# does not have, so the binary refuses to start there at all. The workload
# lives on in scripts/ci-sqlite.sh for a machine with an enclave.
# runs in the emulator instead: docs/STORAGE.md, "Running SQLite".
e2e:
name: the whole stack, in an emulated enclave
runs-on: ubuntu-latest
Expand Down
109 changes: 8 additions & 101 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 4 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ resolver = "2"
members = [
"crates/nitro-attestation",
"crates/nitro-nsm",
"crates/s3fs-core",
"runtime",
]

Expand All @@ -12,7 +11,7 @@ version = "0.1.0"
edition = "2021"
rust-version = "1.88"
license = "Apache-2.0"
repository = "https://github.com/joshua/s3-wasi-fs"
repository = "https://github.com/BitspendPayment/enclave-runtime"

[workspace.dependencies]
tokio = { version = "1", default-features = false }
Expand All @@ -23,20 +22,15 @@ anyhow = "1"
async-trait = "0.1"
futures = "0.3"
parking_lot = "0.12"
fastrand = "2"
siphasher = "1"
hashlink = "0.9"
bitvec = "1"
percent-encoding = "2"

# Scrubs key material on drop. Enclave memory is unreadable from outside, but
# key bytes should not outlive their use inside it either.
zeroize = { version = "1", features = ["zeroize_derive"] }
# Merkle-tree block checksums and the root-record hash chain. BLAKE3 is the
# hot path (every block read verifies one), so its SIMD backends matter.
# The anchor chain's hashes and the boot's state root.
blake3 = "1"
# AEAD (AES-256-GCM), Ed25519 root signatures, HKDF key derivation. aws-lc-rs
# is the AWS-native, FIPS-capable stack — the same primitives KMS speaks.
# AES-256-GCM, Ed25519 anchor signatures, HKDF key derivation. aws-lc-rs is
# the AWS-native, FIPS-capable stack — the same primitives KMS speaks.
aws-lc-rs = { version = "1", default-features = false, features = ["aws-lc-sys"] }

aws-config = { version = "1", default-features = false }
Expand Down
Loading
Loading