@ computesdk/ lelantos (帮助)
计算SDK的Lelantos提供商——安全执行代码,欧盟本土 烟花 有完整文件系统和终端支持的微VM沙盒.
莱兰托斯 是一个E2B-API相容的沙盒平台,运行在欧盟的赫茨纳裸金属上. 因为电线协议是E2B兼容的,所以这个提供商包件相同 e2b npm SDK——但用Lelantos控制飞机通过 domain 编号 : apiUrl 并引导这些选项通过 每个 SDK呼叫(创建,连接,列表,杀死,快照,模板),所以生命周期操作停留在Lelantos上而不是倒回 api.e2b.app。 。 。 .
安装
npm install @computesdk/lelantos
设置
- 获取您的 Lelantos API 密钥 莱兰托斯.ai
- 设置环境变量 :
export LELANTOS_API_KEY=lel_your_api_key_here
利兰托斯问题 lel_… 键。 提供者接受 lel_… 财务报告和审定财务报表 e2b_… lelantos 键的形式:本地键 lel_<hex> 键被透明地呈现为基本的 e2b SDK 作为其 e2b_<hex> 化名(e2b SDK验证自v2.27起的密钥前缀客户端-侧),而Lelantos控制平面将两种形式都解决为同一种密钥.
快速启动
配置 compute 与 Lelantos 供应商并创建一个沙盒:
import { compute } from 'computesdk';
import { lelantos } from '@computesdk/lelantos';
compute.setConfig({
provider: lelantos({ apiKey: process.env.LELANTOS_API_KEY }),
});
const sandbox = await compute.instances.create();
const result = await sandbox.runCommand(`python3 - <<'PY'
import platform
print("Hello from a Lelantos microVM")
print(platform.platform())
PY`);
console.log(result.stdout);
await sandbox.destroy();
或者,在只需要一个供应商时直接给供应商工厂打电话:
import { lelantos } from '@computesdk/lelantos';
const sdk = lelantos({ apiKey: process.env.LELANTOS_API_KEY });
const sandbox = await sdk.sandbox.create();
配置
环境变量
export LELANTOS_API_KEY=lel_your_api_key_here
# Optional — override the control-plane + sandbox domain (defaults to lelantos.ai)
export LELANTOS_DOMAIN=lelantos.ai
# Optional — explicit control-plane URL (overrides the domain-derived URL)
export LELANTOS_API_URL=https://api.lelantos.ai
提供者以下列倒置顺序解决证书问题,因此它是E2B形配置的倒置:
- API 密钥 :
config.apiKey→LELANTOS_API_KEY→E2B_API_KEY - 域名 :
config.domain→LELANTOS_DOMAIN→E2B_DOMAIN - API URL :
config.apiUrl→LELANTOS_API_URL→E2B_API_URL
配置选项
interface LelantosConfig {
/** Lelantos API key (lel_… or e2b_… form). Falls back to LELANTOS_API_KEY then E2B_API_KEY. */
apiKey?: string;
/** Control-plane + sandbox domain, e.g. 'lelantos.ai'. Falls back to LELANTOS_DOMAIN then E2B_DOMAIN. */
domain?: string;
/** Explicit control-plane URL override. Falls back to LELANTOS_API_URL then E2B_API_URL. */
apiUrl?: string;
/** Execution timeout in milliseconds */
timeout?: number;
}
把供应商指向一个自我托管的或搭载的Lelantos槽只是设定问题 domain (可选) apiUrl:
const provider = lelantos({
apiKey: process.env.LELANTOS_API_KEY,
domain: 'staging.lelantos.ai',
});
特征
- ✅ 欧盟本土微型VMs ——欧盟海茨纳裸金属上烟花隔离
- ✅ 命令执行 – 在沙盒中运行 shell 命令, 真实退出代码会浮出水面( 返回非零 退出, 不被遮蔽)
- ✅ 文件系统操作 — 读取、写入、列表、 mkdir, 存在、 删除
- ✅ 每端预览 URL —— 说
getUrl({ port })返回时https://{port}-{instanceId}.{domain} - ✅ 快照模板( T) ——抓取正在运行的沙盒;列表/删除模板
- ✅ 区域 / apiUrl 串起到任何地方 控制飞机的呼叫总是瞄准你的莱兰托斯机位
API 参考
命令执行
// Run Python via heredoc
const result = await sandbox.runCommand(`python3 - <<'PY'
import json
print(json.dumps({"message": "Hello from Python"}))
PY`);
// List files
const ls = await sandbox.runCommand('ls -la');
// A non-zero exit is returned (not thrown) with the real exit code + stderr
const failed = await sandbox.runCommand('exit 3');
console.log(failed.exitCode); // 3
文件系统操作
await sandbox.filesystem.writeFile('/tmp/hello.py', 'print("Hello World")');
const content = await sandbox.filesystem.readFile('/tmp/hello.py');
await sandbox.filesystem.mkdir('/tmp/data');
const files = await sandbox.filesystem.readdir('/tmp');
const exists = await sandbox.filesystem.exists('/tmp/hello.py');
await sandbox.filesystem.remove('/tmp/hello.py');
预览 URL
// Expose a server running on port 3000 inside the sandbox
const url = await sandbox.getUrl({ port: 3000 });
// => https://3000-<instanceId>.lelantos.ai
沙盒管理
const info = await sandbox.getInfo();
console.log(info.id, info.status, info.createdAt);
await sandbox.destroy();
处理错误
import { lelantos } from '@computesdk/lelantos';
try {
const compute = lelantos({ apiKey: process.env.LELANTOS_API_KEY });
const sandbox = await compute.instances.create();
} catch (error) {
if (error.message.includes('Missing Lelantos API key')) {
console.error('Set LELANTOS_API_KEY environment variable');
} else if (error.message.includes('authentication failed')) {
console.error('Check your Lelantos API key');
} else if (error.message.includes('quota exceeded')) {
console.error('Lelantos usage limits reached');
}
}
最佳做法
- 资源管理 ——在完成释放资源时,总是会破坏沙盒.
- 处理错误 - 围绕创建/连接电话使用尝试/捕获.
- 超时 - 设置适当的
timeout用于长期任务. - API 密钥安全 ——从不向版本控制输入API密钥.
限制
- 模板创建 – 通过 E2B 兼容模板构建模板 / CLI 构建协议 , 或快照运行中的沙盒
snapshot.create()直接template.create()故意无支持. - 地区 ——沙盒在欧盟(今天的单一地区)运行.
路线图
莱兰托斯还提供 浏览器沙盒 (CDP-可控鞭炮浏览器微VM). 后续发布会只增加一个Lelantos browser 向此提供者扩展命名空间 。 这个最初的软件包是有意计算重点(便携式)的 sandbox 编号 : snapshot 编号 : template ),使其与其他计算SDK供应商一起保持一个干净的倒入.
支助
许可证
麻省理工学院