[PR #417] feat(cli): add aenv compose up #418

Open
opened 2026-10-29 14:23:11 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/kvcache-ai/AgentENV/pull/417
Author: @Primary33
Created: 10/22/2026
Status: 🔄 Open

Base: main ← Head: feat/compose-cli


📝 Commits (4)

  • afe5e13 feat(compose): add the Compose planner
  • e89868a feat(compose): add the guest Compose runtime image
  • 0fe2d69 feat(compose): run Compose projects in isolated sandboxes
  • 7957f81 feat(cli): add aenv compose up

📊 Changes

33 files changed (+2945 additions, -26 deletions)

View changed files

📝 .github/workflows/release.yml (+10 -0)
➕ compose-image/Dockerfile (+117 -0)
➕ compose-image/test_e2e.py (+220 -0)
➕ crates/aenv/src/commands/compose.rs (+649 -0)
📝 crates/aenv/src/commands/mod.rs (+1 -0)
📝 crates/aenv/src/commands/start.rs (+1 -1)
📝 crates/aenv/src/main.rs (+3 -0)
📝 deploy/docker/Dockerfile.agentenv (+7 -0)
📝 docs/src/concepts/sandboxes/starting.md (+144 -2)
📝 docs/src/configuration/reference.md (+9 -0)
📝 docs/src/getting-started/quickstart.md (+30 -0)
📝 scripts/install.sh (+3 -0)
📝 services/Makefile (+5 -0)
➕ services/compose/cmd/main.go (+30 -0)
➕ services/compose/plan.go (+365 -0)
➕ services/compose/plan_test.go (+172 -0)
➕ services/gateway/internal/compose_test.go (+36 -0)
📝 services/gateway/internal/metrics.go (+1 -1)
📝 services/gateway/internal/schedule_hint.go (+1 -1)
📝 services/gateway/internal/server.go (+13 -2)

...and 13 more files

📄 Description

What

Add aenv compose up and its user documentation.

Why

Create a ready multi-service sandbox from a Compose file and print its sandbox ID.

Depends on #349, which depends on #415 and #416. Review the last commit only. This draft is stacked on #349; rebase onto main after it merges. #348 will build on this CLI entry point.

Scope and non-goals

CLI request construction and tests, shared disk-size parsing, Compose setup/usage documentation, quickstart and CLI E2E coverage.

Design and behavior changes

Read a file or stdin, forward explicit interpolation variables/profiles/resources, wait for readiness and print only the sandbox ID. Use the existing authentication client with a 660-second request timeout. Expose Compose on all CLI platforms while keeping guest runtime subcommands Linux-only.

Compatibility and operations

Requires /sandboxes-compose from #349. Startup failures return the API error and a nonzero exit status. A request timeout can leave creation running; the documentation explains checking the sandbox list before retrying.

Validation

  • cargo fmt -p aenv -- --check
  • cargo test -p aenv --bin aenv — 123 passed on the designated Ubuntu test host.
  • CLI build.
  • python3 compose-image/test_e2e.py ComposeE2E.test_cli_compose_up -v — passed against the server from #349 and guest image from #416.

Risks and reviewer notes

The public command is introduced here; guest runtime and lifecycle behavior are supplied by the dependencies.

Checklist

  • One CLI/documentation change with focused tests.
  • Logs and examples contain no credentials or private settings.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/kvcache-ai/AgentENV/pull/417 **Author:** [@Primary33](https://github.com/Primary33) **Created:** 10/22/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/compose-cli` --- ### 📝 Commits (4) - [`afe5e13`](https://github.com/kvcache-ai/AgentENV/commit/afe5e138f2f9073e9388e4048bcdaaad0cbc988f) feat(compose): add the Compose planner - [`e89868a`](https://github.com/kvcache-ai/AgentENV/commit/e89868ad362984afecf89f73ec1d3ae8c4789df6) feat(compose): add the guest Compose runtime image - [`0fe2d69`](https://github.com/kvcache-ai/AgentENV/commit/0fe2d692dac87f142a5fd1a4a7de7ae6dd8ef4e1) feat(compose): run Compose projects in isolated sandboxes - [`7957f81`](https://github.com/kvcache-ai/AgentENV/commit/7957f81967a90e0f0bb708672eeb6e82405ddaa4) feat(cli): add aenv compose up ### 📊 Changes **33 files changed** (+2945 additions, -26 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/release.yml` (+10 -0) ➕ `compose-image/Dockerfile` (+117 -0) ➕ `compose-image/test_e2e.py` (+220 -0) ➕ `crates/aenv/src/commands/compose.rs` (+649 -0) 📝 `crates/aenv/src/commands/mod.rs` (+1 -0) 📝 `crates/aenv/src/commands/start.rs` (+1 -1) 📝 `crates/aenv/src/main.rs` (+3 -0) 📝 `deploy/docker/Dockerfile.agentenv` (+7 -0) 📝 `docs/src/concepts/sandboxes/starting.md` (+144 -2) 📝 `docs/src/configuration/reference.md` (+9 -0) 📝 `docs/src/getting-started/quickstart.md` (+30 -0) 📝 `scripts/install.sh` (+3 -0) 📝 `services/Makefile` (+5 -0) ➕ `services/compose/cmd/main.go` (+30 -0) ➕ `services/compose/plan.go` (+365 -0) ➕ `services/compose/plan_test.go` (+172 -0) ➕ `services/gateway/internal/compose_test.go` (+36 -0) 📝 `services/gateway/internal/metrics.go` (+1 -1) 📝 `services/gateway/internal/schedule_hint.go` (+1 -1) 📝 `services/gateway/internal/server.go` (+13 -2) _...and 13 more files_ </details> ### 📄 Description ## What Add `aenv compose up` and its user documentation. ## Why Create a ready multi-service sandbox from a Compose file and print its sandbox ID. ## Related issue Depends on #349, which depends on #415 and #416. [Review the last commit only](https://github.com/Primary33/AgentENV/compare/0fe2d69...7957f81). This draft is stacked on #349; rebase onto main after it merges. #348 will build on this CLI entry point. ## Scope and non-goals CLI request construction and tests, shared disk-size parsing, Compose setup/usage documentation, quickstart and CLI E2E coverage. ## Design and behavior changes Read a file or stdin, forward explicit interpolation variables/profiles/resources, wait for readiness and print only the sandbox ID. Use the existing authentication client with a 660-second request timeout. Expose Compose on all CLI platforms while keeping guest runtime subcommands Linux-only. ## Compatibility and operations Requires `/sandboxes-compose` from #349. Startup failures return the API error and a nonzero exit status. A request timeout can leave creation running; the documentation explains checking the sandbox list before retrying. ## Validation - [x] `cargo fmt -p aenv -- --check` - [x] `cargo test -p aenv --bin aenv` — 123 passed on the designated Ubuntu test host. - [x] CLI build. - [x] `python3 compose-image/test_e2e.py ComposeE2E.test_cli_compose_up -v` — passed against the server from #349 and guest image from #416. ## Risks and reviewer notes The public command is introduced here; guest runtime and lifecycle behavior are supplied by the dependencies. ## Checklist - [x] One CLI/documentation change with focused tests. - [x] Logs and examples contain no credentials or private settings. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/AgentENV#418
No description provided.