{"id":44378199,"url":"https://github.com/dave/millhouse","last_synced_at":"2026-02-11T21:35:32.549Z","repository":{"id":333961501,"uuid":"1139454872","full_name":"dave/millhouse","owner":"dave","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-30T00:51:52.000Z","size":467,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-30T08:54:50.434Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dave.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-22T01:28:22.000Z","updated_at":"2026-01-30T00:51:55.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dave/millhouse","commit_stats":null,"previous_names":["dave/millhouse"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dave/millhouse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dave%2Fmillhouse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dave%2Fmillhouse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dave%2Fmillhouse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dave%2Fmillhouse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dave","download_url":"https://codeload.github.com/dave/millhouse/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dave%2Fmillhouse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29345619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-11T21:35:31.282Z","updated_at":"2026-02-11T21:35:32.529Z","avatar_url":"https://github.com/dave.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Millhouse\n\n\u003cdiv\u003e\n  \u003cimg src=\"millhouse.jpg\" alt=\"Millhouse\"\u003e\n  \u003cp align=\"right\"\u003e\u003csub\u003e\u003ca href=\"https://www.reddit.com/r/simpsonsshitposting/s/ZB5cDcwnqU\"\u003eUnedited artwork\u003c/a\u003e by \u003ca href=\"https://www.shlives.net/\"\u003eshlives\u003c/a\u003e\u003c/sub\u003e\u003c/p\u003e\n\u003c/div\u003e\n\nMillhouse orchestrates Claude instances to implement large plans with hundreds of \nseparate work items. \n\nIt analyzes your plan, automatically works out the dependencies, and runs as much \nas possible in parallel. Each item runs in an isolated git worktree, and in a fresh \nClaude context.\n\nThis is intended for unattended operation - leave Millhouse running overnight!\n\n## Quick Start\n\n**1. Create a worklist**:\n\n```bash\nmillhouse init\n```\n\nAnalyzes the latest Claude plan and creates a worklist (`.millhouse/worklist.json`)\n\n**2. Run it:**\n\n```bash\nmillhouse run [--dangerously-skip-permissions]\n```\n\nThat's it. Millhouse builds a dependency graph, runs items in parallel where possible, \nand merges everything back when done.\n\n## Installation\n\n```bash\nnpm install -g millhouse\n```\n\n## Commands\n\n### millhouse init\n\nCreate a worklist from a Claude Code plan - Millhouse finds the most recent plan \nfor the current project.\n\n```bash\nmillhouse init\n```\n\n### millhouse list\n\nShow items in the current worklist.\n\n```bash\nmillhouse list [--verbose]\n```\n\nDisplays items grouped by status (ready, blocked, completed, failed) with dependency information.\n\n### millhouse run\n\nExecute pending worklist items with parallel workers.\n\n```bash\nmillhouse run                     # Run all pending items\n  -n 16                           # Use 16 parallel workers (default: 8)\n  --dry-run                       # Preview without executing\n  --dangerously-skip-permissions  # Pass to claude tool for reliable unattended execution\n```\n\nNote: Use `--dangerously-skip-permissions` with care!\n\n### millhouse save\n\nCreate GitHub issues from the worklist.\n\n```bash\nmillhouse save\n```\n\nCreates issues in dependency order, updates the worklist with issue numbers, and creates an index issue linking all items.\n\n### millhouse load\n\nLoad GitHub issues into the worklist.\n\n```bash\nmillhouse load              # Load all open issues\nmillhouse load 5            # Load issue #5 and linked issues\nmillhouse load 5,6,7        # Load issues 5, 6, 7 and all linked issues\n```\n\nUses Claude to analyze dependencies and expand sparse issues with testing instructions and acceptance criteria.\n\n### Other Commands\n\n```bash\nmillhouse status             # Show all runs\nmillhouse clean              # Clean up leftover state\n```\n\n## How It Works\n\n### Dependency Analysis\n\nClaude analyzes semantic relationships between plan items to determine dependencies.\n\n### Parallel Execution\n\nWork items are organized into a dependency graph. The scheduler:\n- Starts all items with no dependencies in parallel (up to concurrency limit)\n- As each item completes, unblocks dependent items\n- Dynamically schedules newly-unblocked items\n\n### Git Worktrees\n\nEach work item runs in complete isolation:\n- Creates a branch: `millhouse/run-{runId}-issue-{N}`\n- Creates a git worktree in `.millhouse/worktrees/`\n- Claude Code runs in that worktree with full autonomy\n- On completion, branches are merged back to the run branch\n- Run branch is merged into your current branch when done\n\n### Working Directory Requirements\n\nBefore starting a run, Millhouse checks that your working directory is clean to prevent merge conflicts:\n\n- **Gitignored files are allowed** - `.millhouse/` is automatically added to `.gitignore` on first use\n- **CLAUDE.md auto-commit** - If `CLAUDE.md` is the only untracked file, it's automatically committed\n- **Other changes must be committed** - Any other uncommitted changes or untracked files will block the run\n\nThis ensures the final merge back to your branch won't fail due to conflicts with local changes.\n\n## Creating Plans\n\nPlans are created interactively using Claude Code's plan mode:\n\n```bash\nclaude\n\u003e /plan Add user authentication with JWT\n```\n\nClaude will create a structured plan with numbered tasks and dependencies. The plan is saved to `~/.claude/plans/` and can then be loaded with `millhouse init`.\n\nFor best results, when discussing your plan with Claude:\n- Be specific about implementation details\n- Mention testing requirements\n- Clarify dependencies between tasks\n\n## Development Install\n\n```bash\ngit clone https://github.com/dave/millhouse.git\ncd millhouse\nnpm install\nnpm run build\nnpm link\n```\n\n## Prerequisites\n\n- Node.js 20+\n- Claude Code installed and authenticated\n- GitHub CLI (`gh`) authenticated (for GitHub commands)\n\n## Troubleshooting\n\n**\"Working directory is not clean\" error?**\n\nMillhouse requires a clean git state before runs. Options:\n- Commit your changes: `git add -A \u0026\u0026 git commit -m \"WIP\"`\n- Stash your changes: `git stash`\n- If only `CLAUDE.md` is untracked, it will be auto-committed\n\n**Worktree errors after interrupted run?**\n```bash\nmillhouse clean\n```\n\n**To see what Claude is doing:**\nUse `-d detailed` to start in detailed view, or press `v` to toggle during execution.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdave%2Fmillhouse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdave%2Fmillhouse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdave%2Fmillhouse/lists"}