Skip to content

Releases: serversideup/spin

v3.3.0

Choose a tag to compare

@jaydrogers jaydrogers released this 16 Jul 20:08

This release upgrades Spin's Ansible runtime to 2.21 and brings in v3.0.0 of the Spin Ansible Collection, which adds Ubuntu 26.04 LTS support, automatic swap, automatic hostnames, and more.

🤩 What's New

Ubuntu 26.04 LTS support

spin provision can now create and manage Ubuntu 26.04 servers on Hetzner, Vultr, and DigitalOcean. New .spin.yml files default to 26.04 hardware profiles.

Automatic swap

Servers get a right-sized swap file by default. Sizing follows Red Hat's recommendations and the Ubuntu SwapFaq, and swap you created yourself is never touched.

RAM Swap size
2 GB or less 2x RAM
2 to 8 GB Matches RAM
More than 8 GB Half of RAM (min 4 GB)

Capped at 8 GB by default. Configurable with swap_enabled, swap_size_mb, swap_max_size_mb, swap_force, swap_file_path, and swap_swappiness.

Automatic hostnames

Servers now get their OS hostname set from server_name in .spin.yml, and it survives reboots. Your shell prompt and monitoring will finally say ubuntu-2gb-ash-1 instead of whatever the cloud image left behind.

Ansible 2.21 runtime

spin provision and spin maintain now run on ansible-core 2.21 with zero deprecation warnings, thanks to the collection being fully migrated to modern Ansible standards.

Node 24 by default

Commands that use the Node image (like spin node) now default to node:24, the current LTS. You can pin a different version with the SPIN_NODE_IMAGE environment variable.

💪 Improvements

From the collection update, without changing anything in your .spin.yml:

  • Provisioning output shows your servers by name instead of IP address.
  • Time sync is handled by chrony (required on Ubuntu 26.04), with custom sources available via chrony_ntp_servers.
  • Targeting an environment with spin provision <environment> only creates the servers in that environment.
  • Clearer validation errors for server names and unmatched targets.

See the collection release notes for the full list, including bug fixes.

🐛 Bug Fixes

  • spin run and spin exec now preserve argument boundaries, so arguments containing spaces or quotes arrive at the container intact (#185). Commands like this work as expected now:

    spin run php php artisan tinker --execute 'echo "hi";'

    The same quoting fix was applied to spin up, spin down, spin ps, and spin prune.

⏫ Upgrade Notes

The collection updates automatically. Spin checks for collection updates once a day, or you can force it right away:

SPIN_FORCE_INSTALL_GALAXY_DEPS=true spin provision

Things you'll notice on your first provision after upgrading:

  • Existing servers get their hostname set from server_name. This is a one-time visible change.
  • A swap file is created on servers without existing swap. Set swap_enabled: false in .spin.yml to opt out.

If you've customized your Ansible setup beyond .spin.yml (custom playbooks, variable overrides, or --limit by IP address), review the collection's upgrade notes before provisioning.

⭐️ New Contributors

Full Changelog: v3.2.4...v3.3.0

v3.2.4

Choose a tag to compare

@jaydrogers jaydrogers released this 23 Jun 17:40

🤏 Minor improvement

  • Added SPIN_MCP_WORKING_DIRECTORY for use with Laravel Boost (helpful for Laravel mono-repos)

v3.2.3

Choose a tag to compare

@jaydrogers jaydrogers released this 16 Apr 21:35

🤖 Better AI context

  • Added better AI context for running Laravel test suites

v3.2.2

Choose a tag to compare

@jaydrogers jaydrogers released this 16 Apr 19:41

🤏 Minor improvement

  • Made an improvement for the update checks so we don't need to see them all the time
Screenshot 2026-04-16 at 14 40 18

v3.2.1

Choose a tag to compare

@jaydrogers jaydrogers released this 10 Apr 19:35

🐛 Bug fixes

  • Fixed CI/CD NPM package publishing issues

v3.2.0

Choose a tag to compare

@jaydrogers jaydrogers released this 10 Apr 19:03
38bc753

Spin now works with Laravel Boost 🚀

laravel-boost

Your AI coding agent now understands Spin out of the box. Install serversideup/spin, add three lines to .env, run boost:install, and your agent knows how to run commands, configure services, and deploy — no explaining required.

Getting started:

# Add to .env
BOOST_PHP_EXECUTABLE_PATH="./vendor/bin/spin-mcp-wait.sh ./vendor/bin/spin run -T php php"
BOOST_COMPOSER_EXECUTABLE_PATH="./vendor/bin/spin run php composer"
BOOST_NPM_EXECUTABLE_PATH="./vendor/bin/spin run node npm"

# Install Boost
spin run php php artisan boost:install

Includes a comprehensive skill covering all 26 commands, 13 Laravel service configurations, serversideup/php image setup, deployment workflows, and safety guardrails that prevent destructive commands without your confirmation.

How to use

See the Spin Pro docs on how to install and configure:

What's Changed

  • docs: Upgrade site to Nuxt 4 and Nuxt UI by @jaydrogers in #178
  • Bump @serversideup/project-switcher-bar from 0.0.4 to 0.0.5 in /docs by @dependabot[bot] in #180
  • Bump @serversideup/project-switcher-bar from 0.0.5 to 0.0.6 in /docs by @dependabot[bot] in #183
  • Add Laravel Boost support by @jaydrogers in #184

New Contributors

Full Changelog: v3.1.1...v3.2.0

v3.1.1

Choose a tag to compare

@jaydrogers jaydrogers released this 06 Nov 19:42

🐛 Bug fix

  • Fixed a bug with the line_in_file function where the exact action was not escaping special characters correctly

Full Changelog: v3.1.0...v3.1.1

v3.1.0

Choose a tag to compare

@jaydrogers jaydrogers released this 06 Nov 18:22

💪 Minor improvements

  • Added ability to automated SSH tunnel clean up with spin deploy
  • Adjusted logic of .dockerignore file creation to improve ignore capabilities

Full Changelog: v3.0.4...v3.1.0

v3.0.4

Choose a tag to compare

@jaydrogers jaydrogers released this 08 Sep 19:30

🐛 Bug fix

  • Fixed an issue with spin version when installed as a composer or node dependency where the version would incorrectly display

Full Changelog: v3.0.3...v3.0.4

v3.0.3

Choose a tag to compare

@jaydrogers jaydrogers released this 06 Aug 17:55
731de18

🐛 Bug fixes

  • Fixed issue with spin configure not working correctly with WSL2 (#166)
  • Removed a warning while running spin configure on WSL2 machines (#165)

🧼 Cleanup

  • Improved some variable naming for spin deploy

Full Changelog: v3.0.2...v3.0.3