Skip to content
open tomato/ grow-box
GitHub
grow-box pages
  1. grow-box
  2. Grow Box

Grow Box

Shell tools that prepare a sandbox machine, clone your repositories into it, and run one command there in isolation.

Grow Box prepares a sandbox: a machine where a project's code is cloned, installed and checked away from your own. It keeps the sandbox ready for the next run.

Status

WARN

Grow Box is an early version. It is a set of shell scripts you run from a clone of its repository, and it is not on npm. Use it on machines made for it: it installs packages and changes the host it runs on.

Today it covers the bottom of the stack: it makes or reaches the machine, installs the system tools and Bun, clones your repositories with read-only keys, and runs one command. A sandbox can be one of three kinds:

KindWhat it is
A local virtual machinean Ubuntu 24.04 VM made with multipass, a tool that runs Ubuntu VMs on your computer
A remote hosta machine you already have and reach over SSH
A containeran Ubuntu image with the tools, the Grow Box clone mounted, and a throwaway Docker daemon beside it; it clones nothing

Every launcher can run again after a failure, and it picks up where it stopped.

Who it is for

StepYour situationWhere
One personYou want a loop or a test suite to run in a VM you can throw awayGetting started
One person, no VMYou want a quick check in a containerGetting started
A machine you already haveYou want the same setup on a host you reach over SSH, with a way to reset itGetting started
A team, a project with its own needs, a shared boxlayered recipes, size presets and a shared seedcoming, below
A project that uses rafarafa checks that the services a run needs are thereWith rafa (coming)

Coming: layers, sizes and a seed

Two open specs describe what comes next. Neither is built, and neither names a date.

  • Layered recipes (grow-box#14). A sandbox would be built in eight layers, from the machine itself up to the project's command, each a recipe with a check that says it is done. grow-box up would build every layer; grow-box layer <n> would build one layer on a machine that has the ones below it. A team could then use layers 3 to 5 to prepare a CI runner someone else owns, and a project could add its own prerequisites as layer 6.
  • Size presets and a seed (grow-box#15). Five presets, xs to xl, each named by the machine it matches: xs for one loop on a small Raspberry Pi, lg for visual and browser checks. A seed would be a stopped box already built to layer 5, copied for each new sandbox (seed: clone) or shared by every project (seed: reuse).

How it connects to rafa

Grow Box stays its own repository. A planned rafa add-on, rafa-sandbox, would get the services a run needs from a Grow Box sandbox, among other sources. rafa's add-ons are modules rafa does not bundle, each published on its own. With rafa says what is planned.