Buddy Sandbox Deployment
On-demand cloud environments for deploying and testing applications with public HTTP/TCP endpoints.
Prerequisites
Verify authentication with bdy whoami. If it fails, user must run bdy login in a separate terminal.
Workflow
1. Create Sandbox
Basic creation:
bdy sandbox create -i my-app --resources 2x4 --wait-for-running
With install commands (for dependencies):
bdy sandbox create -i my-app --resources 2x4 \ --install-command "apt-get update && apt-get install -y nodejs npm" \ --wait-for-configured
Options:
- •Resources:
1x2,2x4,4x8,8x16,12x24(CPUxRAM) - •
--wait-for-configured- wait until install commands complete - •
--wait-for-running- wait until sandbox is running, it does not wait for install commands to complete
2. Copy Files to Sandbox
bdy sandbox cp ./src my-app:/app > /dev/null 2>&1
Redirect output to /dev/null - without it, file copy floods stdout and breaks execution.
3. Execute Commands
Commands run in background by default.
With --wait for operations that must complete before next step, logs are visible in output:
bdy sandbox exec command my-app "cd /app && npm install" --wait
Without --wait for long-running processes (servers):
bdy sandbox exec command my-app "cd /app && npm start"
Check status and logs:
bdy sandbox exec list my-app # list commands bdy sandbox exec logs my-app <command-id> # view logs bdy sandbox exec logs my-app <command-id> --wait # wait for completion and show logs
Creating config files: Write locally, then copy - avoids escaping issues with heredoc through exec:
# 1. Write file locally
cat > config.json << 'EOF'
{"host": "localhost", "port": 3000}
EOF
# 2. Copy to sandbox
bdy sandbox cp config.json my-app:/app/ > /dev/null 2>&1
4. Add Endpoints (optional)
bdy sandbox endpoint add my-app -n web -e 3000
Application MUST bind to 0.0.0.0 (not 127.0.0.1 or localhost) - otherwise endpoint won't work.
With authentication:
bdy sandbox endpoint add my-app -n web -e 3000 --auth BASIC --username admin --password secret
Check endpoint URL:
bdy sandbox endpoint list my-app
Reverse proxy: Apps run behind reverse proxy. Handle X-Forwarded-Proto for correct HTTPS detection:
// Express.js
app.set('trust proxy', true);
// PHP if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') $_SERVER['HTTPS'] = 'on';
5. Copy Files from Sandbox
# Copy file from sandbox bdy sandbox cp my-app:/app/result.txt ./result.txt > /dev/null 2>&1 # Copy directory from sandbox bdy sandbox cp my-app:/app/output ./output > /dev/null 2>&1
When destination already exists, use --merge or --replace:
# Replace existing file/directory bdy sandbox cp my-app:/app/results ./results --replace > /dev/null 2>&1 # Merge into existing directory bdy sandbox cp my-app:/app/results ./results/ --merge > /dev/null 2>&1
Tip: Run bdy sandbox cp --help for detailed examples of merge/replace behavior with files and directories.
CRITICAL: Read Examples Before Deploying These Tech Stacks
- •Node.js
- •Python Flask
- •Node.js + PostgreSQL
- •WordPress + MySQL
- •phpMyAdmin - database management UI for WordPress/MySQL sandbox