mirror of
https://github.com/kvcache-ai/AgentENV.git
synced 2026-11-05 01:17:36 +00:00
[PR #38] [MERGED] feat: add standalone aenv-snapshot-image export tool #133
Labels
No labels
bug
documentation
enhancement
enhancement
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
kvcache-ai/AgentENV#133
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/kvcache-ai/AgentENV/pull/38
Author: @huajq
Created: 7/28/2026
Status: ✅ Merged
Merged: 7/29/2026
Merged by: @yingdi-shan
Base:
main← Head:feat/snapshot-image-export📝 Commits (1)
a5f6f2bfeat: add standalone aenv-snapshot-image export tool📊 Changes
20 files changed (+1409 additions, -29 deletions)
View changed files
📝
CLAUDE.md(+2 -0)📝
Makefile(+4 -0)📝
docs/src/concepts/snapshots.md(+27 -0)➕
src/bin/aenv-snapshot-image.rs(+110 -0)📝
src/image/oci_image.rs(+7 -4)➕
src/snapshot/image_export/mod.rs(+8 -0)➕
src/snapshot/image_export/regctl.rs(+370 -0)➕
src/snapshot/image_export/service.rs(+649 -0)➕
src/snapshot/image_export/target.rs(+193 -0)📝
src/snapshot/mod.rs(+1 -0)📝
src/snapshot/repository/backends/common/acr/manifest.rs(+11 -0)📝
src/snapshot/repository/backends/common/acr/mod.rs(+5 -0)📝
src/snapshot/repository/backends/common/acr/publisher.rs(+3 -14)📝
src/snapshot/repository/backends/common/acr/source_image.rs(+4 -1)📝
src/snapshot/repository/backends/mod.rs(+2 -2)📝
src/snapshot/repository/backends/oss/config.rs(+1 -1)📝
src/snapshot/repository/backends/oss/layout.rs(+2 -2)📝
src/snapshot/repository/backends/oss/mod.rs(+4 -3)📝
src/snapshot/repository/backends/posixfs/layout.rs(+2 -2)📝
src/snapshot/repository/backends/posixfs/mod.rs(+4 -0)📄 Description
Motivation
Decouple snapshot storage from image publication: a snapshot is first
committed to the POSIX/OSS repository, and can then be exported on demand
as an OverlayBD-native OCI image in a registry. Stacked on #19.
Changes
agentenv-snapshot-imagebinary(
make build-snapshot-image; not shipped in the server binary, Dockerimage, or install packages).
and publishes only the rootfs (never attached drives, memory, or VM
state) as an OverlayBD-native OCI image with the existing minimal OCI
config.
regctl:blob head/put/copy, across-registry
blob get | blob putchild-process pipe, andmanifest head/put; authentication stays with the Docker config.--target-repository(default taglatest),otherwise inferred from the canonical rootfs publication or the unique
external source repository (default tag
snapshot-<snapshot-id>).as reused, a different one is refused; every layer is probed with
blob headfirst so existing blobs are neither materialized nortransferred; POSIX layers are validated in place, OSS layers download one
at a time with size verification. The preflight conflict check is not
atomic (documented).
of snapshot deletion, with a warning when the selected reference is
snapshot-managed.
SourceRegistryRepository::parseacceptssingle-segment repositories and normalizes the default
:443port;docs (
snapshots.md) and CLAUDE.md updated.Testing
regctl: mixed-stack end-to-end publish(same-registry copy, managed put, cross-registry pipe), manifest
reuse/conflict, legacy publication resolved via registry truth, CLI parsing.
cargo test -p agentenv --lib645 passed / 0 failed,--bin agentenv-snapshot-image1/0,cargo clippy -p agentenv --all-targets -- -D warningsclean.🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.