Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7d09e75
feat: add sandbox apps array API support
TheMultii Mar 4, 2026
cb7e307
feat: regenerate types from openapi spec and wire up app endpoints
TheMultii Mar 4, 2026
c9529d3
feat: add per-app methods to Sandbox entity and handle STALE setup st…
TheMultii Mar 4, 2026
75d25cc
test: add integration tests for sandbox app start/stop/logs
TheMultii Mar 4, 2026
ae25cb0
test: use multiple apps and verify independent start/stop behavior
TheMultii Mar 4, 2026
5ddc814
feat: add apps example demonstrating per-app start/stop/logs
TheMultii Mar 4, 2026
1af0f82
docs: add apps section to README
TheMultii Mar 5, 2026
9704f2d
fix: resolve lint warnings in app tests and example
TheMultii Mar 9, 2026
a2b7572
chore: add apps example to example:all script
TheMultii Mar 9, 2026
df1dc39
fix: increase afterAll destroy timeout from 30s to 60s
TheMultii Mar 10, 2026
32c238a
Revert "fix: increase afterAll destroy timeout from 30s to 60s"
TheMultii Mar 11, 2026
d9c6778
bumped timeout for the ubuntu 22.04 sandbox startup
TheMultii Mar 11, 2026
d6108fc
Revert "bumped timeout for the ubuntu 22.04 sandbox startup"
TheMultii Mar 11, 2026
7e9ce79
Sandbox apps
TheMultii Mar 20, 2026
afc6462
Sandbox timeout + fetch (#9)
TheMultii May 20, 2026
019995c
chore(release): bump version to 0.1.6-rc.0
May 20, 2026
e5ce59c
Merge remote-tracking branch 'origin/main' into rc
TheMultii May 20, 2026
92fcc0e
Sandbox update and snapshots (#11)
TheMultii May 21, 2026
dfaf01a
chore(release): bump version to 0.1.6-rc.1
May 21, 2026
064b880
Merge remote-tracking branch 'origin/main' into rc
TheMultii May 21, 2026
d998a1b
0.1.7 - Spec fix (#13)
TheMultii Jun 2, 2026
b53ca99
Merge remote-tracking branch 'origin/main' into rc
TheMultii Jun 2, 2026
98d7bb2
Merge branch 'main' into rc
TheMultii Jun 2, 2026
7886e9b
fix: Asia region (#16)
TheMultii Aug 5, 2026
1856652
feat: sync openapi (#17)
TheMultii Aug 5, 2026
903525d
feat: back off while polling instead of a fixed 1s interval (#15)
TheMultii Aug 7, 2026
8fe7c7c
feat: dual ESM/CJS build with accurate engines range (#18)
TheMultii Aug 7, 2026
fec4d8c
chore(release): bump version to 0.1.8-rc.0
Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ BUDDY_WORKSPACE=your-workspace
BUDDY_PROJECT=your-project
BUDDY_TOKEN=your-token

# Optional: API region (US, EU, or AP) - defaults to US
# Optional: API region (US, EU, or AS) - defaults to US
# BUDDY_REGION=US

# Optional: Custom API URL (for testing against different environments)
Expand Down
30 changes: 28 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,33 @@ Set required environment variables:
export BUDDY_TOKEN="your-api-token"
export BUDDY_WORKSPACE="your-workspace"
export BUDDY_PROJECT="your-project"
export BUDDY_REGION="US" # Optional: US (default), EU, or AP
export BUDDY_REGION="US" # Optional: US (default), EU, or AS
```

## Waiting for readiness

`Sandbox.create()` blocks until the sandbox has finished setup and reached
`RUNNING`, so the instance it returns is ready to use. While waiting it polls
the API on a backoff starting at 100ms and growing to 500ms.

Pass `wait: false` to skip the wait and drive it yourself. The instance you get
back carries everything the create call returned - `id`, `identifier`, `url`,
`resources` - but connection details are not settled yet.

```typescript
const sandbox = await Sandbox.create({ identifier: "my-sandbox", wait: false });

// ... do other work while the sandbox boots ...

await sandbox.waitUntilReady(); // setup_status: SUCCESS
await sandbox.waitUntilRunning(); // status: RUNNING
```

The waiters accept an explicit interval, which pins polling to that fixed value
instead of backing off:

```typescript
await sandbox.waitUntilRunning(500); // check every 500ms
```

## Apps
Expand Down Expand Up @@ -162,7 +188,7 @@ const sandbox = await Sandbox.create({
name: "My Sandbox",
os: "ubuntu:24.04",
connection: {
region: "EU" // US, EU, or AP
region: "EU" // US, EU, or AS
}
});
```
Expand Down
2 changes: 1 addition & 1 deletion examples/.env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ BUDDY_WORKSPACE=""
BUDDY_PROJECT=""

# Optional - defaults to US
BUDDY_REGION="US" # Valid values: US, EU, AP
BUDDY_REGION="US" # Valid values: US, EU, AS
19 changes: 13 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
{
"name": "@buddy-works/sandbox-sdk",
"version": "0.1.7",
"version": "0.1.8-rc.0",
"type": "module",
"description": "TypeScript SDK for managing sandboxes through the Buddy API",
"main": "./dist/index.mjs",
"types": "./dist/index.d.mts",
"main": "./dist/index.cjs",
"module": "./dist/index.mjs",
"types": "./dist/index.d.cts",
"exports": {
".": {
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
"import": {
"types": "./dist/index.d.mts",
"default": "./dist/index.mjs"
},
"require": {
"types": "./dist/index.d.cts",
"default": "./dist/index.cjs"
}
}
},
"files": [
Expand All @@ -34,7 +41,7 @@
"typescript"
],
"engines": {
"node": ">=20"
"node": "^20.19.0 || >=22.12.0"
},
"sideEffects": false,
"author": "Cyprian Zdebski <cyprian.zdebski@buddy.works>",
Expand Down
Loading