سینډ باکسونه
د هغه کوډ لپاره جلا شوي Linux مایکرو VM چې ستاسو سکرېپټونه او AI اجنټان یې چلوي. سینډ باکس شاوخوا یوه ثانیه کې پیل کېږي، Python، Node.js یا bash چلوي او د ستاسو د سرورونو له همغه بیلانس څخه په ثانیه حسابېږي.
سینډ باکس څه شی دی
یو کوچنی Linux ماشین چې تاسو یې د API یا MCP له لارې جوړوئ، څو ثانیې یا څو ورځې یې کاروئ او بیا یې ړنګوئ. وتونکی انټرنېټ کار کوي (pip install، npm install، git clone). ننوتونکي پورټونه او SSH نشته: کمانډونه او فایلونه د API له لارې ځي. دننه: Python 3.12 له pip سره، Node.js 22 له npm سره، bash، git او curl.
دوه حالتونه
ټرفونه
| ټرف | vCPU | RAM | ډیسک | شبکه | په ساعت | دایمي، د میاشتې حد |
|---|---|---|---|---|---|---|
| micro | 0.25 | 512 MB | 3 GB | 50 Mbit/s | $0.0165 | $9.03 |
| small | 0.5 | 1 GB | 5 GB | 100 Mbit/s | $0.033 | $18.07 |
| standard | 1 | 2 GB | 10 GB | 200 Mbit/s | $0.066 | $36.14 |
| plus | 2 | 4 GB | 15 GB | 300 Mbit/s | $0.132 | $72.27 |
| pro | 4 | 8 GB | 20 GB | 400 Mbit/s | $0.264 | $144.54 |
| max | 8 | 16 GB | 40 GB | 500 Mbit/s | $0.528 | $289.08 |
تاسو د غوره شوي ټرف د vCPU او RAM پیسې ورکوئ: د هر vCPU-ساعت $0.040 او د هر GiB-ساعت $0.013. تازه بیې پرته له ټوکن: GET /sandboxes/tariffs.
هغه حدود چې باید وپېژنئ
یو کمانډ تر ۵۵ ثانیو چلېږي؛ اوږدې دندې په شالید کې چلېږي او تاسو یې پایله پوښتئ. فایلونه په هره غوښتنه کې تر ۵ MB، لوی (تر ۲ GB) د یو ځل ښکته کولو او پورته کولو لینکونو له لارې. یو حساب په یو وخت کې تر ۲۰ سینډ باکسونو او ۲ کمانډونو چلولی شي.
د چاپېریال متغیرونه
رازونه او تنظیمات د env له لارې ولېږئ. که د جوړولو پر مهال وټاکل شي، د سینډ باکس پر هر کمانډ پلي کېږي؛ که په exec یا run کې وټاکل شي، یوازې پر همغه غوښتنه پلي کېږي او د سینډ باکس ارزښتونه بدلوي. تر 64 متغیرونو پورې، هر ارزښت تر 32 KB او ټول تر 64 KB. ارزښتونه کوډ شوي ساتل کېږي، API یې هېڅکله نه بېرته ورکوي او په لاګونو کې نه لیکل کېږي: ځوابونه یوازې نومونه ښيي (env_keys).
API=https://api.eqvps.com/api/v1/eqvps
AUTH="Authorization: Bearer $EQVPS_API_KEY"
# env for the whole sandbox (only the names come back, as env_keys)
SB=$(curl -s -X POST $API/sandboxes -H "$AUTH" -H "Content-Type: application/json" \
-d '{"tariff":"small","env":{"DB_URL":"postgres://user:pass@db/app","MODE":"test"}}' | jq -r .id)
# env for one call, merged over the sandbox env
curl -s -X POST $API/sandboxes/$SB/exec -H "$AUTH" -H "Content-Type: application/json" \
-d '{"command":"echo $MODE $RUN_ID","env":{"RUN_ID":"42"}}'د لګښت حد
په ډیفالټ ډول سینډ باکسونه د لګښت حد نه لري. تاسو کولای شئ په ډشبورډ کې یا د PUT /sandboxes/budget له لارې ورځنی او میاشتنی حد وټاکئ. کله چې حد پوره شي، نوي سینډ باکسونه 429 budget_exceeded ترلاسه کوي، چلېدونکي لنډمهاله ړنګېږي او دایمي د ډیسک په ساتلو سره درېږي. کله چې حد لوړ کړئ یا نوې ورځ یا میاشت پیل شي (UTC)، بیا چلېږي.
# daily cap $5, monthly cap $50 (null = no cap)
curl -s -X PUT $API/sandboxes/budget -H "$AUTH" -H "Content-Type: application/json" \
-d '{"daily_usd":5,"monthly_usd":50}'
# spent today / this month and when the caps reset (UTC)
curl -s $API/sandboxes/budget -H "$AUTH"چټک پیل: MCP (Claude Code، Cursor او نور پیرودونکي)
د MCP سرور یو ځل ونښلوئ، بیا له اجنټ نه په خپلو خبرو وغواړئ چې څه وکړي. د سینډ باکس وسایل: create_sandbox، run_code، exec_command، get_task، kill_task، get_upload_url، get_download_url، list_sandboxes، get_sandbox، kill_sandbox، sandbox_pricing.
claude mcp add --transport http eqvps https://mcp.eqvps.com/mcp \
--header "Authorization: Bearer $EQVPS_API_KEY"یو کوچنی سینډ باکس جوړ کړه، په Python کې print(2 + 2) وچلوه، پایله راوښیه او سینډ باکس ړنګ کړه.چټک پیل: له Python او Node.js څخه REST
اضافي کڅوړو ته اړتیا نشته. خپل ټوکن د چاپېریال په متغیر EQVPS_API_KEY کې کېږدئ (د ترلاسه کولو لاره په «د حساب نښلول» کې ده).
# first_sandbox.py — Python 3.8+, standard library only
import json, os, urllib.request
API = "https://api.eqvps.com/api/v1/eqvps"
KEY = os.environ["EQVPS_API_KEY"]
def call(method, path, body=None):
req = urllib.request.Request(API + path, method=method,
data=json.dumps(body).encode() if body is not None else None,
headers={"Authorization": "Bearer " + KEY,
"Content-Type": "application/json", "Accept": "application/json"})
with urllib.request.urlopen(req, timeout=90) as r: # HTTPError on 401/402/…
return json.loads(r.read() or b"{}")
sb = call("POST", "/sandboxes", {"tariff": "small"})
try:
r = call("POST", f"/sandboxes/{sb['id']}/run",
{"language": "python", "code": "print(2 + 2)"})
print(r["exit_code"], r["stdout"]) # 0 4
finally:
call("DELETE", f"/sandboxes/{sb['id']}")// first_sandbox.mjs — Node.js 18+ (built-in fetch), run: node first_sandbox.mjs
const API = "https://api.eqvps.com/api/v1/eqvps";
const KEY = process.env.EQVPS_API_KEY;
async function call(method, path, body) {
const r = await fetch(API + path, {
method,
headers: { Authorization: `Bearer ${KEY}`, "Content-Type": "application/json", Accept: "application/json" },
body: body ? JSON.stringify(body) : undefined,
});
const data = await r.json();
if (!r.ok) throw new Error(`${r.status} ${data.error ?? ""} ${data.message ?? ""}`);
return data;
}
const sb = await call("POST", "/sandboxes", { tariff: "small" });
try {
const r = await call("POST", `/sandboxes/${sb.id}/run`, { language: "node", code: "console.log(2 + 2)" });
console.log(r.exit_code, r.stdout); // 0 4
} finally {
await call("DELETE", `/sandboxes/${sb.id}`);
}د Python او TypeScript لپاره SDK
کتابتون غوره کوئ؟ د Python او TypeScript کڅوړې همغه REST غوښتنې کوي، په 429 او 503 کې پخپله بیا هڅه کوي او د بلاک په پای کې تل سینډ باکس ړنګوي. نصب او بېلګه:
# pip install -U eqvps https://pypi.org/project/eqvps/ (0.2.0+ for env)
# "eqvps sandbox create" = Sandbox.create() here · create_sandbox in MCP · POST /sandboxes in REST (no CLI)
from eqvps import Sandbox
# EQVPS_API_KEY from the environment; env = secrets for your code, stored encrypted
with Sandbox.create(tariff="small", env={"DB_URL": "postgres://user:pass@db/app"}) as sb:
r = sb.run("print(2 + 2)")
print(r.stdout, r.exit_code) # "4\n" 0
sb.upload("/root/data.csv", "a,b\n1,2\n")
print(sb.exec("wc -l /root/data.csv").stdout)
print(sb.exec("echo $RUN_ID", env={"RUN_ID": "42"}).stdout) # env for one call
# the sandbox is deleted when the block exits, also on errors// npm i @eqvps/sdk@latest https://www.npmjs.com/package/@eqvps/sdk (0.2.0+ for env)
import { Sandbox } from "@eqvps/sdk";
// EQVPS_API_KEY from the environment; env = secrets for your code, stored encrypted
await Sandbox.with({ tariff: "small", env: { DB_URL: "postgres://user:pass@db/app" } }, async (sb) => {
const r = await sb.run("print(2 + 2)");
console.log(r.stdout, r.exit_code); // "4\n" 0
console.log((await sb.exec("echo $RUN_ID", { env: { RUN_ID: "42" } })).stdout); // env for one call
}); // deleted afterwards, also on errors
تبصرې
لا تبصرې نشته. لومړی اوسئ.