<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Dutopilot guides</title>
    <link>https://dutopilot.com/guides/</link>
    <description>Guides on running AI delivery agents against your backlog: from ticket to merged pull request, bringing your own subscription, and choosing approvals.</description>
    <language>en</language>
    <atom:link href="https://dutopilot.com/guides/feed.xml" rel="self" type="application/rss+xml" />
        <item><title>How Dutopilot builds Dutopilot</title><link>https://dutopilot.com/guides/how-dutopilot-builds-dutopilot/</link><guid>https://dutopilot.com/guides/how-dutopilot-builds-dutopilot/</guid><pubDate>Sat, 14 Nov 2026 13:00:00 +0000</pubDate><category>featured</category><description>Dutopilot's own product is planned, built, reviewed and merged by Dutopilot agents from its project board. The setup, a ticket's life, and the real numbers.</description><content:encoded><![CDATA[<p>Most companies that sell software delivery tools build their own product the old way and then ask you to trust the tool. We do it the other way round. Dutopilot's own product is built by Dutopilot. Its repository is connected to the hosted service exactly like a customer's would be. Tickets sit on a project board, and agents plan them, build them, review them, test them, fix them and merge them. Every merge to the main branch deploys to production.</p>
<div class="story-stats">
<p class="story-stats-k">Dutopilot's own product, since 29 September</p>
<div class="story-stats-row story-stats-own">
<div class="story-stat"><span class="story-stat-n">497</span> <span class="story-stat-l">changes merged into the product by its agents, on their own</span></div>
<div class="story-stat"><span class="story-stat-n"><bdi>375+</bdi></span> <span class="story-stat-l">tickets closed</span></div>
</div>
<p class="story-stats-k">Our first client projects, on the current release since 19 August</p>
<div class="story-stats-row">
<div class="story-stat"><span class="story-stat-n">54 min</span> <span class="story-stat-l">median time from first commit to merge</span></div>
<div class="story-stat"><span class="story-stat-n">0.4%</span> <span class="story-stat-l">of commits on the work branches were written by a person</span></div>
<div class="story-stat"><span class="story-stat-n">150</span> <span class="story-stat-l">stage failures repaired by the agents themselves</span></div>
</div>
<p class="story-stats-more"><a href="#numbers">How we count these, in The numbers</a></p>
</div>
<p>This article walks through how that works in practice: the setup, what happens to a single ticket, how dozens of changes from people and agents land on the same main branch every day without queueing behind each other, what happens when something breaks, and what the people on our side still do. It also shows what we measured, and what we learned that you can use in your own team.</p>
<p>A word on what Dutopilot is, so the rest makes sense. Dutopilot is a managed service and software as a service in one. It is a layer above coding agents: it runs Claude Code, Codex, OpenCode and Oh My Pi on your own AI account, on dedicated cloud infrastructure, and every customer gets a Forward Deployed Engineer who sets it up around your backlog and stays with you. Each agent is a Dutopilot virtual team member, and each one can run hundreds of parallel sub-agents, on every plan. You keep the project board you already use. The agents do the delivery work.</p>
<nav class="guide-toc" aria-label="In this article"><p class="guide-toc-title">In this article</p><ol><li><a href="#why">Why build the product with itself</a></li><li><a href="#setup">The setup: a board, a repository and a clear split of work</a></li><li><a href="#life">A ticket's life, step by step</a></li><li><a href="#scale">Working at scale: many tickets, many people, one main branch</a></li><li><a href="#wrong">When things go wrong</a></li><li><a href="#people">What people still do</a></li><li><a href="#numbers">The numbers</a></li><li><a href="#lessons">Lessons learned, for your team</a></li><li><a href="#team">What this means for your team</a></li><li><a href="#faq">Frequently asked questions</a></li></ol></nav>
<h2 id="why">Why build the product with itself</h2>
<p>There are three reasons, and the first one is not marketing.</p>
<p>The first reason is honesty. A delivery tool that has never carried its own maker's work has not been tested on the hardest customer there is: one that changes its mind daily, files vague tickets, merges in a hurry and notices every slow minute. When our own product waits on a stuck review, we feel it that afternoon. That pressure is a better test suite than any we could write on purpose.</p>
<p>The second reason is feedback speed. When an agent stalls, loops or produces a change we would not accept, the person who can fix Dutopilot is the same person who just felt the problem. There is no support queue between the pain and the repair. A defect we find becomes a ticket on the board right away, and the fix follows through the same pipeline.</p>
<p>The third reason is proof you can inspect. When we say the pipeline holds up under many changes at once, we are describing our own repository, where people and agents merge into the same main branch all day. We are not describing a demo project built to look good.</p>
<p>None of this means every customer should expect our exact setup. Customers choose their own approvals, their own board and their own repositories. What carries over is the method: a ticket goes in, a verified and merged change comes out, and a person steps in only at the gates that matter to you.</p>
<figure class="guide-figure"><img src="https://dutopilot.com/media/guides/how-dutopilot-builds-dutopilot/loop.svg" alt="Six connected steps in a loop: a project board, a plan, a build, a review, a merge to main and a release to production, with a return arrow from production back to the board." width="1200" height="420"><figcaption>The loop: board, plan, build, review, merge, production, and a return path where problems become new tickets on the board.</figcaption></figure>
<div class="guide-callout guide-cta">
<p class="guide-cta-h">See it on your own backlog</p>
<p>Book a call and a Forward Deployed Engineer will walk you through how this setup would look on one of your projects. Or start free with the Solo plan.</p>
<p class="guide-cta-btns"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></p>
</div>
<h2 id="setup">The setup: a board, a repository and a clear split of work</h2>
<p>The setup is deliberately plain, because a customer has to be able to copy it.</p>
<h3>The project board</h3>
<p>All work starts as a ticket on a project board. The board is where people say what they want: a new capability, a fix, a change to wording. A ticket is written in ordinary language, the way you would brief a colleague. It does not need to be a specification. If something important is missing, the planning step asks.</p>
<h3>The repository</h3>
<p>The product's code lives in one repository, which the hosted Dutopilot service reads and changes through a permission grant, the same way it would for a customer. Our repository gets no special back door. If a step works for us, it works through the same path your repository would use.</p>
<p>Each change is a small, separate piece of work that goes straight to the main branch. We do not keep long-lived integration branches or a big combined release change at the end. Smaller pieces mean smaller reviews, easier undoing and no pile-up where one late piece blocks ten finished ones.</p>
<h3>What people do and what agents do</h3>
<p>The division is simple to say. People decide what is worth doing and where a human must say yes. Agents do the delivery work in between.</p>
<figure class="guide-figure"><img src="https://dutopilot.com/media/guides/how-dutopilot-builds-dutopilot/roles.svg" alt="Two panels side by side: on the left, people choose the work and give approvals; on the right, a group of agents carries out the delivery steps." width="1200" height="420"><figcaption>People choose the work and approve where they decided to. Agents carry out everything in between.</figcaption></figure>
<ul>
<li><strong>People:</strong> write and prioritise tickets on the board, answer questions an agent could not settle alone, approve the steps they chose to keep behind a human gate, and make product decisions.</li>
<li><strong>Agents:</strong> refine the ticket, plan it, split it when it is large, write the code and the tests, review each other's work, run the quality checks, repair failures, merge and deploy.</li>
</ul>
<p>Behind this sit your AI accounts. Dutopilot runs Claude Code, Codex, OpenCode and Oh My Pi on your own subscription or key, so the cost of the AI work goes to an account you control and you see exactly where it goes. The agents in your plan do not share one narrow pipe. Each plan agent behaves like a Dutopilot virtual team member that can hand parts of a job to as many parallel sub-agents as the work needs.</p>
<h2 id="life">A ticket's life, step by step</h2>
<p>Here is what happens to one ticket, from the moment it is ready to the moment it is live. A ticket passes through nine stages in all: architect, planner, implementer, gate, three reviewers, autofixer and QA. We describe the path in the order you would see it. The seven numbered steps below group those nine stages, and the eight cards in the picture show the same journey.</p>
<figure class="guide-figure"><img src="https://dutopilot.com/media/guides/how-dutopilot-builds-dutopilot/lifecycle.svg" alt="Eight cards in a row: the ticket, the plan, the build in a sandbox, the review, the quality checks, the repair step, the merge and the release, with an arrow looping from repair back to the build." width="1200" height="360"><figcaption>A ticket's journey. If a check fails, the work loops from repair back to build until it passes.</figcaption></figure>
<h3>1. Refining and planning</h3>
<p>When a ticket is marked ready, an agent reads it together with the parts of the repository it touches. Its first job is not to write code. Its first job is to check that the ticket can be built: is the goal clear, is anything contradictory, is a decision missing that only a person can make?</p>
<p>If the ticket is clear, an architect agent and a planner agent turn it into a plan: what to change, in which order, what could go wrong and how to know it worked. A large ticket is split into smaller tickets, each one something that can be built, reviewed and shipped on its own. The split matters: small tickets finish faster and cost less to review, and a problem in one does not hold back the rest.</p>
<p>If something only a person can decide is missing, the agent asks, in plain words, on the ticket. A reply in the person's own words is enough. Nobody has to learn special phrases.</p>
<h3>2. Building in an isolated sandbox</h3>
<p>Building happens on dedicated cloud infrastructure, in a sandbox made for that one ticket. The sandbox gets a fresh copy of the repository, does the work and is thrown away afterwards. Nothing from one ticket's run can leak into another's.</p>
<p>Inside the sandbox, a coding agent (Claude Code, Codex, OpenCode or Oh My Pi, on your account) writes the change and the tests that go with it. Because the work is split across sub-agents, one can handle the data side while another handles the screen, and a third writes the tests, all in the same sandbox. Before it writes anything, the sandbox merges the latest main branch into its working copy. We come back to why that moment matters in the section on working at scale.</p>
<h3>3. Independent review</h3>
<p>When the build is done, the change is opened as a pull request, which is the standard way to propose a change for review. The reviewers are separate agents that did not write the code. They read the change with fresh eyes, compare it with the ticket and with the plan, and look for mistakes, missed cases, risky shortcuts and changes that wander beyond the ticket.</p>
<p>The point of separating the reviewer from the author is the same as with people. An author reads what they meant to write. A reviewer reads what is actually there.</p>
<h3>4. Quality gates</h3>
<p>Alongside the review, a set of quality gates run. A gate is an automatic check with a clear pass or fail: the tests, the type and style checks, a check that the change touches what the plan said it would, and checks on things like security and the look of the pages.</p>
<h3>5. The self-repair loop</h3>
<p>When a reviewer finds a problem or a gate fails, the ticket does not go back to a person. It goes to a repair stage. A fixing agent reads the exact failure, changes the code, and sends the change back through review and the gates. This loop repeats as long as it is making progress. If the same failure keeps coming back without progress, the approach changes instead of trying the same thing again, and if it still cannot be resolved the ticket stops with a plain explanation that a person can act on.</p>
<figure class="guide-figure"><img src="https://dutopilot.com/media/guides/how-dutopilot-builds-dutopilot/repair.svg" alt="A failed check leads to a review of the failure, a fix, a fresh check and a merge, with a loop back to the fix. A flagged problem also becomes a new card on the project board." width="1200" height="360"><figcaption>Failures are repaired automatically and rechecked. A problem Dutopilot finds in itself becomes a new ticket on the board.</figcaption></figure>
<h3>6. Merge</h3>
<p>When every gate is green and the review is clean, the change merges into main. Merging is squash-and-merge, so each ticket becomes one clean entry in the history, which makes it easy to read and easy to undo. If you chose to keep a human approval before merging, the ticket waits for that approval instead and tells the person exactly what they are approving.</p>
<h3>7. Deploy</h3>
<p>For our own product, a merge to main is a release: the deployment starts on its own and puts the change into production. The ticket is closed only when the work is actually live and checked, not when the pull request merges. If a deployment check fails, that is treated like any other failure: it comes back as work for the agents, not as a message that waits for a person to notice. On client projects the work stops at staging or test, a person releases, and the ticket finishes there.</p>
<h3>A worked example (illustrative)</h3>
<div class="guide-callout">
<p><strong>Illustrative example.</strong> This is a made-up ticket to show the flow. It is not a record of one specific change.</p>
<p><strong>The ticket:</strong> "Show the next billing date on the account page, so customers stop asking support when they are charged next."</p>
<p><strong>Planning.</strong> The agent reads the ticket and the account page code. It notices the ticket does not say what to show for customers on a free plan, and asks one question on the ticket. A product person answers in one sentence: show nothing. The architect writes a short plan: add the date to the account data, show it on the page, hide it for free plans, add tests for both cases. The change is small enough to ship as a single ticket.</p>
<p><strong>Building.</strong> A sandbox starts with a fresh copy of the repository and merges the latest main into it. A coding agent adds the field, a second sub-agent updates the page, a third writes the tests. It opens a pull request.</p>
<p><strong>Review and gates.</strong> A reviewer agent points out that the date is shown in one fixed format, even though the product speaks five languages. A gate also reports a missing test for a customer whose plan renews on the last day of a month. Both findings go to the repair stage.</p>
<p><strong>Repair.</strong> A fixing agent uses the language-aware date formatting the product already has, and adds the missing test. The change goes through review and the gates again, and everything is green.</p>
<p><strong>Merge and deploy.</strong> The change merges into main, the release goes out and the check on the live page passes. The ticket closes. No person opened a code editor, and the only human input was one sentence on the ticket.</p>
</div>
<div class="guide-callout guide-cta">
<p class="guide-cta-h">Want this loop on your project board?</p>
<p>A Forward Deployed Engineer sets up the board, the repository and the approvals you want, and stays with you while the agents take over the delivery work. Book a call, or start free with the Solo plan.</p>
<p class="guide-cta-btns"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></p>
</div>
<h2 id="scale">Working at scale: many tickets, many people, one main branch</h2>
<p>A single ticket moving through a clean pipeline is the easy case. The real test is many tickets at once while people also merge into the same repository.</p>
<p>On our repository, many tickets are in flight at the same time, each in its own sandbox, and our own people merge their own changes into main throughout the day. Every one of those merges changes what main looks like. A system that works only when one change moves at a time would spend most of its life waiting. Each Dutopilot virtual team member can run hundreds of parallel sub-agents, on every plan.</p>
<figure class="guide-figure"><img src="https://dutopilot.com/media/guides/how-dutopilot-builds-dutopilot/parallel.svg" alt="Several branches leave one main line at different times, each with a marker where the latest main is merged in, then rejoin main. People's changes also land on the same main line." width="1200" height="420"><figcaption>Many branches, one main. Each piece of work brings the latest main into its own copy at the moment it needs it, and then merges back.</figcaption></figure>
<h3>Why nothing waits for a branch to catch up</h3>
<p>A common rule in software teams says a branch must be up to date with main before it can merge. With a handful of people that is a small nuisance. With dozens of changes arriving all day it becomes a trap: the moment any change merges, every other open change is out of date again, and has to be refreshed and re-checked. Under heavy traffic that loop never ends, and people spend their day pressing update buttons.</p>
<p>We refuse that rule on purpose. Instead, every agent merges the latest main into its own work at the moment it needs it: before it writes code, and again right before the final checks. The agent establishes for itself that its work is compatible with the current main, instead of waiting for anyone to refresh its branch.</p>
<p>If main moved while the work was in progress and the two changes do not touch each other, nothing more is needed. If they do collide, the agent resolves the conflict in its own copy, reruns the checks, and carries on. The cost is paid by the one change that actually collided, and only when it collides. Everyone else keeps moving.</p>
<h3>The same idea applies to every shared resource</h3>
<p>We apply the same test to everything that several changes share: the pool of sandboxes, the number of requests we may send to the code host, the AI accounts, the queue of work. The questions are always the same. Does this still work with dozens of writers at once? Does every wait end on its own? Does the cost of each cycle grow with the amount of active work, rather than with the size of the whole backlog?</p>
<p>A design that is correct for one ticket at a time but stalls or needs a person when many tickets arrive is, for us, a wrong design, however safe it looks. That is the first test every decision on our own product has to pass, and it is the reason the setup holds up when a customer connects a busy repository.</p>
<p>How many tickets one AI account can carry is in Today's numbers, further down.</p>
<h2 id="wrong">When things go wrong</h2>
<p>Things go wrong in any delivery pipeline. A test that was already flaky fails, a service is briefly unavailable, an agent misreads a ticket, a change collides with another. What matters is what happens next, and whether a person has to notice first.</p>
<h3>Self-repair first</h3>
<p>Most failures are handled by the repair loop described above. A failed check is read, understood and fixed by an agent, and then checked again. On our first client projects, agents repaired 150 stage failures by themselves (the figures are in the numbers section). Each of those is a moment where, in a more traditional setup, a person would have had to notice a red build, work out whose problem it was and chase a fix.</p>
<h3>Defects Dutopilot finds in itself become tickets</h3>
<p>Dutopilot watches its own behaviour. When it detects a defect in itself, for example a ticket that sits waiting for no reason, or a step that keeps failing the same way, it reports the problem as a ticket on its own project board, tagged so it is clear that it came from the system. That ticket is then planned, built, reviewed and merged by the same agents like any other. The loop in the diagram at the top is real: production behaviour flows back into the board, and from there into the next change.</p>
<p>This is also why we trust the setup in our own repository. A problem does not live in somebody's memory or in a chat thread. It is a ticket, with an owner, a plan and a status.</p>
<p>Some real examples of defects Dutopilot reported against itself and then fixed. It filed its own report that a scheduler loop had hung, and fixed it. The dashboard once told a customer to fix their setup when the fault was Dutopilot's own, and it corrected that so the right party is blamed.</p>
<h3>Stops a person can resolve alone</h3>
<p>Sometimes the right move is to stop and ask. A decision is missing, a choice has consequences, or a gate you selected needs a human. When Dutopilot stops, we hold it to a standard we call self-serve: the person reading the notice must be able to resolve the stop on their own, with no documentation and no help from us.</p>
<ul>
<li>The message says in plain words what happened, before any technical detail.</li>
<li>It says whose problem it is: their change, or the setup.</li>
<li>It offers the one thing they can do. Where there is a sensible default, it takes it and tells them, with an easy way to undo.</li>
<li>A reply in the person's own words works. There is no special command and no hand editing of anything.</li>
</ul>
<p>The technical detail (the name of the check, the setting involved) comes last, for the administrator. A notice that must be shortened loses the technical detail first and never the plain explanation.</p>
<h2 id="people">What people still do</h2>
<p>Automation that pretends people are unnecessary is not credible, and it is not what we built. People still do the three things that only people can do.</p>
<ul>
<li><strong>Choose the work.</strong> What goes on the board, in what order, and what is not worth doing at all. Priority is a business decision. An agent can estimate effort. It cannot know what your market needs this quarter.</li>
<li><strong>Approve where you chose to.</strong> You pick which steps stay behind a human gate: a plan, a design, a merge, a release. A gate you select is a real gate. The agents wait for it and tell the approver exactly what they are approving. Steps you did not select are decided by Dutopilot when it is confident, with a clear record and an easy way to reverse it.</li>
<li><strong>Make product decisions.</strong> Whether a feature exists, how it should feel, which trade-off to accept. Agents turn those decisions into working software. They do not replace the judgment behind them.</li>
</ul>
<p>The effect is a different kind of workday. People spend their time on decisions and priorities. They read short explanations instead of long diffs. They stop babysitting builds.</p>
<h2 id="numbers">The numbers</h2>
<p>Numbers only help if they are specific about what they count. We give two separate sets and we do not blend them.</p>
<h3>Across our first client projects</h3>
<p>These figures come from our first client projects. They were not measured on Dutopilot's own repository, and we do not present them as if they were. Numbers for our own repository are measured separately and appear in their own box below.</p>
<h3>Since June 2026</h3>
<p>Since June 2026, agents have merged 127 tickets and completed 539 agent tasks across our client projects. Those projects are serpent.cloud, the website of a services company, and a monorepo that combines Salesforce and a native iOS app. The last two are not named here. Each project has its own setup and its own approvals, and on client projects the work stops at staging or test and a person decides when to release. Read the figures as breadth, not as one project's pace.</p>
<h3>On the current release, since 19 August</h3>
<p>A second, narrower set was measured on the same client projects with the current release, from 19 August onwards:</p>
<ul>
<li><strong>0.4%</strong> of commits on the work branches were written by a human. The rest were written by agents.</li>
<li><strong>2%</strong> of tickets needed a human approval.</li>
<li><strong>54 minutes</strong> was the median time from first commit to merge.</li>
<li><strong>150</strong> stage failures were repaired by the agents themselves.</li>
<li><strong>9</strong> stages make up a ticket's path.</li>
</ul>
<p>The low share of tickets needing an approval comes from how those projects configured their approvals. It is a setting, not a ceiling. If you want a person on every merge, you can have that, and the numbers will then look different, by choice.</p>
<div class="guide-callout">
<h3>Today's numbers</h3>
<ul>
<li>One Claude Ultra account delivers about <strong>50</strong> medium-sized tickets a week (about <strong>25</strong> files each), which is about <strong>200</strong> a month, when enough Dutopilot virtual team members run on it.</li>
<li><strong>8</strong> Dutopilot virtual team members can finish about <strong>50</strong> tickets in a single day, which uses about one account's weekly AI allowance.</li>
<li>Since 29 September, Dutopilot's agents have merged <strong>497</strong> changes into Dutopilot's own product on their own, closing more than <strong>375</strong> tickets.</li>
<li>On the Solo plan, the smaller Dutopilot team (up to 3 virtual team members) keeps one account at about <strong>100</strong> tickets a month. On the Team plan it is about <strong>200</strong> a month for each Claude Ultra account you connect.</li>
</ul>
<p>We improve Dutopilot every day, so these are today's figures (November 2026), not an average over past months. The capacity figures are for the product, not measurements from client projects.</p>
</div>
<h2 id="lessons">Lessons learned, for your team</h2>
<p>These are the lessons from building this way that transfer to any team that wants to hand delivery work to agents.</p>
<h3>Write tickets for a capable colleague</h3>
<p>The quality of the output follows the quality of the ticket. A ticket that states the goal, who it is for and how you will know it worked gets built well. A ticket that says "improve the dashboard" gets a clarifying question first. That is a good outcome, and it is cheaper than a wrong build.</p>
<h3>Keep every change small</h3>
<p>Small tickets pass review faster, fail less often and are easy to undo. When a piece of work is large, the planning step splits it. Do not fight that split. A large change is a risk you would otherwise carry for days.</p>
<h3>Let separate agents review</h3>
<p>The agent that writes the code should not be the agent that approves it. Independent review catches the mistakes the author cannot see, and the findings go straight into the repair loop instead of onto a person's desk.</p>
<h3>Make checks plain code</h3>
<p>Anything with a clear right answer, such as whether a test passed or whether a file changed, should be decided by ordinary software, not by a model's opinion. Use models for the judgment tasks: reading a change, deciding whether it matches the ticket.</p>
<h3>Design for many at once from day one</h3>
<p>A pipeline that is fast for one ticket and stuck for ten is not fast. Test every rule against the busy case: no waiting for a branch to be current, no shared slot that is never released, no wait that needs a person to end it.</p>
<h3>Choose your human gates on purpose</h3>
<p>Decide which steps need a person and make those gates real. Everything else should move on its own with a clear record. A gate that is selected but easy to bypass teaches people to ignore gates.</p>
<h3>Treat a stop as a message to a customer</h3>
<p>Every time the system stops, write the notice as if a person who has never heard of the tool will read it. If they cannot act on it alone, the notice is not finished.</p>
<h2 id="team">What this means for your team</h2>
<p>You do not have to run a setup like ours to benefit from it. The practical version is a managed one.</p>
<p>You keep your project board and your repositories. Dutopilot connects to them (Jira, Linear, Notion, GitHub Issues or Azure DevOps for the backlog; GitHub, GitLab, Bitbucket or Azure DevOps for the code; Slack for notices), and your own AI account pays for the AI work, so the cost stays in your hands. The agents run on dedicated cloud infrastructure that we manage, and each ticket gets its own sandbox. Each Dutopilot virtual team member on your plan can orchestrate hundreds of parallel sub-agents, on every plan. The number of tickets in flight follows how many Dutopilot virtual team members your plan has (Solo up to 3, Team up to 15, Enterprise no limit) and your approvals. Plans are priced by Dutopilot virtual team members, not by users: your whole team can use Dutopilot.</p>
<h3>The Forward Deployed Engineer</h3>
<p>Every customer gets a Forward Deployed Engineer, an engineer from our side who works with you rather than a support desk you queue behind. They connect your board and repositories, read your codebase and your conventions, set up the checks and approvals you want, and tune the agents to your way of working. They also stay after launch: they watch how your first tickets flow, adjust where agents stall, and help you decide when to loosen or tighten a gate.</p>
<p>In practice, that means you get Dutopilot virtual team members and an engineer who knows how to make them work in your codebase, instead of a tool you have to learn alone. The best first step is small: one project, a few tickets and the approvals you are comfortable with.</p>
<div class="guide-callout guide-cta">
<p class="guide-cta-h">Start with one project</p>
<p>Book a call to see how the setup would look on your repository, or start free with the Solo plan.</p>
<p class="guide-cta-btns"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></p>
</div>
<h2 id="faq">Frequently asked questions</h2>
<h3>Does Dutopilot really build Dutopilot?</h3>
<p>Yes. The product's own repository is connected to the hosted Dutopilot service like a customer's. Tickets on its project board are planned, built, reviewed, tested, fixed and merged by agents, and every merge to main deploys to production.</p>
<h3>Are people involved at all?</h3>
<p>Yes. People choose the work, approve the steps they decided to keep behind a human gate, and make product decisions. Agents do the delivery work between those points.</p>
<h3>What happens when an agent gets something wrong?</h3>
<p>A reviewer or a quality gate catches it, and a fixing agent repairs it and sends it back through the checks. If it cannot be resolved, the ticket stops with a plain explanation that a person can act on alone.</p>
<h3>Can I run the same setup on my own backlog?</h3>
<p>Yes. You keep your project board and repositories, and Dutopilot runs Claude Code, Codex, OpenCode and Oh My Pi on your own AI account. A Forward Deployed Engineer sets it up around your backlog and the approvals you want.</p>
<h3>How do many tickets and many people merge into one main branch?</h3>
<p>Each agent merges the latest main into its own work at the moment it needs it, instead of waiting for its branch to be refreshed. That way no change waits for another, and a busy repository keeps moving.</p>]]></content:encoded></item>
    <item><title>Can AI agents review pull requests safely?</title><link>https://dutopilot.com/guides/ai-agents-review-pull-requests-safely/</link><guid>https://dutopilot.com/guides/ai-agents-review-pull-requests-safely/</guid><pubDate>Sat, 14 Nov 2026 12:00:00 +0000</pubDate><description>Yes, as one layer among several. What AI review catches, the risks to plan for, and a safe setup with tests, branch protection and people.</description><content:encoded><![CDATA[<p>Yes, when AI review is one layer among several and not the only gate. An AI reviewer can read every pull request at any hour and catch missed cases, unsafe patterns and unclear code. It can also be wrong or be misled, so the safe setup keeps tests, branch protection and a person for risky changes around it.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/ai-agents-review-pull-requests-safely/hero.svg" alt="A pull request passing through rings of protection: automated checks, reviewer agents, a person, and branch protection." width="1200" height="500"><figcaption>The pull request passes through several layers before it merges, and each layer catches what the others miss.</figcaption></figure>
              <div class="cta-btns guide-cta"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></div>
              <h2>What AI review does well and what people do better</h2>
              <div class="guide-table-wrap"><table class="guide-table"><thead><tr><th scope="col">Task</th><th scope="col">AI reviewer</th><th scope="col">Person</th></tr></thead><tbody><tr><th scope="row">Spotting missed edge cases and small mistakes</th><td>Strong</td><td>Good, but tires</td></tr><tr><th scope="row">Checking every change against your rules, every time</th><td>Strong</td><td>Varies from day to day</td></tr><tr><th scope="row">Judging whether the change is the right product decision</th><td>Weak</td><td>Strong</td></tr><tr><th scope="row">Noticing a risk that is not in the code, such as a contract or a deadline</th><td>Weak</td><td>Strong</td></tr></tbody></table></div>
              <p>Use that split to decide where a person must stay involved. Routine checks go to the AI. Judgment calls stay with people.</p>
              <h2>Five layers around every pull request</h2>
              <p>No single check should carry the decision. A safe setup stacks layers that each catch something the others miss, and the pull request has to pass all of them in order.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/ai-agents-review-pull-requests-safely/layers.svg" alt="Five layers in a row: automated checks, reviewer agents, an automatic fix loop, a person approving, and branch protection." width="1200" height="270"><figcaption>The five layers, in the order a pull request meets them.</figcaption></figure>
              <ol><li>Automated checks: lint, build and tests give a pass or fail that nobody can argue with.</li><li>Reviewer agents: separate agents read the change and comment on what looks wrong.</li><li>Fix loop: findings go back to a fixer, and the checks and reviewers run again.</li><li>A person: someone you named approves changes in the areas where a mistake is costly.</li><li>Branch protection: your code host enforces required checks and reviews, whatever any agent says.</li></ol>
              <h2>The risks to plan for</h2>
              <ul><li>A false approval: the reviewer says the change is fine when it is not.</li><li>Being misled: text hidden in a ticket, a comment or a file can try to steer the reviewer. <a href="https://genai.owasp.org/llmrisk/llm01-prompt-injection/">OWASP lists prompt injection</a> as the first risk in its list of risks for applications built on large language models.</li><li>Too much access: a reviewer that can read secrets or change production can do harm if it is misled.</li><li>Marking its own homework: an agent that reviews the code it wrote tends to agree with itself.</li></ul>
              <h2>A safe setup, step by step</h2>
              <ol><li>Separate the author from the reviewers. The agent that wrote the change never approves it, and more than one reviewer is better than one.</li><li>Let reviewers comment, not edit. Findings go back to the author to fix, so every change has one owner.</li><li>Keep automated checks as the gate. Tests, type checks and quality checks must pass again after every fix. On GitHub, <a href="https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches">branch protection</a> can require passing checks and approving reviews before anything merges.</li><li>Limit access. Run the agents in a sandbox with no production secrets and only the permissions the work needs.</li><li>Choose where a person must approve, such as sensitive areas of the code and the production release.</li><li>Keep a record. Every review comment, fix and approval should be visible on the pull request.</li></ol>
              <h2>A worked example: a refund endpoint</h2>
              <p>An illustrative ticket, PAY-301, &quot;Add a refund endpoint&quot;: an agent builds it and opens a pull request. This is what each layer does with it.</p>
              <div class="guide-table-wrap"><table class="guide-table"><thead><tr><th scope="col">Layer</th><th scope="col">What it did</th><th scope="col">Result</th></tr></thead><tbody><tr><th scope="row">Automated checks</th><td>Lint, type check and tests ran. A test for a negative refund amount failed.</td><td>Sent to the fixer. One commit later the second run passed.</td></tr><tr><th scope="row">Reviewer agents</th><td>One reviewer noticed that the endpoint never checks that the user may refund this payment. Another tried to break it and found that a refund could be larger than the original payment.</td><td>Two findings, written as comments on the pull request.</td></tr><tr><th scope="row">Fix loop</th><td>The fixer added the permission check and the amount limit. The checks ran again and the reviewers read the new version.</td><td>Both findings closed, every check green.</td></tr><tr><th scope="row">A person</th><td>The change touches the payments folder, which is on the approver list. The approver sees the findings, the fixes and the passing checks in one place.</td><td>Approved, or sent back with a comment.</td></tr><tr><th scope="row">Branch protection</th><td>Your code host still requires its checks and its review.</td><td>The merge is allowed only because all of them passed.</td></tr></tbody></table></div>
              <p>Notice that the reviewers never edited the code, and that no single layer approved the change alone. In a case like this, the two findings are the kind a tired person skims past on a Friday afternoon.</p>
              <div class="cta-btns guide-cta"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></div>
              <h2>What happens inside the fix loop</h2>
              <p>A finding goes to a fixer agent together with the exact comment or failing log. The fixer changes the code, the checks run again and the reviewers read the new version. This repeats until everything is green.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/ai-agents-review-pull-requests-safely/loop.svg" alt="A loop: reviewers find a problem, a fixer repairs it, the checks run again, and the reviewers read the new version." width="1200" height="360"><figcaption>The fix loop. It repeats until the checks are green and the reviewers have no open findings.</figcaption></figure>
              <p>Two safeguards keep the loop honest. If a fix stops getting closer to green, or the risk of the change goes up, the run stops and asks a person instead of trying again. And a test that fails at random is retried and repaired automatically, so one unreliable test does not block a good change.</p>
              <h2>How Dutopilot does it</h2>
              <p>In Dutopilot, separate Dutopilot virtual team members, who did not write the code, read each pull request. What they find goes to an automatic fix step, and the tests and quality checks run again before anything merges. The code is processed in a sealed sandbox, and your own branch protection and required reviews keep applying unchanged.</p>
              <p>People decide the architecture before code is written and the production release, and you can add approvals anywhere else. Every run leaves a trail in your pull requests. See <a href="https://dutopilot.com/guides/choosing-human-approvals-in-delivery/">which steps need a person's approval</a> for how to choose.</p>
              <h2>What reviewers are allowed to do</h2>
              <ul><li>They read the change and the code around it, and they write comments. They do not push code.</li><li>They run in a sealed sandbox with no production secrets.</li><li>They are different Dutopilot virtual team members from the one that wrote the change, so none marks its own homework.</li><li>A single reviewer opinion never merges anything alone. Approvals and merge happen only where you chose, and the automated checks and your branch protection decide.</li></ul>
              <h2>What you set up</h2>
              <ul><li>Branch protection on your main branch, with the checks you already run marked as required.</li><li>A list of approvers, and the parts of the code, such as payments or sign-in, that always need one.</li><li>The strictness you want: which kinds of problem reviewers should block on and which they should only mention.</li></ul>
              <h2>What your Forward Deployed Engineer does</h2>
              <p>Every Dutopilot customer gets a Forward Deployed Engineer: an engineer from Dutopilot who works with your team. They do not write your product code. They make review fit your codebase and your habits.</p>
              <ul><li>They tune what the reviewers look for in your codebase, such as your security rules and naming conventions.</li><li>They choose with you which parts of the code need a named approver.</li><li>They read the first month of review results with you: what the reviewers flagged, what people flagged afterwards and what slipped through.</li><li>They tighten or loosen approvals based on that record, and keep tuning as your code and team change.</li></ul>
              <h2>How to tell whether it is working</h2>
              <p>Keep a simple record for the first month. For each pull request, note what the AI reviewer flagged, what a person flagged afterwards and whether anything slipped through to a later fix. If people keep finding real problems the AI missed, tighten the setup. If the AI findings are mostly noise, adjust what you ask it to look for before you trust it with more.</p>
              <h2>Start small and widen</h2>
              <p>Begin with AI review on a low-risk part of the code, with a person still approving every merge. After a few weeks, look at how often the AI found real problems and how often it missed one that a person caught. Loosen approvals where the record is clean, and keep them where it is not.</p>
              <h2>Frequently asked questions</h2>
              <h3>Should AI review replace human review?</h3>
              <p>Not for changes that are costly or hard to undo. Let AI catch the routine problems so people spend their time on judgment, such as whether the change is the right one.</p>
              <h3>Can an AI reviewer approve and merge on its own?</h3>
              <p>Only where you choose, and only for low-risk changes. Approvals and merge happen only where you chose them, and a single reviewer opinion never merges alone: the automated checks and your branch protection stay the gate. Start strict and loosen only after you have seen the results.</p>
              <h3>What about secrets and customer data?</h3>
              <p>Keep them out of the reviewer's reach. In Dutopilot, code is processed in a sealed sandbox, we never keep a copy of your repository, and run logs and check results are deleted after 90 days.</p>]]></content:encoded></item>
    <item><title>How can AI agents work through a Jira backlog?</title><link>https://dutopilot.com/guides/ai-agents-jira-backlog/</link><guid>https://dutopilot.com/guides/ai-agents-jira-backlog/</guid><pubDate>Sat, 14 Nov 2026 11:00:00 +0000</pubDate><description>By treating the backlog as a queue of small, clear tickets. How to sort it, the stages an agent follows, and where people stay in charge.</description><content:encoded><![CDATA[<p>By treating the backlog as a queue of small, well-described jobs. AI agents can take tickets from a Jira backlog one by one, build each change on its own branch and open a pull request, while people keep the decisions that matter. The work is less about the agent and more about how ready your tickets are.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/ai-agents-jira-backlog/hero.svg" alt="A Jira backlog of tickets feeding three agent lanes, each ending in a pull request with a person approving along the way." width="1200" height="500"><figcaption>Tickets go in on the left. Each one comes out as a reviewed pull request, with people approving at the points you choose.</figcaption></figure>
              <div class="cta-btns guide-cta"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></div>
              <h2>Start by sorting the backlog</h2>
              <p>Agents do not need a perfect backlog, but they do need tickets they can finish. Sorting the backlog into four groups before you start saves most of the wasted runs.</p>
              <div class="guide-table-wrap"><table class="guide-table"><thead><tr><th scope="col">Kind of ticket</th><th scope="col">Hand it to an agent?</th><th scope="col">What to do first</th></tr></thead><tbody><tr><th scope="row">Clear outcome, small scope, a way to check it</th><td>Yes</td><td>Hand it over as it is.</td></tr><tr><th scope="row">Good idea, vague description</th><td>Not yet</td><td>Add what done looks like and name the area of the code.</td></tr><tr><th scope="row">Two jobs in one ticket</th><td>No</td><td>Split it into two tickets.</td></tr><tr><th scope="row">Needs a design or product decision</th><td>No</td><td>Have a person decide first, then write the decision on the ticket.</td></tr></tbody></table></div>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/ai-agents-jira-backlog/sort.svg" alt="Four groups of tickets: ready, vague, two jobs in one, and needs a decision." width="1200" height="360"><figcaption>Only the first group is ready for an agent. The others need a small fix first.</figcaption></figure>
              <p>Jira can help you find the first candidates. Its query language, JQL, lets you save a filter that lists tickets by status, label or age, as described in <a href="https://support.atlassian.com/jira-software-cloud/docs/use-advanced-search-with-jira-query-language-jql/">Atlassian's JQL guide</a>. Start with a filter for small tickets that already have a clear description.</p>
              <h2>What a ticket an agent can finish looks like</h2>
              <p>Here is an example, written the way a product owner would write it in Jira. It is small, it says what done means and it names where the work lives.</p>
              <div class="guide-callout"><p><strong>PAY-214: Add CSV export to the invoices page</strong></p><p><strong>Outcome:</strong> a finance user can download the filtered invoice list as a CSV file.</p><p><strong>Done when:</strong> the file has the same columns as the table, respects the filter on screen, and a test covers an empty list.</p><p><strong>Area:</strong> the invoices page and its API. <strong>Out of scope:</strong> PDF export.</p></div>
              <p>That takes about a minute to write. Without the last three lines it is the kind of ticket an agent has to guess at, and guesses are where rework comes from.</p>
              <h2>One ticket, step by step</h2>
              <p>Here is PAY-214 going through the nine stages of the Dutopilot pipeline: architect, planner, implementer, gate, three reviewers, autofixer and QA. Before the first stage, people set the human gates once per project and the ticket is picked up. After the last, a person releases to production.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/ai-agents-jira-backlog/journey.svg" alt="Nine stages from a ticket to a merged pull request: architect, planner, implementer, gate, three reviewers, autofixer and QA, with a person approving the plan and the release." width="1200" height="380"><figcaption>A ticket moves from the backlog to a merged pull request, with its status written back at every stage.</figcaption></figure>
              <div class="guide-table-wrap"><table class="guide-table"><thead><tr><th scope="col">Step</th><th scope="col">What the agent does</th><th scope="col">What you see</th></tr></thead><tbody><tr><th scope="row">Before the stages: pick up</th><td>Reads PAY-214 and the design page it links to, and confirms the ticket is ready.</td><td>A comment saying the ticket was picked up and is ready.</td></tr><tr><th scope="row">1. Architect</th><td>Proposes which files change (the invoices page and the export endpoint), how the data flows and which tests to add.</td><td>The plan as a comment. A named person approves it before any code is written.</td></tr><tr><th scope="row">2. Planner</th><td>Turns the approved plan into an ordered list of tasks for the implementer.</td><td>The task list on the ticket.</td></tr><tr><th scope="row">3. Implementer</th><td>Writes the change on its own branch inside a sealed sandbox and opens a pull request.</td><td>A branch named for the ticket and a pull request linked back to PAY-214.</td></tr><tr><th scope="row">4. Gate</th><td>Runs lint, build and tests and returns one combined verdict.</td><td>One check result on the pull request instead of a scatter of signals.</td></tr><tr><th scope="row">5 to 7. Three reviewers</th><td>Three separate Dutopilot virtual team members read the change on their own. One notices that the export ignores the filter on screen.</td><td>Review comments on the pull request, written like a person on your team would.</td></tr><tr><th scope="row">8. Autofixer</th><td>A fixer agent gets the comment or the failing log, repairs the code, and the gate runs again.</td><td>A new commit and a fresh check result.</td></tr><tr><th scope="row">9. QA</th><td>With every check green, the pull request merges under your branch protection and reaches your test environment, where QA tests the result.</td><td>The ticket moves to your test status.</td></tr><tr><th scope="row">After the stages: release</th><td>Waits for a person, then deploys through the same pipeline.</td><td>A request for the release approval.</td></tr></tbody></table></div>
              <p>Two points wait for a person by default: the plan and the production release. Everything between them runs without anyone watching, and every stage writes to the ticket, so you read the story afterwards instead of attending it.</p>
              <div class="cta-btns guide-cta"><a class="btn btn-primary" href="https://cal.com/dutopilot">Book a call <svg class="arr" width="15" height="15" viewBox="0 0 15 15" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7.5h9M8 3.5l4 4-4 4"></path></svg></a><a class="btn btn-outline" href="https://cal.com/dutopilot">Start free with Solo</a></div>
              <h2>Keep many tickets moving without collisions</h2>
              <p>The hard part of a large backlog is not one ticket, it is many at the same time. Give every ticket its own branch, let tickets that depend on each other wait for the one they need, and limit how many run at once to what your team can review. If two tickets touch the same files, run them one after the other.</p>
              <p>Say PAY-215 is an export button on the dashboard that needs the endpoint from PAY-214. Mark it as blocked by PAY-214 in Jira and it waits, then starts from code that already contains the endpoint. Two unrelated tickets, such as a copy change and a new report, run side by side without noticing each other. Before it starts, each ticket brings in the latest code from your main branch by itself, so no ticket waits for someone to refresh a branch by hand.</p>
              <h2>What you set up</h2>
              <ul><li>Connect your Jira project and your code host (GitHub, GitLab, Bitbucket or Azure DevOps).</li><li>Choose the slice of the backlog to start with, for example one label or one saved filter.</li><li>Name who approves the plan and the production release, and any parts of the code that need a named reviewer.</li><li>Connect your own Claude Code, Codex, OpenCode or Oh My Pi subscription.</li></ul>
              <p>Most teams run their first ticket within a week.</p>
              <h2>What your Forward Deployed Engineer does</h2>
              <p>Every Dutopilot customer gets a Forward Deployed Engineer: an engineer from Dutopilot who works with your team, not a support queue. They do not write your product code. They make the pipeline fit the way you already work.</p>
              <ul><li>Onboarding: they connect your tools with you and choose the first slice of the backlog.</li><li>Ticket readiness: they go through the first tickets with your product owner and agree a short template like the one above.</li><li>Approvals and gates: they set which plans and which parts of the code need a person, and which do not, based on how your team really reviews.</li><li>First runs: they watch the first tickets with you and fix whatever stalls a run.</li><li>Ongoing: they look at stalled tickets and review findings with you, and loosen or tighten the gates as the record shows.</li></ul>
              <h2>How Dutopilot does it</h2>
              <p>Dutopilot connects to your Jira backlog and works through it with its nine-stage pipeline: it plans the change, builds it in a sealed sandbox, has it reviewed by three separate reviewers, runs the tests and quality checks, fixes what fails and merges when the approvals you chose are in. Every stage is written back to the ticket, so the backlog always shows where each ticket stands.</p>
              <p>Your branch protection and required reviews keep applying, and we never keep a copy of your repository. Besides Jira, Dutopilot works with Linear, Notion, GitHub Issues and Azure DevOps for the backlog, and with Slack. The guide on <a href="https://dutopilot.com/guides/jira-ticket-to-merged-pull-request/">going from a Jira ticket to a merged pull request</a> shows one ticket from start to finish.</p>
              <h2>Common reasons a run stalls</h2>
              <ul><li>The description has no acceptance criteria, so the agent has to guess what done means.</li><li>The ticket mixes two jobs, so the pull request grows too large to review.</li><li>The tests are slow or flaky, so nobody can tell whether the change works.</li><li>No approver is named, so a finished pull request waits.</li></ul>
              <p>Fix these in the backlog and the success rate goes up without any change to the agent.</p>
              <h2>Where people stay in charge</h2>
              <ul><li>Before code is written: a person decides the architecture of anything new or risky.</li><li>At merge: a named person approves changes in the areas that matter most.</li><li>At release: the production release follows your own process.</li></ul>
              <p>Add approvals anywhere else you want one, and remove them as trust grows. The guide on <a href="https://dutopilot.com/guides/choosing-human-approvals-in-delivery/">choosing which steps need approval</a> explains how to decide.</p>
              <h2>Frequently asked questions</h2>
              <h3>Do AI agents need a clean backlog?</h3>
              <p>No, but each ticket an agent picks up needs a clear outcome, a small scope and a way to check it. Leave the messy tickets in the backlog and sort them first.</p>
              <h3>What happens when an agent gets stuck?</h3>
              <p>A good setup makes the agent say so on the ticket and stop, instead of guessing. In Dutopilot the ticket shows what is blocking it and what a person can do, and a reply from a person lets the work continue.</p>
              <h3>Can we use our own AI subscription?</h3>
              <p>Yes. Dutopilot runs on your own Claude Code, Codex, OpenCode or Oh My Pi account, so Dutopilot virtual team members work under the terms and limits you already have.</p>
              <h3>How long until the first ticket runs?</h3>
              <p>Most teams run their first ticket within a week: connect the backlog and the project, point Dutopilot at one slice of the backlog, then widen from there.</p>]]></content:encoded></item>
    <item><title>Connect Claude to Dutopilot</title><link>https://dutopilot.com/guides/connect-claude-to-dutopilot/</link><guid>https://dutopilot.com/guides/connect-claude-to-dutopilot/</guid><pubDate>Sat, 14 Nov 2026 09:00:00 +0000</pubDate><description>How to connect Claude to your Dutopilot projects over MCP: what the assistant can read and change, and how your chat history stays yours.</description><content:encoded><![CDATA[<p>Connect Claude to your Dutopilot projects and you can check status, file tickets and act on them without leaving your chat. It runs over MCP, an open standard for connecting assistants to tools, and takes about two minutes.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/connect-claude/hero.svg" alt="An AI chat window linked by a cable to a Dutopilot project board with columns of ticket cards." width="1200" height="500"><figcaption>Your assistant on one side, your Dutopilot project board on the other.</figcaption></figure>
              <h2>Connect in the Claude app</h2>
              <p>These steps work on the Free, Pro and Max plans.</p>
              <ol class="guide-steps">
              <li><span>In Claude, open <strong>Plugins</strong> in the left sidebar.</span></li>
              <li><span>Click <strong>Add</strong>, then <strong>Add custom connector</strong>.</span><figure class="guide-figure guide-shot guide-shot-small"><img src="https://dutopilot.com/media/guides/connect-claude/claude-plugins-add-menu.webp" alt="The Add menu on the Claude Plugins page with the Add custom connector option." width="514" height="484" decoding="async"><figcaption>The Add menu on the Plugins page.</figcaption></figure></li>
              <li><span>Name it <strong>Dutopilot</strong>, paste <code>https://app.dutopilot.com/mcp</code> as the MCP server URL, and click <strong>Continue</strong>.</span><figure class="guide-figure guide-shot"><img src="https://dutopilot.com/media/guides/connect-claude/claude-add-custom-connector.webp" alt="The Add custom connector dialog in Claude, filled in with the name Dutopilot and the MCP server URL." width="1166" height="902" decoding="async"><figcaption>The dialog, filled in with Dutopilot and the URL.</figcaption></figure></li>
              <li><span>Claude opens the Dutopilot sign-in page. Click <strong>Send me a code</strong>, enter the 6-digit code from your email, and allow access.</span><figure class="guide-figure guide-shot guide-shot-narrow"><img src="https://dutopilot.com/media/guides/connect-claude/dutopilot-approve-access.webp" alt="The Dutopilot page that asks you to allow Claude access, with a box for the 6-digit code." width="842" height="1400" decoding="async"><figcaption>The Dutopilot page that asks you to allow Claude.</figcaption></figure></li>
              <li><span>Back in Claude, Dutopilot shows as <strong>Connected</strong> on its plugin page.</span><figure class="guide-figure guide-shot"><img src="https://dutopilot.com/media/guides/connect-claude/claude-dutopilot-connected.webp" alt="The Dutopilot plugin page in Claude showing the status Connected." width="1400" height="642" decoding="async"><figcaption>Dutopilot shows as Connected.</figcaption></figure></li>
              </ol>
              <p>Free plans allow one custom connector.</p>
              <figure class="guide-figure"><img src="https://dutopilot.com/media/guides/connect-claude/flow.svg" alt="Three steps: add the connector, sign in with a code, then use it in a chat." width="1200" height="320"><figcaption>Add the connector, sign in with a code, then use it in a chat.</figcaption></figure>
              <h2>On a Team or Enterprise plan</h2>
              <div class="guide-callout">
              <p>An Owner adds the connector once for everyone. Open <strong>Organization settings</strong>, then <strong>Connectors</strong>, click <strong>Add</strong>, then <strong>Custom</strong>, then <strong>Web</strong>, and use the same name and URL.</p>
              <p>Each member then opens <strong>Plugins</strong> in Claude, finds <strong>Dutopilot</strong>, connects it, and signs in with their own email code.</p>
              </div>
              <h2>Turn it on in a chat</h2>
              <p>Click the <strong>+</strong> in the message box, choose <strong>Plugins</strong>, and switch <strong>Dutopilot</strong> on. <strong>Tool access</strong> in the same menu lets you choose which tools Claude may use.</p>
              <figure class="guide-figure guide-shot"><img src="https://dutopilot.com/media/guides/connect-claude/claude-chat-plugins-menu.webp" alt="The + menu in a Claude chat with Plugins open and Dutopilot switched on." width="1170" height="964" decoding="async"><figcaption>The + menu with Dutopilot switched on.</figcaption></figure>
              <h2>Desktop and mobile</h2>
              <p>Once you add the connector on the web, it also works in the Claude desktop and mobile apps. There is nothing extra to set up.</p>
              <h2>Connect in Claude Code</h2>
              <p>In Claude Code, one command adds the connector:</p>
              <pre class="guide-code"><code>claude mcp add --transport http dutopilot https://app.dutopilot.com/mcp</code></pre>
              <p>Then run /mcp in Claude Code, choose dutopilot and sign in with the emailed code.</p>
              <h2>The tools, in plain words</h2>
              <p>The connector has seven tools, in two groups. The two admin-only tools are marked.</p>
              <div class="guide-cards guide-tools">
              <div class="guide-card">
              <h3>Only read</h3>
              <p>These look at your work and never change it.</p>
              <ul><li><code>status</code><span class="guide-tool-desc">Read your projects, a project board or a single ticket.</span></li><li><code>get_settings</code><span class="guide-tool-desc">Read project settings.</span></li><li><code>branch_tests</code><span class="guide-tool-desc">Read which tests fail on the default branch.</span></li></ul>
              </div>
              <div class="guide-card">
              <h3>Change things</h3>
              <p>These change your project, so they follow your role.</p>
              <ul><li><code>file_ticket</code><span class="guide-tool-desc">Create a ticket on your project board.</span></li><li><code>act</code><span class="guide-tool-desc">Take an action a ticket offers, like approve the plan, stop or resume.</span></li><li><code>update_settings</code><span class="guide-badge">Admins only</span><span class="guide-tool-desc">Change settings and AI accounts, and check that an AI account works.</span></li><li><code>seo_content_run</code><span class="guide-badge">Admins only</span><span class="guide-tool-desc">Queue an SEO content job.</span></li></ul>
              </div>
              </div>
              <p>Claude groups the tools the same way, as read-only and write/delete. On the connector's <strong>Permissions</strong> tab you choose, per tool, whether Claude asks you first.</p>
              <figure class="guide-figure guide-shot"><img src="https://dutopilot.com/media/guides/connect-claude/claude-dutopilot-tool-permissions.webp" alt="The Permissions tab in Claude listing the read-only Dutopilot tools." width="1400" height="840" decoding="async"><figcaption>Claude's Permissions tab for Dutopilot's read-only tools.</figcaption></figure>
              <p>Everyone on a Dutopilot project can connect and use the read tools. Filing a ticket needs at least the Member role, the actions a ticket offers depend on your role, and two tools are admin-only; they are marked above.</p>
              <h2>Your chat history stays yours</h2>
              <p>The server cannot read your chat history. It receives only what the assistant puts into a tool call, such as the text of a ticket you ask it to file. The rest of your conversation stays between you and the assistant. The <a href="https://dutopilot.com/privacy/">privacy page</a> has the details.</p>
              <h2>Disconnecting</h2>
              <p>You can disconnect at any time from the connector settings of your assistant. A connection that sits idle expires after 7 days.</p>
              <h2>Questions and help</h2>
              <p>Anything unclear, or something that does not work, write to <a href="mailto:support@dutopilot.com">support@dutopilot.com</a>.</p>]]></content:encoded></item>
    <item><title>How to go from a Jira ticket to a merged pull request with AI agents</title><link>https://dutopilot.com/guides/jira-ticket-to-merged-pull-request/</link><guid>https://dutopilot.com/guides/jira-ticket-to-merged-pull-request/</guid><pubDate>Mon, 02 Nov 2026 09:00:00 +0000</pubDate><description>The steps an AI agent follows to turn a ticket in your backlog into a reviewed, merged pull request, and where people stay in charge.</description><content:encoded><![CDATA[<p>Most backlogs are full of tickets that are clear enough to build but never get picked up. An AI agent can take those tickets from the backlog to a merged pull request, as long as the work is split into steps you can check. This guide walks through those steps in plain language.</p>
              <h2>Start with a ticket an agent can finish</h2>
              <p>A good first ticket has a clear outcome, a small scope and a way to tell it worked. &quot;Add an export button to the orders page&quot; works. &quot;Improve performance&quot; does not. If a person on your team could finish the ticket in a day without asking questions, an agent probably can too.</p>
              <p>Before you hand a ticket over, check three things: the description says what done looks like, the affected area of the code is named or easy to find, and any tests that should pass are listed.</p>
              <h2>The five steps</h2>
              <ol><li>Read: the agent reads the ticket, the linked pages and the relevant parts of the repository.</li><li>Plan: it writes down what it will change and which tests it will add. This plan is short enough for a person to read in a minute.</li><li>Build: it makes the change on its own branch, runs the tests and fixes what fails.</li><li>Review: a second agent reads the pull request the way a teammate would and leaves comments. The first agent answers them.</li><li>Merge: once checks pass and the people you named have approved, the pull request is merged and the ticket moves on.</li></ol>
              <h2>Keep every step visible</h2>
              <p>The ticket should show what happened: the plan as a comment, a link to the pull request, and a note when the agent is stuck. Your team should never have to ask &quot;where is this?&quot;. If the status lives only in a chat window, it will be lost.</p>
              <h2>What to review as a person</h2>
              <p>You do not need to read every line the agent wrote at the start, but you do need to decide where a person looks. Most teams start by reading the plan and the pull request, then relax the plan check once the agent has earned trust on that kind of ticket. The guide on <a href="https://dutopilot.com/guides/choosing-human-approvals-in-delivery/">choosing which steps need approval</a> covers this in detail.</p>
              <h2>Common reasons a ticket stalls</h2>
              <ul><li>The description leaves out the acceptance criteria, so the agent guesses.</li><li>The ticket mixes two jobs. Split it into two tickets.</li><li>The tests are slow or flaky, so the agent cannot tell whether its change works.</li><li>Nobody was named as the approver, so the pull request waits.</li></ul>
              <p>Fix these in the backlog and the agent&#x27;s success rate goes up without any change to the agent.</p>]]></content:encoded></item>
    <item><title>Running AI coding agents on your own Claude Code, Codex, OpenCode or Oh My Pi subscription</title><link>https://dutopilot.com/guides/ai-coding-agents-on-your-own-subscription/</link><guid>https://dutopilot.com/guides/ai-coding-agents-on-your-own-subscription/</guid><pubDate>Mon, 02 Nov 2026 08:00:00 +0000</pubDate><description>Why many teams bring their own Claude Code, Codex, OpenCode or Oh My Pi subscription or API key to AI delivery, and what it changes for cost and control.</description><content:encoded><![CDATA[<p>When an AI agent builds software for you, someone pays for the model that does the thinking. There are two common setups: the vendor bundles model usage into its price, or you bring your own subscription or API key. This guide explains the second setup and when it fits.</p>
              <h2>What bring your own means</h2>
              <p>You hold an account with the model provider, such as a Claude Code, Codex, OpenCode or Oh My Pi subscription, or an API key. The delivery tool uses that account to run the agents. Your provider bill shows exactly what the agents used.</p>
              <h2>Why teams choose it</h2>
              <ul><li>Cost you can see: usage appears on your own provider account, so there is no hidden markup on model use.</li><li>Control: you decide which model runs, and you can change it when a better one ships.</li><li>Existing agreements: if your company already has terms with a provider, those terms keep applying.</li><li>Predictable planning: a flat subscription is easier to budget than usage you cannot see.</li></ul>
              <h2>What you still pay the delivery tool for</h2>
              <p>The delivery tool covers the work around the model: reading the backlog, planning, running agents in parallel, review, and keeping the ticket up to date. Model usage is separate and stays on your account. Delivery Autopilot works this way: its packs cover the agents and the workflow, and model usage runs on your own subscription or key.</p>
              <h2>How to size a subscription</h2>
              <p>Start with a small number of tickets and watch usage for a couple of weeks. Look at how much one typical ticket uses, then multiply by the tickets you expect each month. Leave headroom for tickets that need a second try.</p>
              <h2>Questions to ask before you start</h2>
              <ul><li>Which provider and plan does my company already use?</li><li>Who owns the account, and who can see the usage?</li><li>Is the code used to train models under our plan?</li><li>What happens when the plan&#x27;s limit is reached mid-ticket?</li></ul>
              <p>Write the answers down once. They are the same for every ticket that follows.</p>]]></content:encoded></item>
    <item><title>Choosing which steps of delivery need a person&#x27;s approval</title><link>https://dutopilot.com/guides/choosing-human-approvals-in-delivery/</link><guid>https://dutopilot.com/guides/choosing-human-approvals-in-delivery/</guid><pubDate>Mon, 02 Nov 2026 07:00:00 +0000</pubDate><description>A simple way to decide where a person must approve work in AI-assisted delivery, and where agents can move on their own.</description><content:encoded><![CDATA[<p>When agents do part of your delivery, the question is not whether people stay involved. It is where. Too many approvals and you lose the speed. Too few and mistakes reach your customers. This guide gives a simple way to choose.</p>
              <h2>Ask two questions about each step</h2>
              <ol><li>How costly is a mistake here? A typo in a comment is cheap. A change to billing logic is not.</li><li>How easy is it to undo? A draft pull request can be closed. A released change is harder to take back.</li></ol>
              <p>Steps that are cheap and easy to undo can run without approval. Steps that are costly or hard to undo need a person.</p>
              <h2>A starting point most teams use</h2>
              <ul><li>Plan: a person approves it for new kinds of work, and skips it for work the agent has done well before.</li><li>Build: no approval needed, the agent works on a branch.</li><li>Review: automated, with a person reading the pull request.</li><li>Merge: a person approves, always, for the areas that matter most.</li><li>Release: follows your existing process.</li></ul>
              <h2>Name the approver</h2>
              <p>An approval without a name attached waits forever. For each step that needs one, pick a person or a small group, and say how long they have. If nobody answers in that time, decide in advance whether the work waits or escalates.</p>
              <h2>Loosen approvals over time</h2>
              <p>Start strict. After a few weeks, look at which approvals were always granted without changes. Those are candidates to remove. Look also at the ones that were often rejected: they show where the agent or the ticket needs help.</p>
              <h2>Keep a record</h2>
              <p>Whatever you choose, the backlog item should show who approved what and when. That record is useful for your team, and it answers the questions customers and auditors ask.</p>]]></content:encoded></item>
  </channel>
</rss>
