Search by

refs / sputnik

Modern PHP TaskRunner with class-based tasks, Nette DI, and template engine

Maintainers

Package info

github.com/refsz/sputnik

pkg:composer/refs/sputnik

Transparency log

Statistics

Installs: 7

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 6

0.2.5 2026-08-25 18:39 UTC

README

CI Latest Release Packagist License: MIT PHP

A PHP TaskRunner for project automation. Class-based tasks, context switching, environment-aware execution.

What it does

Sputnik runs tasks defined as PHP classes. Each task is a single class with attributes -- no YAML actions, no function dumps, no DSL. You write normal PHP, Sputnik handles discovery, CLI, contexts, and shell routing.

#[Task(name: 'deploy', description: 'Deploy the application', environment: 'container')]
final class DeployTask implements TaskInterface
{
    public function __invoke(TaskContext $ctx): TaskResult
    {
        $ctx->shell('rsync -avz ./dist/ {{ deployPath }}/');
        $ctx->exec(['php', 'artisan', 'migrate', '--force']);

        return TaskResult::success();
    }
}
$ php sputnik.phar deploy

๐Ÿ›ฐ  Sputnik v0.2.0 โ”‚ .sputnik.dist.neon โ”‚ prod

โ–ธ deploy ยท Deploy the application

  > rsync -avz ./dist/ /var/www/app/
  > php artisan migrate --force
โœ“ Done (1.24s)

Install

PHAR (recommended)

curl -Lo sputnik.phar https://github.com/refsz/sputnik/releases/latest/download/sputnik.phar
chmod +x sputnik.phar
php sputnik.phar init

Verify the download:

curl -Lo sputnik.phar.sha256 https://github.com/refsz/sputnik/releases/latest/download/sputnik.phar.sha256
sha256sum -c sputnik.phar.sha256

For IDE autocompletion you can additionally install via Composer: composer require --dev refs/sputnik. See Installation for details.

Key concepts

Tasks are PHP classes with #[Task] attributes. Options, arguments, and shell execution are built in. Writing Tasks

Contexts let you define named configurations -- different variables, different behavior. Switch with one command, no code changes. Contexts

Templates render files like .env with {{ variable }} syntax. Re-rendered automatically on context switch. Templates

Secrets are variables Sputnik refuses to print. Declare one under variables.secrets and every value it takes is replaced with *** at the display boundary -- echoed commands, streamed output, log lines. Secrets

Environments route commands transparently between host and container. A task marked environment: 'container' is automatically wrapped with your Docker executor. Environments

Links