awesome-providers
opensandbox/abx-provider.toml
无英文版
opensandbox/abx-provider.toml
manifest_version = 1
[provider]
id = "opensandbox"
name = "OpenSandbox"
name_zh = "OpenSandbox 开源沙箱"
version = "0.1.0"
description = "Runs sandboxes on an OpenSandbox server (Docker or Kubernetes runtime) through its lifecycle API and per-sandbox execd daemon."
license = "Apache-2.0"
homepage = "https://github.com/alibaba-agent-sandbox/awesome-providers/tree/main/opensandbox"
[compat]
protocol = "epp/1"
requires = { sdk = ">=0.3", cli = ">=0.3" }
[runtime]
kind = "exec"
command = ["node", "./provider.mjs"] # Node >= 20, no npm dependencies
startup_timeout_ms = 10000
call_timeout_ms = 180000 # create may wait for an image pull
platforms = ["linux", "darwin", "win32"]
[features]
supported = [
"sandbox.lifecycle", "sandbox.timeout", "sandbox.pause",
"exec.run", "exec.stream", "process.manage",
"files.rw", "ports.url", "sessions",
]
[security]
network = ["*"] # the OpenSandbox server and sandbox endpoints you configure
filesystem = ["data_dir"]
env_passthrough = []
spawns_processes = false
[core]
inherit = [] # does not receive sandbox_api_key, sandbox_base_url, or sandbox_domain
# A local development server may run without an API key, so no credential is required.
[config.fields.base_url]
type = "url"
description = "OpenSandbox server root, e.g. https://opensandbox.example.com (a trailing /v1 is accepted). Default http://127.0.0.1:8080"
description_zh = "OpenSandbox 服务地址,例如 https://opensandbox.example.com(可带 /v1 后缀)。默认 http://127.0.0.1:8080"
[config.fields.api_key]
type = "string"
secret = true
description = "API key, sent as the OPEN-SANDBOX-API-KEY header"
description_zh = "API 密钥,以 OPEN-SANDBOX-API-KEY 请求头发送"
env = ["OPEN_SANDBOX_API_KEY"]
[config.fields.domain]
type = "string"
description = "host[:port] of the server, an alternative to base_url (used with 'protocol')"
description_zh = "服务的 host[:port],base_url 的替代写法(与 protocol 配合使用)"
env = ["OPEN_SANDBOX_DOMAIN"]
[config.fields.protocol]
type = "enum"
choices = ["http", "https"]
default = "http"
description = "Scheme used with 'domain'"
description_zh = "与 domain 配合使用的协议"
env = ["OPEN_SANDBOX_PROTOCOL"]
[config.fields.use_server_proxy]
type = "bool"
default = false
description = "Reach sandboxes through the lifecycle server's proxy (needed when sandbox host ports are not routable from here)"
description_zh = "通过生命周期服务的代理访问沙箱(沙箱主机端口无法直连时使用)"
env = ["OPEN_SANDBOX_USE_SERVER_PROXY"]
[config.fields.default_image]
type = "string"
default = "python:3.12-slim"
description = "Image used when the template is the generic default 'base'"
description_zh = "模板为通用默认值 'base' 时使用的镜像"
[config.fields.image_aliases]
type = "csv"
default = "code=opensandbox/code-interpreter:v1.1.0"
description = "Short template names, name=image pairs separated by commas"
description_zh = "模板短名称,以逗号分隔的 name=image 键值对"
[config.fields.entrypoint]
type = "string"
default = "tail -f /dev/null"
description = "Command used when the caller does not set an entrypoint. The default keeps a stock image alive so execd can serve exec and files. Set \"python3 commands.py\" for a generated image that serves port 9000. A code-interpreter image keeps its runtime script unless this is set to something else."
description_zh = "调用方未设置入口时使用的命令。默认值让通用镜像保持运行,以便 execd 提供执行和文件服务。为在 9000 端口提供服务的生成镜像设置为 \"python3 commands.py\"。除非改成其他命令,code-interpreter 镜像仍使用自己的运行时脚本。"
[config.fields.ready_timeout]
type = "int"
default = 60
description = "Seconds to wait for a new sandbox to run and execd to answer"
description_zh = "等待新沙箱运行且 execd 响应的秒数"
[config.fields.registry_username]
type = "string"
description = "Username for a private image registry (image.auth)"
description_zh = "私有镜像仓库用户名(image.auth)"
[config.fields.registry_password]
type = "string"
secret = true
description = "Password for a private image registry"
description_zh = "私有镜像仓库密码"
[config.fields.network_policy]
type = "string"
description = "JSON NetworkPolicy applied to every new sandbox, e.g. {\"defaultAction\":\"deny\",\"egress\":[{\"action\":\"allow\",\"target\":\"pypi.org\"}]}"
description_zh = "应用于每个新沙箱的 JSON 网络策略,如 {\"defaultAction\":\"deny\",\"egress\":[{\"action\":\"allow\",\"target\":\"pypi.org\"}]}"
[config.fields.platform]
type = "string"
description = "Target platform for new sandboxes: linux/amd64, linux/arm64, windows/amd64 or windows/arm64"
description_zh = "新沙箱的目标平台:linux/amd64、linux/arm64、windows/amd64 或 windows/arm64"
[config.fields.secure_access]
type = "bool"
default = false
description = "Request secure access (Kubernetes gateway deployments only)"
description_zh = "请求安全访问(仅 Kubernetes 网关部署)"