A small CLI tool to spin up a temporary DigitalOcean VPS for safe remote Zed coding sessions. It allows installing any dependencies you need and running Zed Agent without worrying about safety. When no longer needed, it takes just one command to destroy the box.
- End-to-end automated setup and teardown - even Zed is opened for you.
- Automatically copies your local files to the box on creation and back to your machine on deletion so you are ready to code asap and never lose your work.
- Updates, installs packages and reboots the box after creation if needed so you work on an a fully up-to-date fresh box.
- Automatically adds all SSH keys from your DigitalOcean to the box. Private keys are NEVER accessed or stored.
- Doesn't require adding public SSH keys to
known_hostsso you don't have lots of temporary keys there. - Allows configuring VPS image, size and region - get a tiny droplet or a beast of a server if required.
- Always waits until the box is fully ready to go - no manual checking necessary.
abox- Simply run
aboxin your terminal in any directory to create a box. - Run it again in the same directory to destroy the box.
That's it!
- Runs in a Deno sandbox with only necessary permissions, you can even compile it with no pre-approved permissions at all.
- Just one third-party dependency - dots-wrapper, a simple DigitalOcean API wrapper.
- Grab the latest binary for your platform from GitHub Releases.
- Give it executable permissions:
chmod +x abox- Move it to a directory in your
PATH(sudowill request your password):
sudo mv abox /usr/local/bin/aboxIf your OS doesn't want to execute the binary, allow execution in security settings and confirm when opening with "Open Anyway".
If you have any security doubts, check the GitHub Workflow for building the binaries or use the second method to build from source - Deno will sign the binary with your ad-hoc certificate so you won't have to deal with OS security settings.
Make sure you have Deno installed.
Run the installation script in the project directory:
deno task installThat's it!
This task will compile a binary for your platform and place it in the bin directory (sudo is needed for that).
By default, the binary sandbox will be configured with these flags, but you can limit the permissions further if needed.
deno compile --allow-env --allow-read --allow-write=abox.json --allow-net=api.digitalocean.com:443 --allow-run=ssh,scp,zedThe only thing you need to do is create a DigitalOcean API token with the following permissions:
- Create Access: droplet
- Read Access: droplet / ssh_key
- Update Access: droplet
- Delete Access: droplet
Add the token to a configuration file and put it in your home directory ~/.abox.json:
{
"TOKEN": "your_token_here"
}Full options with default values:
{
"TOKEN": "your_token_here"
"REGION": "lon1"
"SIZE": "s-2vcpu-4gb-amd"
"IMAGE": "ubuntu-25-04-x64"
}- Gets all your SSH key ids from DigitalOcean
- Creates a droplet with the specified image, size, region and includes a cloud init script
- Waits for the droplet to spin up, gets the IP address
- Waits for the droplet to finish cloud init updates/installs/reboot
- Creates a working directory on the droplet
- Copies local files to the droplet
- Opens Zed on your machine pointing at the working directory on the droplet
- After
aboxis ran again, remote working directory is copied back to your local machine - Droplet is destroyed
After box creation, abox creates a abox.json file in the project directory with droplet ID and IP address.
It gets deleted after the box is destroyed.
General:
- Create a proper non-admin user instead of using the
rootaccount - Windows support
Customisation:
- Custom cloud config or ability to disable its parts (no upgrades, no Deno, etc)
- Custom IDE command
- Allow disabling IDE command completely
- Allow disabling file transfers
