openlanes.

A few words in. A reviewed pull request out.

You write intent into spec.md. Specialist agents research, plan, build and review it. Merging and deploying stay with you.

$ ls .plans/

    There's no database. The folder name is the state. When an agent finishes, openlanes renames the folder, so git log becomes the audit trail.

    Ten stops from a spec to production

    Each state belongs to one agent, which works the plan and moves it to the next state. openlanes runs in rounds and stops when a full round changes nothing.

    1. Newleah-researcher
    2. Researchedyoda-writer
    3. Ready for Planningpalpatine-planner
    4. Plannedluke-backend
    5. Buildingluke-backend
    6. Building UIrey-frontend
    7. Ready for Reviewpull request opened
    8. In Reviewhansolo-reviewer
    9. Approved & MergedYou merge
    10. DeployedYou deploy

    Pick a lane for each plan

    Not every change needs a researcher. Set the lane in the frontmatter of spec.md, and openlanes skips the stops that lane doesn't make.

    Lane ResearchSpecPlanBuildReview
    fullA new feature, starting from a few words.
    Yes
    Yes
    Yes
    Yes
    Yes
    planYour spec stands as written.
    No
    No
    Yes
    Yes
    Yes
    quickA short, mechanical change.
    No
    No
    No
    r2d2-mechanic
    Yes

    Settings are applied in this order: command-line flag first, then the plan's spec.md, then .openlanes.yml, then the built-in default.

    When a decision is yours, the plan waits for you

    Agents don't guess at things only a person can decide. They write the question into blocked.md, rename the folder, and move on to other plans.

    Technical block
    An engineer answers.
    Product block
    Product answers.
    .plans/004.00-🅱️ → invoice-rounding/blocked.md## B2
    Should totals round per line item or once
    on the invoice total? Rounding per line can
    change the total by up to one cent per line.
    
    ## A2
    Decided 2026-10-12 by the CFO: round once,
    on the invoice total.

    Five commands cover most days

    openlanes is a Ruby gem. The control room needs Redis to run.

    openlanes init
    Writes .openlanes.yml with the project name, default lane and how many plans to work at once.
    openlanes create
    Starts a new plan folder from a few words.
    openlanes start
    Runs the agents and opens the control room at 127.0.0.1:11000. You answer blocks and add plans from the page.
    openlanes status
    Lists every plan with its state and pull request.
    openlanes run -n
    Shows which agent would pick up each plan, without changing anything.

    The crew

    Each agent runs on the model its job needs. Opus does the planning and back-end work, and Haiku handles the paperwork.

    • leah-researcherhaikuResearches a new idea across many sources.
    • yoda-writersonnetTurns research into a full spec.
    • palpatine-planneropusSplits the spec into units that can be built in parallel.
    • luke-backendopusBuilds data, domain and API, with tests.
    • rey-frontendsonnetBuilds the interface on top of that API.
    • r2d2-mechanichaikuMakes quick-lane changes on its own.
    • hansolo-reviewersonnetChecks the pull request against what the spec asked for.
    • lando-brokerhaikuFolds your answers back into the plan.
    • c3po-operatorhaikuAnswers questions about the run without changing anything.