Support multiple ordered sandbox pools per installation
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 20/100
- Issue-Typ
- Feature
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- go, postgresql
- Bereich
- backend-api-design, databases, infrastructure
Rechercherichtung
Start with services/core/internal/deployment/placement/placement.go and the contracts/agents-api/sandbox-deployment.md contract, then trace the runtime_deployment schema and deployment API. The proposal spans placement, lifecycle, API, client validators, and Web, with open design questions still unresolved. Done means ordered pools replace the singleton across these areas while preserving the stated placement and restore constraints.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Problem
An installation can select exactly one Sandbox Provider (docker, microsandbox or e2b). Administrators cannot combine compute sources, for example Docker nodes plus microsandbox nodes, or self-hosted nodes that overflow to E2B. Switching providers requires a full sandbox reset that clears all hosted resources.
Multiple nodes of the same provider already work: DecidePlacement picks an online, ready node with free capacity, preferring the highest ready generation and then the fewest active sandboxes.
Where the single-provider assumption lives
- Contract:
contracts/agents-api/sandbox-deployment.mdsays PostgreSQL holds "one active selection per installation",provideris "exactly one ofdocker,microsandbox,e2b", and changing to a different backend requires a reset first. - Schema:
runtime_deploymentis a singleton table (singleton boolean PRIMARY KEY CHECK (singleton)) holding oneprovider_kind,mode,generationand specification.runtime_deployment_generationskeeps retained generations only so that existing allocations can still be cleaned up. - Placement:
services/core/internal/deployment/placement/placement.goreturns no placement indirectmode and otherwise chooses among the nodes of the single provider. - Node configuration:
providers.Loadrejects configuring bothdockerandmicrosandbox("only one sandbox provider can be configured"). - API and Web:
/core/v1/sandbox/deploymentGET/POST/PUT take one selection object, andSandboxSetupWizardasks the administrator to pick one provider.
Proposal
Replace the singleton deployment with an ordered list of sandbox pools. Each pool has its own provider, specification, Runtime release, generation, credential and priority.
- Data model: pools replace the
runtime_deploymentsingleton. Placements and allocations record their pool, including direct (E2B) allocations, which have no placement record today. - Placement: try pools in priority order and use the first one with admissible capacity. Within a node pool, keep the current node selection rules. Direct pools need a declared capacity limit so that lower-priority pools can be reached.
- Lifecycle: generation rollout, reset, owner epoch, suspension policy and node enrollment become per-pool. Removing or replacing a pool clears only that pool's resources.
- API and contract: replace the single deployment object with pool CRUD and ordering under
/core/v1/sandbox/. Update the OpenAPI,sandbox-deployment.mdand itszhtranslation, and the@oac/agents-clientvalidators. - Web: show a pool list with add, reorder, and per-pool nodes and capacity.
Constraints
- Ordering applies only when a new Session is placed, based on capacity and availability. A failed or unknown
Createis never retried in another pool: the Sandbox Provider contract forbids replayingCreate, and Core never substitutes another implementation. - An existing placement, allocation or suspended Environment stays in its original pool and node. Restores never move to another pool.
- No provider-name branches in placement or lifecycle code. Pool behavior comes from the registered adapter declarations.
- Pre-release: replace the singleton outright, with no compatibility layer for the old single-deployment API.
Open questions
- Should a pool's capacity limit be declared by the adapter, set by the administrator, or both?
- Can pools of the same provider kind coexist, for example two E2B pools with different templates?
- How should Session-level selection (for example, by resources or Harness) interact with pool order, if at all?
- Vorherrschende Sprache
- Go
- Sterne
- 182
- Forks
- 17
- Ø Merge
- 1 Std. 15 Min.
- Gemergte PRs (30 T.)
- 360
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus MiniMax-AI/OpenAgentCore
-
Skip to content changes the console page to OverviewEvtl. vergeben @dvd233 hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
MiniMax-AI/OpenAgentCore#421 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
MiniMax-AI/OpenAgentCore#418 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Allow an HTTP base_url for model providers, like OAC_PUBLIC_URL already doesEvtl. vergeben @velrith hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
MiniMax-AI/OpenAgentCore#416 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
MiniMax-AI/OpenAgentCore#179 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in MiniMax-AI/OpenAgentCore
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
agent-research agent-review-finding chore
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
jordansmall/spindrift#4922 ·
Maintainer antworten meist innerhalb von 1 Tag
-
gcsartifact: deleting a missing version returns an errorEvtl. vergeben @ktsoator hat das heute übernommen. Offenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 2 Tagen
-
govulncheck
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
Maintainer antworten meist innerhalb von 1 Tag
-
Change wording for init command success messageEvtl. vergeben Ein verknüpfter Pull Request ist offen oder bereits gemergt. Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag