−25%

د Windows پر کلنۍ تادیه، تر ۳۱ اکتوبر. پلانونه وګورئ

EQVPS
پیل وکړئ

سینډ باکسونه

د هغه کوډ لپاره جلا شوي 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.

دوه حالتونه

لنډمهاله (اصلي) — د یوې دندې لپاره. کله چې delete وغواړئ، د بې‌کارۍ له مودې وروسته (اصلي ۵ دقیقې، تر ۱ ساعته) یا د TTL په پای کې (تر ۲۴ ساعتونو) ړنګېږي. په ثانیه حساب، لږ تر لږه ۶۰ ثانیې.
دایمي — خپله ډیسک او حالت تر ۳۰ ورځو ساتي. د هر پیل شوي ساعت حساب کېږي، او یوه کلیزه میاشت هېڅکله له ۷۳۰ ساعتونو منفي ۲۵٪ څخه زیاته نه ګرانېږي. که بیلانس خلاص شي، په سنیپ‌شاټ کې درول کېږي (بې پیسو) او له چارج وروسته بیا روانېږي؛ درول شوي سنیپ‌شاټونه ۱۴ ورځې ساتل کېږي.

ټرفونه

ټرفvCPURAMډیسکشبکهپه ساعتدایمي، د میاشتې حد
micro0.25512 MB3 GB50 Mbit/s$0.0165$9.03
small0.51 GB5 GB100 Mbit/s$0.033$18.07
standard12 GB10 GB200 Mbit/s$0.066$36.14
plus24 GB15 GB300 Mbit/s$0.132$72.27
pro48 GB20 GB400 Mbit/s$0.264$144.54
max816 GB40 GB500 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 کې کېږدئ (د ترلاسه کولو لاره په «د حساب نښلول» کې ده).

Python
# 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']}")
Node.js
// 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 کې پخپله بیا هڅه کوي او د بلاک په پای کې تل سینډ باکس ړنګوي. نصب او بېلګه:

Python · eqvps
# 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
TypeScript · @eqvps/sdk
// 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

د حساب نښلول: ټوکن، تنظیم، لومړی سینډ باکس، بیلانس ←

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.