−25%

በWindows ዓመታዊ ክፍያ ላይ፣ እስከ ኦክቶበር 31። ዕቅዶችን ይመልከቱ

EQVPS
ጀምር

ሳንድቦክሶች

ስክሪፕቶችዎና የAI ወኪሎችዎ ለሚያስኬዱት ኮድ የተገለሉ Linux ማይክሮ VMዎች። ሳንድቦክስ በአንድ ሰከንድ ገደማ ይነሳል፣ Python፣ Node.js ወይም bash ያስኬዳል፣ እና ከአገልጋዮችዎ ቀሪ ሂሳብ በሰከንድ ይከፈላል።

ሳንድቦክስ ምንድነው

በAPI ወይም በMCP የሚፈጥሩት፣ ለጥቂት ሰከንዶች ወይም ለጥቂት ቀናት ተጠቅመው የሚሰርዙት ትንሽ የLinux ማሽን። ወደ ውጭ የሚወጣ ኢንተርኔት ይሰራል (pip install፣ npm install፣ git clone)። ወደ ውስጥ የሚገቡ ፖርቶችም SSHም የሉም፤ ትዕዛዞችና ፋይሎች በAPI በኩል ያልፋሉ። ውስጥ፦ Python 3.12 ከpip ጋር፣ Node.js 22 ከnpm ጋር፣ bash፣ git እና curl።

ሁለት ሁነታዎች

ጊዜያዊ (ነባሪ) — ለአንድ ተግባር። delete ሲጠሩ፣ ከስራ-ፈትነት ገደብ በኋላ (በነባሪ 5 ደቂቃ፣ እስከ 1 ሰዓት) ወይም TTL ሲያልቅ (እስከ 24 ሰዓት) ይሰረዛል። በሰከንድ ይከፈላል፣ ቢያንስ 60 ሰከንድ።
ቋሚ — ዲስኩንና ሁኔታውን እስከ 30 ቀን ያቆያል። ለእያንዳንዱ የተጀመረ ሰዓት ይከፈላል፣ እና የቀን መቁጠሪያ ወር ከ730 ሰዓት ሲቀነስ 25% በላይ በጭራሽ አያስከፍልም። ቀሪ ሂሳቡ ካለቀ በስናፕሾት ይቆማል (ክፍያ የለም) እና ከሞሉ በኋላ ይቀጥላል፤ የቆሙ ስናፕሾቶች ለ14 ቀን ይቀመጣሉ።

ታሪፎች

ታሪፍ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።

ማወቅ የሚገቡ ገደቦች

አንድ ትዕዛዝ እስከ 55 ሰከንድ ይሰራል፤ ረዘም ያሉ ስራዎች እንደ ዳራ ተግባር ይሄዳሉ እና ውጤቱን ይጠይቃሉ። ፋይሎች በአንድ ጥያቄ እስከ 5 MB፣ ትልልቆቹ (እስከ 2 GB) በአንድ ጊዜ የማውረጃና የመስቀያ አገናኞች። አንድ መለያ በአንድ ጊዜ እስከ 20 ሳንድቦክሶችና 2 ትዕዛዞች ማስኬድ ይችላል።

የአካባቢ ተለዋዋጮች

ሚስጥሮችን እና ቅንብሮችን እንደ 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) አስኪድ፣ ውጤቱን አሳየኝ እና ሳንድቦክሱን ሰርዝ።

ፈጣን ጅምር፦ REST ከPython እና Node.js

ተጨማሪ ጥቅል አያስፈልግም። ቶከንዎን በ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

መለያዎን ማገናኘት፦ ቶከን፣ ውቅረት፣ የመጀመሪያው ሳንድቦክስ፣ ቀሪ ሂሳብ →

አስተያየቶች

እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።

አስተያየት ይተዉ

አስተያየቶች ከመታየታቸው በፊት ይጣራሉ።