Shikumi is an open-source software factory you run yourself. Sandboxed AI coding agents analyse, design, plan and build your GitHub issues, then open the pull requests. You stay in the loop and review every PR.
curl -fsSL https://github.com/theninjadojo/software-factory/releases/latest/download/install.sh | bashFrom a labelled issue to a reviewed pull request: the stages, the questions it asks you, the sandbox, the tests and the screens.
Music: “Aeon” by Theatre Of Delays, from Bensound (licence code GMFQWILTYDKRSDGP); “Blue Hill Valley” by Iros Young on Uppbeat (licence code BREVUEBWJMZP6RLF). Voices: ElevenLabs. The music and voices are used under their own licences, not the MIT licence.
Put a label on an issue. A team of specialist agents picks it up, each one handing a document to the next, until a pull request lands in front of you.
Writes requirements, acceptance criteria and the open questions, right on the ticket.
Plans flows, states and copy. With Claude Design canvases it even opens a draft PR of mockups.
Lays out the data model, API and the order to change repos in, before a line is written.
Edits your repos and opens one cross-linked PR per repo. All or nothing: if one patch is rejected, none are pushed.
A second agent, ideally from a different model family, reads the PRs and posts a structured review. It never approves or merges.
Watches your own CI, reports pass or fail, and can give the agent a fix round with the failing logs.
Not sure which stage a ticket needs? Add factory:auto and a classifier picks the next stage, skips the ones it can, and only stops to ask you when a person is genuinely needed.
Every ticket is a small drone travelling along the belts from intake to a pull request. See what is running, what is waiting for you and what failed, at a glance. You can even redraw the floor.

Alerts, Run and Skip buttons, answers to the agent's questions, and /status /pause /resume. Only your id is obeyed.
Web, mobile and shared packages are one workspace. One ticket can change them all.
Optionally build and test a patch on a Mac or any machine you own before it is pushed.
All optional, all off until you turn them on in Settings.
A register of test scenarios per repo, with pass and fail history. A Screens board shows every page as designed and as built, and you can mark one up and turn the notes into a ticket.
Spots a factory PR that conflicts with its base, merges the base in, and lets an agent resolve only the conflicted files. Never a rebase or a force-push.
Ranks each repo's factory tickets by priority and holds a build until the tickets it depends on are closed. Your own priority labels always win.
When a change touches a shared package and the apps that use it, the package PR goes first. The apps are built once it is merged and published.
Keep tickets in the factory itself instead of GitHub issues, or import an issue into it. Scheduled jobs and code-smell scans can file tickets on a timer.
Describe what you want to build. An interviewer agent asks a few rounds of questions, then recommends a stack, patterns and tests from a fixed catalogue.
We assume the agent will be prompt-injected by something it reads. So we made that not matter.
factory/* branches onlyAbout fifteen minutes once you have these. Setup asks for each one and checks it before going on.
curl and python3.claude setup-token also works.sudo, once, to create /srv/factory for the factory's data. No sudo? Set FACTORY_HOME to a folder you own.One command creates a shikumi folder, downloads the latest release and pulls the prebuilt images. Then a guided setup:
curl -fsSL https://github.com/theninjadojo/software-factory/releases/latest/download/install.sh | bash
Rather build it yourself? git clone the repo and run ./scripts/setup.sh. There is also a hardened native install on rootless Podman: see Operations.
The setup prints a URL, usually http://127.0.0.1:8787. Sign in with the password you chose. It starts in dry-run: the factory logs what it would do and writes nothing to GitHub.
On another computer? Tunnel to it: ssh -L 8787:127.0.0.1:8787 your-host, then open http://127.0.0.1:8787.
Pick something low-risk, like “Add a Contact link to the footer”, and label it. Start with factory:analyze to see the first agent at work.
Labels only count when someone with write access to the repo applies them.
When the decisions in the log look right, press Go live. Agents open pull requests, your CI runs, and you merge what you like. Protect main with required reviews: that is the real control.
The UI shows a banner when a new release is out. Update from the shikumi folder; it will not restart over a running agent, and rolls back if the new version does not start.
./scripts/update.sh # or a version: ./scripts/update.sh v0.39.0Stuck? Troubleshooting covers the install, the token, the UI and a first ticket that does nothing. Start with the health check:
docker compose run --rm -e FACTORY_CONFIG=/etc/factory/config.toml orchestrator python3 -m factory.ctl doctor
Seven short walkthroughs of the admin UI: setting it up and tuning the agents, tests and screens, planning the delivery, the machines it runs on, shipping across repos, where work comes from, and the floor itself.
Credentials and projects, then the stage agents, the classifier and its confidence threshold, the model for each ticket size, and the sandbox limits.
The Tests register and its runs on your own worker, failures first, then the Screens board: every page at every size, as designed beside as built, and baselines that guard a page on every build.
Tickets as a list or a board, local tickets, pinned priorities and the project manager that ranks the rest and records blockers, then the roadmap's milestones and steps, splitting a large ticket, the ticket review, schedules and ticket chat.
Verification workers that build and test every patch before it is pushed, the Server page and watchdog, backup and restore, updates that roll back, and other models through harnesses.
Release waves that ship the package before the apps that use it, merge conflicts resolved without a force-push, mockup gates before a build, and pull requests with their checks.
Comment triage on tickets the factory worked on, Claude Design links, code-smell scans that open tickets, interviews for a new project, and Telegram and Slack.
The live floor: tickets by plane, ship and drone, power stations and the Verify yard, time and weather, a failed station's call-out, and the layout editor.
Music: “Aeon” by Theatre Of Delays, from Bensound (licence code GMFQWILTYDKRSDGP); “Blue Hill Valley” by Iros Young on Uppbeat (licence code BREVUEBWJMZP6RLF). Voices: ElevenLabs. The music and voices are used under their own licences, not the MIT licence.
Shikumi is a working prototype, run for real on one multi-repo project. Know the edges before you point it at anything you care about.
The sandbox has no network, so agents can't install dependencies or run tests. Your CI is the real check, or add a verification worker.
A hijacked agent can still write bad code. The factory only pushes factory/* branches, but you decide what merges.
It is the supported route for unattended use. Subscription tokens work, but their terms are a gray area, so decide for yourself.
By default the factory works on one ticket at a time. Raise max_parallel if your plan allows more.
The optional classifier behind factory:auto uses an alpha API. On any error it falls back to your labels.
Self-hosted, no account with us, no telemetry. Read all of it, change all of it.
Install it, label one issue, and see what comes out the other end.