{"jtbd":{"id":"platform-sandbox","slug":"platform-sandbox","name":"Sandbox + full app platform","shortName":"Sandbox + full app platform","problemStatement":"Agents need isolated compute plus APIs, DBs, GPUs, or BYOC — not only a code jail."},"pick":{"id":"northflank","slug":"northflank","name":"Northflank","tagline":"Choose when the agent needs a whole app platform, not just a code jail. E2B for pure sandboxes; Railway for…","website":"https://northflank.com","overall":7.61,"scoreBand":{"low":7,"mid":7.6,"high":8.2,"halfWidth":0.6,"basis":"editorial_prior","display":"7.0–8.2 (editorial prior)"},"scoreLayers":{"editorialPrior":7.61,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","pricingNotes":"As of 2026-09-14 (northflank.com/pricing live): CPU $0.01667/vCPU-hr; Memory $0.00833/GB-hr; Disk $0.15/GB-mo; egress $0.06/GB. GPUs: L4 $0.80, A100 40GB $1.42, A100 80GB $1.76, H100 80GB $2.74, RTX PRO 6000 $3.00/hr. Predefined plans e.g. nf-compute-50 $12/mo, nf-compute-100-2 $24/mo. Sandbox free tier (2 services/1 DB/2 crons); PAYG self-serve; Enterprise BYOC. Prorated to the second.","scores":{"capabilityFit":8,"pricePerformance":7.4,"latencyReliability":7.8,"developerDx":8,"privacyPosture":7.5,"lockInRisk":5.5,"maturity":7.2,"overall":7.61,"kind":"curated_estimate","confidence":"high","asOf":"2026-09-14"}},"runnersUp":[{"id":"daytona","slug":"daytona","name":"Daytona","tagline":"Choose when agents need sticky filesystems and full dev environments. E2B for disposable code exec. Confirm…","website":"https://daytona.io","overall":8.35,"scoreBand":{"low":7.7,"mid":8.3,"high":8.9,"halfWidth":0.6,"basis":"editorial_prior","display":"7.7–8.9 (editorial prior)"},"scoreLayers":{"editorialPrior":8.35,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","pricingNotes":"As of 2026-09-14 (daytona.io/pricing live): PAYG per-second — vCPU **$0.0504/h**, Memory **$0.0162/GiB-h**, Storage **$0.000108/GiB-h** (first 5 GiB free). $200 free compute signup. Windows $0.0858/vCPU-h. GPU preemptible $/hour (stored rows, reconfirmed 2026-10-27): H100 $2.27, H200 $2.61, B200 $3.59, RTX 4090 $0.57, RTX 5090 $0.74, RTX PRO 6000 $1.74. GPU on-demand $/hour (stored rows since 2026-10-27): H100 $3.95, H200 $4.54, B200 $6.25, B300 $6.25, MI355X $5.99, RTX 4090 $0.99, RTX 5090 $1.29, RTX PRO 6000 $3.03. Startup program up to $50k credits. Closed-source cloud mid-2026 — verify OSS assumptions.","scores":{"capabilityFit":8.8,"pricePerformance":8.2,"latencyReliability":8.2,"developerDx":8.8,"privacyPosture":8,"lockInRisk":3,"maturity":7.2,"overall":8.35,"kind":"curated_estimate","confidence":"high","asOf":"2026-09-14"}},{"id":"modal","slug":"modal","name":"Modal","tagline":"Depot darling for Python agent backends and bursty GPU jobs. If you think in functions not VMs, start here.","website":"https://modal.com","overall":8.61,"scoreBand":{"low":8,"mid":8.6,"high":9.2,"halfWidth":0.6,"basis":"editorial_prior","display":"8.0–9.2 (editorial prior)"},"scoreLayers":{"editorialPrior":8.61,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-10-19","pricingNotes":"As of 2026-10-24 (modal.com/pricing, fetched 2026-10-24): Python-native serverless GPU/CPU billed per second of compute ('You never pay for idle resources'). GPU list rates per second: H100 SXM5 '$0.001097', H200 SXM '$0.001261', B200 '$0.001736', A100 80 GB '$0.000694', L40S '$0.000542', A10 '$0.000306', L4 '$0.000222', T4 '$0.000164'; CPU '$0.0000131' per core per second (physical core, 2 vCPU equivalent); memory '$0.00000222' per GiB per second. Region selection '1.15 - 1.75x base prices'; non-preemptible execution '3x base prices' ('Sandboxes are billed at non-preemptible rates of 3x list price.'). Containers are kept alive '60 seconds after the last inputs', which is billed (configurable). Plans: Starter '$0 + compute / month' with '$30 / month free credits' ('100 containers + 10 GPU concurrency'); Team '$250 + compute / month' with '$100 / month free credits' ('5000 containers + 50 GPU concurrency'); Enterprise custom. Shared Endpoints are 'billed per token rather than per second' and not covered by included compute ('This took effect September 1, 2026.'). Excellent DX for jobs and endpoints; cold starts matter for interactive agents.","scores":{"capabilityFit":9,"pricePerformance":8.2,"latencyReliability":8.6,"developerDx":9.6,"privacyPosture":7.8,"lockInRisk":4.5,"maturity":8.2,"overall":8.61,"kind":"curated_estimate","confidence":"high","asOf":"2026-10-19"}},{"id":"railway","slug":"railway","name":"Railway","tagline":"Depot favorite for shipping agent APIs quickly. When bills climb, move steady-state to Fly/Hetzner/DO.","website":"https://railway.app","overall":8.22,"scoreBand":{"low":7.6,"mid":8.2,"high":8.8,"halfWidth":0.6,"basis":"editorial_prior","display":"7.6–8.8 (editorial prior)"},"scoreLayers":{"editorialPrior":8.22,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","pricingNotes":"Usage-based PaaS; services/databases; simple git deploys; hobby→pro plans.","scores":{"capabilityFit":8.2,"pricePerformance":7.8,"latencyReliability":8.4,"developerDx":9.4,"privacyPosture":7.2,"lockInRisk":4,"maturity":8.2,"overall":8.22,"kind":"curated_estimate","confidence":"high","asOf":"2026-09-14"}}],"scoreBand":{"low":7,"mid":7.6,"high":8.2,"halfWidth":0.6,"basis":"editorial_prior","display":"7.0–8.2 (editorial prior)"},"scoreLayers":{"editorialPrior":7.61,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"whyPickOverHigherScore":{"pickId":"northflank","pickName":"Northflank","pickScore":7.61,"highestScoredCandidateId":"modal","highestScoredCandidateName":"Modal","highestScore":8.61,"pickHasLowerCompositeScore":true,"delta":-1,"pickLeadsOnDimensions":[],"explanation":"Northflank (7.61) is the editorial pick for Sandbox + full app platform over higher-composite Modal (8.61) because composite scores are provider-wide priors while Northflank wins on job-specific execution fit: Capability breadth of platform vs pure sandbox DX."},"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"freeAlternatives":[],"referenceDocs":[],"falsification":{"jtbdId":"platform-sandbox","jtbdName":"Sandbox + full app platform","currentPickId":"northflank","currentPickScore":7.61,"challengerId":"daytona","challengerScore":8.35,"currentScoreGap":0.74,"minVerifiedOutcomes":10,"requiredOutcomeMargin":0.89,"requiredSuccessRateDelta":0.15,"maxPickPriceIncreasePct":25,"whatWouldChangePick":["Daytona (daytona) outperforms Northflank (northflank) by >= 0.89 outcome points (or >= 15% worked-rate delta) across >= 10 Countersign-verified production outcomes.","A verified price increase > 25% on Northflank's representative SKU for platform-sandbox without a corresponding capability gain.","Live caller rail exhaustion (?exhausted=northflank) or sustained >= 30% degraded/failed rate in verified production outcomes."],"frozenHoldoutPolicy":{"holdoutSplit":"20% frozen benchmark holdout tasks + 80% live production outcome receipts","requireCountersignReceipt":true,"requiredEvidenceTiers":["outcome_verified","reference_checked"],"minDistinctContributors":2,"antiGamingRule":"Unverified self-reports and seed/editorial rows never mutate picks or scores."},"triggers":[{"kind":"verified_outcomes_outperformance","challengerId":"daytona","minVerifiedOutcomes":10,"requiredOutcomeMargin":0.89,"requiredWorkedRateDelta":0.15},{"kind":"verified_price_increase","providerId":"northflank","maxPriceIncreasePct":25},{"kind":"live_rail_exhaustion_or_degradation","providerId":"northflank","immediateOverrideUrl":"/api/decide?jtbd=platform-sandbox&exhausted=northflank"}],"submissionSpec":{"falsifyEndpoint":"/api/falsify?jtbd=platform-sandbox","outcomesEndpoint":"POST /api/feedback","correctionsEndpoint":"POST /api/corrections","payloadTemplate":{"agentIdentity":"agent:<your-agent-id>","jtbdId":"platform-sandbox","providerId":"daytona","outcome":"worked","detail":"Comparative production evaluation on platform-sandbox (n>=10 tasks) with Countersign receipt.","confidence":"high","receipt":{"countersign":{"claim_id":"cs-00000000","status":"verified","evidence_tier":"outcome_verified","counts_as_verified":true}}}}},"whatWouldChangePick":["Daytona (daytona) outperforms Northflank (northflank) by >= 0.89 outcome points (or >= 15% worked-rate delta) across >= 10 Countersign-verified production outcomes.","A verified price increase > 25% on Northflank's representative SKU for platform-sandbox without a corresponding capability gain.","Live caller rail exhaustion (?exhausted=northflank) or sustained >= 30% degraded/failed rate in verified production outcomes."],"routePlan":{"jtbdId":"platform-sandbox","primary":{"providerId":"northflank","name":"Northflank","overall":7.61,"scoreBand":{"low":7,"mid":7.6,"high":8.2,"halfWidth":0.6,"basis":"editorial_prior","display":"7.0–8.2 (editorial prior)"},"scoreLayers":{"editorialPrior":7.61,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","role":"primary","reason":"Editorial Depot Pick for Sandbox + full app platform; healthy/eligible under caller constraints."},"fallback":[{"providerId":"daytona","name":"Daytona","overall":8.35,"scoreBand":{"low":7.7,"mid":8.3,"high":8.9,"halfWidth":0.6,"basis":"editorial_prior","display":"7.7–8.9 (editorial prior)"},"scoreLayers":{"editorialPrior":8.35,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","role":"fallback","reason":"Ranked fallback route for Sandbox + full app platform."},{"providerId":"modal","name":"Modal","overall":8.61,"scoreBand":{"low":8,"mid":8.6,"high":9.2,"halfWidth":0.6,"basis":"editorial_prior","display":"8.0–9.2 (editorial prior)"},"scoreLayers":{"editorialPrior":8.61,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-10-19","role":"fallback","reason":"Ranked fallback route for Sandbox + full app platform."},{"providerId":"railway","name":"Railway","overall":8.22,"scoreBand":{"low":7.6,"mid":8.2,"high":8.8,"halfWidth":0.6,"basis":"editorial_prior","display":"7.6–8.8 (editorial prior)"},"scoreLayers":{"editorialPrior":8.22,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","role":"fallback","reason":"Ranked fallback route for Sandbox + full app platform."}],"disqualified":[],"expectedRegret":{"scoreDeltaVsUnconstrainedPick":0,"unconstrainedPickId":"northflank","activePrimaryId":"northflank","summary":"0.00 score regret: unconstrained editorial pick satisfies all caller constraints."},"evidenceAgeDays":{"editorialScoreAgeDays":43,"pricingVerifiedAgeDays":0,"editorialPriorAsOf":"2026-09-14","pricingLastVerifiedAt":"2026-10-27"},"confidenceBand":{"low":7,"mid":7.6,"high":8.2,"halfWidth":0.6,"basis":"editorial_prior","display":"7.0–8.2 (editorial prior)"},"constraintsApplied":false,"constraintBundle":{"task":null,"jtbd":"platform-sandbox","quotaExhausted":[],"degraded":[],"healthy":[],"budgetUsd":null,"maxLatencyMs":null,"region":null,"privacy":null,"exit":[],"existing":[]}},"pricingLastVerifiedAt":"2026-10-27","editorialPriorAsOf":"2026-09-14","tie":false,"scoreGap":-0.74,"decidingFactor":null,"tieNote":null,"rationale":"Capability breadth of platform vs pure sandbox DX.","whenNotTopPick":"Disposable code exec only — E2B; simple web app — Railway.","skipTopPick":false,"skipReason":null,"matchedConstraints":[],"pricingSummary":"As of 2026-09-14 (northflank.com/pricing live): CPU $0.01667/vCPU-hr; Memory $0.00833/GB-hr; Disk $0.15/GB-mo; egress $0.06/GB. GPUs: L4 $0.80, A100 40GB $1.42, A100 80GB $1.76, H100 80GB $2.74, RTX PRO 6000 $3.00/hr. Predefined plans e.g. nf-compute-50 $12/mo, nf-compute-100-2 $…","cite":"Depot Pick for platform-sandbox: northflank (asOf 2026-09-14). See GET /api/jtbds/platform-sandbox + GET /api/methodology.","nextActions":[{"step":1,"title":"Inspect full JTBD + embeds","href":"/api/jtbds/platform-sandbox?embed=providers","why":"Confirm pick, runners-up, and methodology notes."},{"step":2,"title":"Quote sourced SKUs","href":"/api/quote?jtbd=platform-sandbox","why":"Depot Pick SKUs plus the cheapest sourced SKU whose unit matches this job. Does not change the pick. Does not blend input and output or borrow a chat rate for a non-chat job."},{"step":3,"title":"Open provider detail","href":"/api/providers/northflank","why":"Scores, pricingNotes, strengths/weaknesses, communitySignals (claims only)."},{"step":4,"title":"Cite methodology","href":"/api/methodology","why":"Required when publishing a Depot Pick citation."},{"step":5,"title":"Grab badge SVG","href":"/api/badge?type=depot-pick&jtbd=platform-sandbox","why":"Embed in README / agent passport."},{"step":6,"title":"Post production insight","method":"POST","href":"/api/insights","why":"Unverified until curated; never auto-mutates official scores."}],"honesty":["Do not invent scores or benches.","Insights are claims until curated/reviewed; they never silently mutate official scores.","lockInRisk higher = more lock-in (worse).","normalizedUsdPerMillionTokens is set only for a single sourced token row. Otherwise null, with a machine-readable reason. Do not coerce GPU, minute, or per-1k search units.","Runners-up are not Depot Picks.","Depot overall is editorial_weighted, not Arena Elo and not an Artificial Analysis index."],"asOf":"2026-09-14","depth":{"whenNotToUse":{"text":"Disposable code exec only — E2B; simple web app — Railway.","source":"editorial `whenNotTopPick` (data/jtbds.json)"},"whenNotToUseReason":null,"runnerUp":{"providerId":"daytona","name":"Daytona","overallForJob":8.35,"pickOverallForJob":7.61,"beatsPickOn":["capabilityFit","pricePerformance","latencyReliability","developerDx","privacyPosture","lockInRisk"],"source":"first resolvable entry of the job's editorially ranked `runnersUpIds`; scores are stored job-weighted scores"},"runnerUpReason":null,"lockIn":{"pickLockInRisk":5.5,"runnerUpLockInRisk":3,"scale":"0–10 stored curated estimate; higher = more lock-in (worse)","pickExitSignals":[],"runnerUpExitSignals":["open source (provider tag `oss`)"],"pickNotes":[],"selfHostFallback":[],"migration":"Runner-up Daytona has lower stored lock-in risk (3 vs 5.5, 0–10, higher = more lock-in).","migrationReason":null,"derivedFrom":"stored lockInRisk scores, provider tags (oss, self-host, openai-compat, open-models), free rows that list this job, and verbatim provider notes. No migration guide was invented."}},"citation":{"text":"Agent Provider Depot (v0.12.150), Depot Pick for platform-sandbox: northflank, scores as of 2026-09-14, retrieved 2026-10-27. https://getagentdepot.com/jtbds/platform-sandbox","markdown":"[Agent Provider Depot](https://getagentdepot.com/jtbds/platform-sandbox) (v0.12.150) — Depot Pick for `platform-sandbox`: **northflank** (scores as of 2026-09-14, retrieved 2026-10-27)","fields":{"publisher":"Agent Provider Depot","version":"0.12.150","role":"depot_pick","jtbdId":"platform-sandbox","providerId":"northflank","scoreAsOf":"2026-09-14","retrievedOn":"2026-10-27","page":"https://getagentdepot.com/jtbds/platform-sandbox","api":"https://getagentdepot.com/api/decide?jtbd=platform-sandbox"},"howToCite":"Cite Depot as an editorial, dated recommendation, not a benchmark: name the job, the Depot Pick (or runner-up), the score asOf date and the day you retrieved it, and link the job page. Format: “Agent Provider Depot (v{version}), Depot Pick for {jobId}: {providerId}, scores as of {scoreAsOf}, retrieved {retrievedOn}. {baseUrl}/jtbds/{jobId}”. Quote prices only with their own sourceUrl and asOf. If the pick's score is stale (freshness.pick.score.stale), say so."},"freshness":{"pick":{"score":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"lastReviewed":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"sourceCheck":{"checkedAt":"2026-10-27","sourceUrls":3,"sourcesReachable":3,"pricingRows":0,"pricingRowsReconfirmed":0,"note":"A source re-check confirms the page is reachable and, for pricing rows, that the stored amount and SKU name appear on it. It does not re-derive or change the score.","reason":null}},"scoreAsOf":"2026-09-14","editorialPriorAsOf":"2026-09-14","pricingLastVerifiedAt":"2026-10-27","pickLastReviewed":"2026-09-14","runnersUpScoreAsOf":["2026-09-14","2026-10-19","2026-09-14"],"contractAsOf":"2026-10-03","pricingShape":"prose_notes_only","normalizedUsdPerMillionTokens":null,"normalizationStatus":"unavailable","normalizationReason":"no_sourced_price"},"pricingContract":{"normalizedUsdPerMillionTokens":null,"normalizationStatus":"unavailable","normalizationReason":"no_sourced_price","shape":"prose_notes_only","filterable":false,"priceSortEligible":false,"priceSortKeyUsdPerMillionInputTokens":null,"rows":[],"notesExcerpt":"As of 2026-09-14 (northflank.com/pricing live): CPU $0.01667/vCPU-hr; Memory $0.00833/GB-hr; Disk $0.15/GB-mo; egress $0.06/GB. GPUs: L4 $0.80, A100 40GB $1.42, A100 80GB $1.76, H100 80GB $2.74, RTX PRO 6000 $3.00/hr. Predefined plans e.g. nf-compute-50 $12/mo, nf-compute-100-2 $…","notesCheck":{"status":"no_known_contradiction","pairs":[],"review":null,"note":null},"lastReviewed":"2026-09-14","scoreAsOf":"2026-09-14","website":"https://northflank.com","doNotParse":"Do not parse pricingNotes. Use rows only. normalizedUsdPerMillionTokens is a single number only when this provider has exactly one sourced token row. Input/output, context tiers, and non-token units stay null at this level.","gap":"No sourced price row for this provider. pricingNotes stay prose. See research/gaps.md."},"links":{"jtbd":"/jtbds/platform-sandbox","jtbdApi":"/api/jtbds/platform-sandbox","leaderboard":"/api/leaderboards?jtbd=platform-sandbox","methodology":"/api/methodology","badge":"/api/badge?type=depot-pick&jtbd=platform-sandbox","decide":"/api/decide?jtbd=platform-sandbox","humanPage":"/jtbds/platform-sandbox","alternatives":"/api/alternatives?provider=northflank","canonical":"/api/canonical","quote":"/api/quote?jtbd=platform-sandbox","falsify":"/api/falsify?jtbd=platform-sandbox"},"constraintBundle":{"task":null,"jtbd":"platform-sandbox","quotaExhausted":[],"degraded":[],"healthy":[],"budgetUsd":null,"maxLatencyMs":null,"region":null,"privacy":null,"exit":[],"existing":[]},"stackContext":{"host":null,"framework":null,"repo":null,"lang":null,"existing":[],"volume":null,"sender":null,"detectedFromTask":[]},"keep":null,"contextAdvice":null,"communityFeedback":{"pickOnThisJob":{"failed":0,"degraded":0,"worked":0,"insights":0,"withVerifiedReceipt":0,"failureModes":{},"latestAt":null,"note":"Agent-reported claims (unverified unless a receipt is verified by Depot's re-check). They never change scores or picks."},"outcomes":{"job":{"n":0,"worked":0,"degraded":0,"failed":0,"failureModes":{},"verifiedReports":0,"contributors":0,"excluded":{"seed_editorial":0,"test":0,"notFeedback":0},"reason":"no_submitted_outcome_reports_yet"},"pick":{"providerId":"northflank","n":0,"worked":0,"degraded":0,"failed":0,"failureModes":{},"evidenceTiers":{"agent_claim":0,"self_declared":0,"reference_checked":0,"outcome_verified":0},"reason":"no_submitted_outcome_reports_yet"},"scoresMutated":false,"more":"/api/outcomes?jtbd=platform-sandbox"},"report":"POST /api/feedback {agentIdentity, outcome: failed|degraded|worked, detail, providerId, jtbdId, failureModeId?, receipt?}"}}