Companion Sandbox
The local proving ground for live scenario runs. Connect the 20-service Companion Sandbox, import each service's OpenAPI as a sandbox environment, and let the outcome layer poll the sandbox to PROVE the downstream business state was reached.
The local Companion Sandbox origin. Control-plane routes (/registry, /health, /scenario-state) live at the root; each service is mounted under http://localhost:8081/{service}.
The sandbox prints an all-scopes dev key on boot and writes it to sandbox/data/dev-key.txt. Paste that here, or mint a fresh scoped key (the mint call itself needs a key with the identity or * scope).
How long each live step waits for the sandbox before aborting. Raise it if runs die mid-step on a cold serverless/Render sandbox (the first call after idle can take 10–30s to spin up). Applies immediately to the connected sandbox environments.
Enter a base URL and refresh to probe the sandbox.
$ cd sandbox$ npm install$ npm run seed$ npm run dev
cd sandboxthe Companion Sandbox lives in the repo's sandbox/ foldernpm installone-time: install the sandbox's own dependenciesnpm run seedgenerate deterministic ground-truth data for the 20 servicesnpm run devstart Fastify on port 8081 (prints an all-scopes dev key)
Two ways to run it. Locally, start the sandbox on localhost:8081 next to a local Workbench. The deployed Workbench connects to the hosted sandbox instead — paste its origin and demo key above. The hosted sandbox accepts requests only from the product’s own origins, so a local dev Workbench cannot reach it; that pairing is deliberate, not a fault.
| Service | Base path | Milestones | Status | Links |
|---|---|---|---|---|
Audit Event platformTMF688 | /audit-event | ConsentPostingCompleted | not connectedmanifest | |
Billing Account billingTMF666 | /billing-account | AgreementUpdateCompleted | not connectedmanifest | |
Customer Account customerTMF629 | /customer-account | Promote2CustomerCompletedDUPActivateCompleted | not connectedmanifest | |
Document & Agreement agreementTMF651 | /document-agreement | DocumentGenerationCompletedAgreementUpdateCompleted | not connectedmanifest | |
Identity platformAPI-Key Admin | /identity | — | not connectedmanifest | |
Logistics Inventory logisticsSAP-COLA/GRIP | /logistics-inventory | StockReservedPickCompletedPackCompleted+2 | not connectedmanifest | |
Manufacturing Execution manufacturing | /manufacturing-execution | ProductionCompleted | not connectedmanifest | |
Notification communicationTMF688 | /notification | CustomerNotificationSuccess | not connectedmanifest | |
Order Management orderTMF622 | /order-management | OrderCaptured | not connectedmanifest | |
Payment billingTMF676 | /payment | PaymentAuthorisedPaymentCaptured | not connectedmanifest | |
Pricing Rules pricing | /pricing-rules | PriceCalculated | not connectedmanifest | |
Procurement procurement | /procurement | PurchaseOrderApprovedGoodsReceived | not connectedmanifest | |
Product Catalog (EPC) catalogTMF620 | /product-catalog | EpcDataEnrichmentCompleted | not connectedmanifest | |
Product Inventory inventoryTMF637 | /product-inventory | ProductInventoryCompletedProductInventoryActivateCompleted | not connectedmanifest | |
Resource Inventory inventoryTMF639 | /resource-inventory | ResourceInventoryGetDataCompletedResourceInventoryActivateCompleted | not connectedmanifest | |
Return Authorization logistics | /return-authorization | ReturnAuthorisedReturnReceivedReturnResolved+3 | not connectedmanifest | |
Service Inventory inventoryTMF638 | /service-inventory | ServiceOrderManagementCallCompletedServiceOrderManagementActivationCompleted | not connectedmanifest | |
Shipment Tracking logistics | /shipment-tracking | ShipmentCreatedShipmentDispatchedShipmentDelivered+2 | not connectedmanifest | |
Time Tracking staffing | /time-tracking | TimeBooked | not connectedmanifest | |
Work Order field-service | /work-order | WorkOrderScheduledWorkOrderCompleted | not connectedmanifest |
What each box expects, in business terms — mirrored from the sandbox. Edit a meaning in the sandbox dashboard (Contracts tab), then Load contracts here to mirror it.
Contracts are not loaded automatically. Select Load contracts to contact the configured sandbox.
After connecting, open the Scenario Builder, point a step's environment at a sandbox service, and run it from the Run Monitor — the outcome column proves the other side reached the expected milestone.