Deploy and test applications in Buddy Sandbox cloud environments. Use when user asks about "deploy app", "create sandbox", "test in cloud", "isolated environment", "remote environment", "run app in sandbox", or mentions deploying, testing, or running applications in cloud sandboxes.
Resources
1Install
npx skillscat add sztwiorok/buddy-plugin/sandbox Install via the SkillsCat registry.
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-runningWith 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-configuredOptions:
- 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>&1Redirect 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" --waitWithout --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 logsCreating 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>&14. Add Endpoints (optional)
bdy sandbox endpoint add my-app -n web -e 3000Application 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 secretCheck endpoint URL:
bdy sandbox endpoint list my-appReverse 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>&1When 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>&1Tip: 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