Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Scotty Laravel Package

spatie/scotty

Scotty is a beautiful SSH task runner for running scripted tasks on remote servers. Define tasks and macros in a simple Scotty.sh (bash + annotations), then run them with clear output. Fully compatible with Laravel Envoy as a drop-in replacement.

View on GitHub
Deep Wiki
Context7

title: Running tasks weight: 4

Running a task or macro

scotty run deploy
scotty run cloneRepository

Scotty shows each task as it runs, with a step counter, elapsed time, and the command that's currently executing:

scotty run deploy

If a task fails, Scotty shows the output and stops. You'll immediately see what went wrong:

Task failure

Pretend mode

Want to see what would happen without actually running anything? Use --pretend:

scotty run deploy --pretend

This shows the SSH commands Scotty would execute, without connecting to any server.

Continue on failure

By default, Scotty stops at the first failed task. If you want it to keep going regardless:

scotty run deploy --continue

Summary mode

If you don't need to see all the output and just want to know whether things passed:

scotty run deploy --summary

This hides task output and only shows results. Failed tasks always show their output, even in summary mode.

Dynamic options

Declare every option you want to accept at the top of your Scotty.sh file with # [@option](https://github.com/option). There are three forms:

# [@option](https://github.com/option) staging          # boolean flag: $STAGING='1' when --staging is passed, unset otherwise
# [@option](https://github.com/option) branch=main      # optional value with a default: $BRANCH='main' unless overridden
# [@option](https://github.com/option) tag=             # required value: scotty errors if --tag=... isn't passed
scotty run deploy --branch=develop --tag=v1.2 --staging

Naming

An option named branch is exposed to your tasks as $BRANCH. The same rule applies to the CLI flag, the environment variable Scotty looks up, and the assignment written into the script preamble: each option has exactly one canonical bash name.

The transformation is:

  • Dashes become underscores (release-namerelease_name)
  • The result is uppercased (release_nameRELEASE_NAME)

So # [@option](https://github.com/option) release-name=latest declares a CLI flag --release-name=..., an env var $RELEASE_NAME, and a script variable $RELEASE_NAME — all one and the same. Flags that aren't declared are rejected with The "--foo" option does not exist.

Precedence

For value options, Scotty resolves each variable in this order:

  1. CLI flag (--branch=develop or --release-name=v42)
  2. Environment variable of the canonical bash name (BRANCH=develop scotty run deploy, RELEASE_NAME=v42 scotty run deploy)
  3. Declared default (# [@option](https://github.com/option) branch=main)

Boolean flags only read from the CLI — $STAGING is unset unless --staging was passed on this invocation.

Note: [@option](https://github.com/option) declarations are currently supported in the Scotty.sh (bash) format. Blade-format files ignore [@option](https://github.com/option) and continue to forward any passed CLI flag as a Blade variable.

Pause and resume

Sometimes you want to take a quick look at the server halfway through a deploy, or you just want to slow things down and watch each step more carefully. Press p at any point during execution. Scotty finishes the current task and then waits.

Pause and resume

Press Enter to continue with the next task, or Ctrl+C if you want to stop entirely.

Cancelling

You can press Ctrl+C at any time to cancel. Scotty restores the terminal and exits cleanly. Everything that was already output stays in your scrollback, so you can scroll up to see what happened.

Listing tasks

To see all available tasks and macros in your file:

scotty tasks

scotty tasks

SSH into a server

You can quickly SSH into any server defined in your Scotty file:

scotty ssh
scotty ssh remote

If only one server is defined, Scotty connects to it directly. With multiple servers, you'll get a selection prompt.

Creating a new file

scotty init

This prompts you to choose a format (bash or Blade) and a server host, then creates the file for you.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope