Proposal: Add Volcengine self-hosting support
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 1.6k
- Forks
- 438
- PR merge metrics
- No merged PRs in 30d
Description
Proposal: Add Volcengine (火山引擎) self-hosting support
Summary
Hi E2B team,
Thank you for building and open-sourcing E2B. The project is extremely valuable for AI code execution and sandboxed environments. We have seen strong interest from Volcengine (ByteDance Cloud / 火山引擎) users in China and Asia-Pacific who would like to run E2B in their own cloud environment.
We are currently evaluating a self-hosted E2B deployment on Volcengine, and we would like to contribute Volcengine self-hosting support back upstream if this aligns with your roadmap.
Similar to the Alibaba Cloud proposal (#3035), our approach is to keep the upstream architecture and core runtime behavior unchanged, and contribute the Volcengine-specific work as an isolated provider/deployment layer.
We would not change:
- The public E2B API contract
- Firecracker/orchestrator/template build core logic
- Scheduler, NBD, networking, or other high-blast-radius runtime internals
Background: Why Volcengine
Volcengine (火山引擎) is ByteDance's enterprise cloud platform, widely adopted in China and Asia-Pacific, particularly strong in AI/ML workloads. It provides:
- ECS (Elastic Compute Service) — bare-metal and virtualization instances with KVM/nested virtualization support (required for Firecracker)
- TOS (Torch Object Storage) — S3-compatible object storage with multi-region support
- CR (Container Registry) — Docker image registry with enterprise features
- VPC / CLB / ALB — networking and load balancing
- Redis & RDS (PostgreSQL) — managed database services
- IAM — identity and access management with role-based credentials
Key advantage: Volcengine TOS is fully S3-compatible (endpoint: tos-s3-{region}.volces.com), which means the existing AWS S3 storage provider (storage_aws.go) can potentially be reused with custom endpoint configuration, significantly reducing implementation effort.
Proposed scope
If this direction makes sense, we can contribute the work incrementally:
1. Volcengine deployment support (Terraform)
- Terraform provider
volcengine/volcenginebased infrastructure templates - ECS instance pools for control/client/orchestrator nodes (with KVM support)
- CLB/ALB exposure for API and client-proxy
- VPC, security group, and subnet configuration
- IAM Role configuration for service authentication
2. Volcengine TOS storage provider
- Object storage implementation for template/snapshot/rootfs artifacts
- Leverage S3-compatible API — potentially reuse
storage_aws.gowith custom endpoint configuration- External endpoint:
tos-s3-{region}.volces.com - Internal endpoint:
tos-s3-{region}.ivolces.com
- External endpoint:
- Range reads and large-object multipart upload support
- IAM Role / STS token based credentials
- Alternative: dedicated TOS SDK (Go SDK available) implementation if S3 compatibility is insufficient
3. Volcengine CR (Container Registry) provider
- Store template build images in Volcengine CR
- Pull/push support using IAM Role / CR temporary token flow
- Repository creation or documented prerequisite
4. Nomad cluster on Volcengine
- Packer-based disk image for Volcengine ECS
- Nomad server/client cluster provisioning
- Consul service discovery integration
- Auto-scaling group configuration
5. Self-hosting documentation
- Volcengine prerequisites (account, quotas, KVM-enabled instance types)
- Required IAM permissions
- Network architecture diagram
- Step-by-step deployment guide
- Smoke test and validation steps
Proposed contribution approach
We do not want to submit a large, hard-to-review PR.
If the maintainers are open to this direction, we would follow a phased approach:
- Design/docs PR — Architecture overview and Volcengine-specific design decisions
- TOS storage provider — With unit tests (may extend existing AWS provider with configurable endpoint, or implement standalone)
- CR artifacts registry provider — With tests
- Terraform deployment skeleton —
iac/provider-volcengine/directory structure - Nomad cluster disk image — Packer template for Volcengine ECS
- Self-hosting documentation — Complete deployment guide and smoke test
Proposed directory structure
iac/
provider-volcengine/
main.tf
variables.tf
Makefile
init/
modules/
nomad/
nomad-cluster/
nomad-cluster-disk-image/
packages/shared/pkg/storage/
storage_volcengine.go # TOS storage provider (or extend AWS with endpoint config)
storage_volcengine_test.go
Validation plan
We plan to validate the provider with:
- API health check
- Sandbox create / connect / delete
- Pause / resume
- Template build
- Template build from image
- Container registry pull path (Volcengine CR)
- Basic concurrent sandbox creation
- Storage read/write/range-read correctness
- End-to-end latency benchmarks
Technical notes
- Firecracker compatibility: Volcengine ECS supports bare-metal instances and nested virtualization (KVM), which is required for Firecracker microVMs.
- S3 compatibility: Volcengine TOS supports the S3-compatible API, which may allow reusing the existing
storage_aws.gowith a custom endpoint. Available regions includecn-beijing,cn-shanghai,cn-guangzhou,ap-southeast-1, etc. (full list). We will evaluate whether this is sufficient or if a dedicated TOS SDK implementation is needed. - Terraform provider: The official
volcengine/volcengineTerraform provider is available on the Terraform Registry with comprehensive resource coverage. - Go SDK: Official TOS Go SDK is available if native implementation is preferred over S3 compatibility layer.
Question
Would Volcengine (火山引擎) self-hosting support be something you would be open to accepting upstream, if we keep it isolated to provider, storage, registry, deployment, and documentation layers?
If yes, we can prepare a small initial design/docs PR for review before starting the implementation.
References:
- Volcengine official site: https://www.volcengine.com/
- Volcengine Terraform provider: https://registry.terraform.io/providers/volcengine/volcengine/latest
- Volcengine TOS S3 compatibility: https://www.volcengine.com/docs/6349/75069
- Volcengine TOS regions & endpoints: https://www.volcengine.com/docs/6349/107356
- Volcengine TOS Go SDK: https://www.volcengine.com/docs/6349/93450
- Related: #3035 (Alibaba Cloud proposal)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the proposed provider layout under iac/provider-volcengine/, the existing packages/shared/pkg/storage/storage_aws.go, and related proposal #3035. Done would be a maintainer-approved design/docs PR that defines the isolated Volcengine deployment, storage, registry, and documentation scope before implementation begins.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, terraform
- Domain
- cloud, devops, infrastructure
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100