Skip to content

CLI reference

splash                              # sync this checkout (the post-checkout hook runs this)
splash --version
splash sync [--force] [--setup N]   # pick free ports, resolve vars, write splashdown.env
splash status [all]                 # resources + targets + which ports are bound right now
splash init [preset] [--rescan] [--no-sync] [--loader=…] [--overwrite]   # scaffold + first sync
splash doctor [--fix] [--framework=…]

splash run     [type] [variant]     # boot target + build + launch
splash start   [type] [variant]     # boot target (no build/launch)
splash stop    [type] [variant]     # shut down
splash destroy [type] [variant]     # delete this checkout's target instance

splash target                       # list declared targets + live state
splash target add/remove <type> <variant> …
splash target refresh [ios|android] # recreate stale sims/emulators
splash target prune   [ios|android] # destroy sims/emulators splashdown didn't create

splash env                          # list this checkout's resolved values
splash env get KEY | set KEY=VALUE | release [KEY]

splash gc                           # drop dead-checkout entries (ports, vars, sims)

splash completion [bash|zsh]        # print shell-completion script (eval it in your rc)

splash status answers "what's the state of this checkout?": resolved env vars (with [in use] / [free] for port-typed resources), declared device variants and whether each is booted, and a count of stale registry rows. splash sync --force reallocates ports. The auto-reallocation lives in Registry.allocate_port, so plain splash does the same thing. splash init scaffolds the project files and then runs the first sync so the current checkout has values immediately (--no-sync scaffolds only). splash init --rescan re-scans the filesystem, useful after adding a new app to a monorepo. Available presets for splash init: rn, flutter, server (alias nextjs), electron, ios-native, android-native, minimal.