homestead
v0.2.3
Published
Give every git worktree its own isolated dev environment — ports, database, .env — and fan GitHub issues out into parallel coding agents, one worktree each.
Readme
homestead
Two worktrees of the same repo both want port 3000, and they're both reaching for the same database. homestead gives each one its own ports, its own .env, its own setup — opened in a herdr pane.
homestead worktree my-featureA branch, provisioned and open, in one command.
An agent per issue
homestead issue 21 22 23Three worktrees, three panes, a coding agent booted in each and handed its issue.
Tear one down when you're done:
homestead close 21 # keep the branch, move the issue to review
homestead complete 21 # merged — remove the worktree and branch
homestead kill 21 # discard itSomeone else's PR
Pull a PR into a real worktree instead of reading a web diff:
homestead review 87 # read-only, Claude reviews it
homestead pr 87 # Claude continues it and pushes (same-repo only)Setup
bun add -g homestead
homestead initinit leaves you a homestead.config.ts — ports, env, setup steps. Fully typed, nothing installed:
import type { HomesteadConfig } from "./generated/homestead.config.types";
export default {
ports: [{ key: "PORT", base: 3000 }],
env: {
source: ".env",
derive: ({ slug }) => ({ DATABASE_URL: `.../${slug}` }),
},
setup: [{ label: "install", run: ["bun", "install"] }],
agent: { command: ["claude"], surface: "worktree" },
} satisfies HomesteadConfig;Greet each issue differently
agent.prompt runs per issue, so you can change the kickoff by what the issue looks like:
agent: {
command: ["claude"],
surface: "worktree",
prompt: ({ item }) =>
item.title.startsWith("bug:")
? `Reproduce and fix #${item.number}: ${item.title}`
: `Implement #${item.number}: ${item.title}`,
},It goes further than this — shared services, lifecycle hooks, more agent options. The example config covers the rest.
Requirements
git, a herdr session, Bun, and an authenticated gh for issue and PR flows.
