Laravel workspaces, without the fleet

Every checkout, ready to work.

Harbour gives each Laravel clone or Git worktree its own ports, database, Redis namespaces, sessions, queues, Vite state, and optional Docker resources—while shared infrastructure stays shared.

Worktrees using isolated namespaces on shared infrastructure

Lightweight

Run PHP and Node natively. Reuse PostgreSQL, Redis, Mailpit, and other infrastructure.

Isolated

Databases, ports, queues, cache, sessions, and Vite hot files stay workspace-specific.

Safe teardown

Harbour removes only resources backed by persisted ownership evidence.

The everyday workflow

Project maintainers install Harbour once:

composer require --dev pickeringtech/harbour
php artisan workspace:install

The install command first asks whether to detect Sail, Compose, Herd, and Laravel environment choices or let you choose components manually. Manual mode uses a multi-select for optional services and can generate and start a workspace-owned Docker Compose stack. With no existing infrastructure, detection offers a zero-dependency SQLite/file/log setup.

After those generated project files are reviewed and committed, every developer or agent uses:

composer install
composer workspace:setup

composer install installs the checkout's PHP dependencies. composer workspace:setup creates and configures only that checkout's isolated local environment.

When the checkout is about to be removed:

composer workspace:teardown -- --force

This removes Harbour-owned resources and restores the .env that existed before setup. --force skips the prompt; it never bypasses ownership checks.

Clear ownership boundaries

Harbour does not create worktrees, manage branches or agents, install PHP or Node, or supervise long-running processes. Git, Orca, Herdr, and humans own the checkout. Harbour owns the Laravel environment inside it.

Learn by concern