Quickstart
Run deskhand from inside your Laravel project — it resolves the repository from the current directory.
1. Provision a worktree
Section titled “1. Provision a worktree”deskhand up feature/billingup creates a git worktree for the branch (creating the branch if it doesn’t
exist) and provisions a fully isolated, verified environment:
- a copied
.env(and.env.testing) with a freshAPP_KEYand a taggedAPP_NAME, - an isolated database (SQLite by default),
- deterministic, slug-derived ports for the dev server and Vite,
composer install(and a JS install if a frontend is detected),- storage directories and
storage:link, - migrations, then a verification run of your Pest suite.
up reports success only if the suite is green. By default the worktree lands at
.claude/worktrees/<slug>/.
2. Work in it
Section titled “2. Work in it”Point an agent (or yourself) at the worktree directory and work normally:
cd .claude/worktrees/feature-billingRun several ups for several branches to have multiple agents working the same
codebase in parallel — each with its own database, ports, and .env, with no
collisions.
3. See what’s running
Section titled “3. See what’s running”deskhand list # tabular overview of all managed worktreesdeskhand status # health-check them (dirs, DBs, ports, env)4. Tear it down
Section titled “4. Tear it down”deskhand down feature/billingdown removes only what deskhand created: it drops the recorded databases,
removes the storage symlink (as a link), removes the worktree and prunes refs,
and deletes the branch (pass --keep-branch to keep it).
Idempotent re-runs
Section titled “Idempotent re-runs”Re-running up on an existing deskhand-managed worktree repairs it — it
re-materializes a missing .env, re-installs missing dependencies, re-creates a
missing database (without dropping data it already holds), and re-verifies. It
never duplicates registry entries or clobbers existing work.