<?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/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>SuperDevSpace blog</title>
    <link>https://superdevspace.com/blog</link>
    <description>Notes from building SuperDevSpace: AI agent teams on your own CLI subscription, git worktrees, guided setup and more.</description>
    <language>en</language>
    <lastBuildDate>Sun, 25 Oct 2026 10:00:00 GMT</lastBuildDate>
    <atom:link href="https://superdevspace.com/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Guided setup: an agent that walks you through any website</title>
      <link>https://superdevspace.com/blog/guided-setup-agent-any-website</link>
      <guid isPermaLink="true">https://superdevspace.com/blog/guided-setup-agent-any-website</guid>
      <pubDate>Sun, 25 Oct 2026 10:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>guided-setup</category>
      <category>browser</category>
      <category>agents</category>
      <description>The agent clicks through a dashboard, hands you the page for passwords, codes and payments, and stores the API key it came for. How it works.</description>
      <content:encoded><![CDATA[<p>Every project eventually needs something from a website. A payment provider&#39;s API key. A webhook secret. A client token from a dashboard three menus deep. An agent can write the integration in minutes, and then it stops and tells you to go and click through a dashboard yourself — because that part happens in a browser, behind your login.</p>
<p>Guided setup is how SuperDevSpace closes that gap. The agent opens the site in the app&#39;s own browser, does the clicking it is allowed to do, and hands the page to you, with a pointer and a sentence, exactly when the next step is yours.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/inspector-chain.webp" alt="The app&#39;s built-in browser pane showing a web page, with an element picked and its component chain listed with file and line" loading="lazy" decoding="async"><figcaption>The browser pane inside the app — the same pane guided setup drives, shown here with Inspector (real app, shown in Turkish).</figcaption></figure>
<h2 id="why-just-let-the-agent-do-it-is-the-wrong-answer">Why &quot;just let the agent do it&quot; is the wrong answer</h2>
<p>The easy version of this feature would give the agent the whole browser: read every field, type into every box, press every button. That would be fast, and it would be a bad idea. A setup flow is full of things an agent should never touch:</p>
<ul>
<li>your password and the one-time code from your phone;</li>
<li>card numbers, bank details and identity documents;</li>
<li>the terms you agree to and the payment you approve.</li>
</ul>
<p>So the design starts from the opposite end. The agent does the routine work — navigate, find the right page, fill in a project name, press <strong>Create</strong> — and everything personal or binding stays with you.</p>
<div class="table-scroll"><table><thead><tr><th>Step in a setup flow</th><th>The agent</th><th>You</th></tr></thead><tbody><tr><td>Open the dashboard and find the right page</td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td><td></td></tr>
<tr><td>Fill in a project name, a URL, a choice in a list</td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td><td></td></tr>
<tr><td>Type your password or the code from your phone</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>Enter card, bank or identity details</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>Tick the terms, press &quot;Pay&quot; or &quot;Place order&quot;</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>Read the new API key and store it in <code>.env</code></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td><td></td></tr></tbody></table></div>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Note"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>The line is enforced by the app</span></p><p>These are not suggestions in a prompt. The app refuses the agent&#39;s attempt to cross the line; the agent cannot talk its way past it.</p>
</aside>
<h2 id="how-a-guided-setup-runs">How a guided setup runs</h2>
<p>The loop is the same on every site, including ones nobody has written instructions for.</p>
<div class="blog-steps"><ol>
<li><strong>Open the page.</strong> The agent opens a browser tab inside the app. Your logins in that browser persist across restarts, so you may already be signed in.</li>
<li><strong>Look before acting.</strong> The agent asks for an outline of the page: one line per heading, button, link, field and frame. Sensitive fields are listed by kind — password, card, bank, one-time code, identity — with &quot;filled&quot; or &quot;empty&quot;, never with their value.</li>
<li><strong>Do its half.</strong> It clicks, fills ordinary fields and reads text, re-reading the page after anything that changes it.</li>
<li><strong>Hand over your half.</strong> When the next step is yours, the agent shows a guide card in the page: a short title, one concrete instruction, and a highlight on the field or button it means. You do the step and press <strong>Done — hand over</strong>. If you are stuck, you press <strong>I need help</strong> and write what you see; the agent answers in the page.</li>
<li><strong>Wait in the same turn.</strong> While a guide is up, the agent waits for you. Its clicks and typing are refused until you hand the page back, and you can press <strong>Stop / take control</strong> at any time.</li>
<li><strong>Take the result home.</strong> When the page shows what you came for — an API key, a token, a webhook secret — the agent reads it as a secret and puts it where it belongs, such as the project&#39;s <code>.env</code>. It reports <em>where</em> the key is, not the key.</li>
</ol>
</div>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/9eb0f62fda4e832a1a5b-light.svg" width="977" height="481" alt="One guided setup, from the first page to the stored key" loading="lazy" decoding="async"><figcaption>One guided setup, from the first page to the stored key</figcaption></figure>
<p>When it is done, you can check the result without printing a secret to your screen:</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> grep</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -o</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> '^PADDLE_[A-Z_]*='</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .env</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_API_KEY</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_CLIENT_TOKEN</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_WEBHOOK_SECRET</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">PADDLE_ENVIRONMENT</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span></span></code></pre>
<h2 id="rules-the-app-enforces">Rules the app enforces</h2>
<p>These are checks in the app, and the agent cannot switch them off:</p>
<ul>
<li><strong>No secrets in, no secrets out.</strong> The agent cannot type into a password, card, CVC, IBAN, one-time-code or ID field. When it reads the page or takes a snapshot, those values are hidden, and they are scrubbed from any text it reads.</li>
<li><strong>Screenshots are painted over.</strong> Sensitive fields and every cross-origin frame — a card widget, a &quot;Sign in with Google&quot; box — are covered before an agent sees an image.</li>
<li><strong>No scripts on sensitive pages.</strong> Running JavaScript in the page is refused on any page that shows such a field.</li>
<li><strong>Consent and payment are yours.</strong> Clicking a terms checkbox or a &quot;Pay&quot; / &quot;Place order&quot; button is refused.</li>
<li><strong>Everything is visible.</strong> What the agent does in the browser pane is shown to you in the pane&#39;s banner as it happens.</li>
<li><strong>Secrets stay out of the conversation.</strong> A value read as a secret is marked sensitive, and the agent is told never to repeat it in chat, reports, task notes or notifications.</li>
</ul>
<aside class="blog-callout blog-callout-warning" role="note" aria-label="Warning"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Warning</span></p><p>Approving a payment or accepting terms is always your click. If a flow cannot continue without one, the agent hands you the page and waits.</p>
</aside>
<h2 id="any-website-not-a-list-of-integrations">Any website, not a list of integrations</h2>
<p>Guided setup is a loop, not a library of scripts. It works on a site nobody has written a hint for, because the agent reads the actual page in front of it. For a few services we ship short hint files — Paddle&#39;s sandbox dashboard and RevenueCat, for example — that tell the agent where the developer settings usually are. Dashboards move their menus all the time, so the hints say plainly: when the page and the hint disagree, trust the page.</p>
<p>That matters more than it sounds. The integration code an agent writes is only half of a feature; the other half is the account, the key and the webhook on someone else&#39;s website. With guided setup, both halves happen in the same session, with the same agent, and you spend your time on the steps only you can do.</p>
<h2 id="where-it-fits">Where it fits</h2>
<p>Guided setup is part of the same workspace as everything else in SuperDevSpace: the agent that writes your checkout integration is the one that walks you through creating the keys for it, in a browser pane next to its terminal. If you are new here, <a href="https://superdevspace.com/blog/why-we-built-superdevspace">why we built SuperDevSpace</a> explains the rest of the team around it.</p>
<h2 id="try-it">Try it</h2>
<p>The trial is 14 days of Premium, no card. <a href="https://superdevspace.com/download">Download SuperDevSpace</a>, ask an agent to set up a payment or analytics provider for your project, and let it hand you the page when it is your turn.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Running parallel coding agents in git worktrees</title>
      <link>https://superdevspace.com/blog/parallel-coding-agents-git-worktrees</link>
      <guid isPermaLink="true">https://superdevspace.com/blog/parallel-coding-agents-git-worktrees</guid>
      <pubDate>Sun, 25 Oct 2026 09:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>git-worktrees</category>
      <category>agents</category>
      <category>workflow</category>
      <description>How SuperDevSpace keeps several coding agents apart in one repository: a git worktree and branch per worker, per-turn commits and squash merges.</description>
      <content:encoded><![CDATA[<p>Run two coding agents in the same checkout and you will find out quickly why software teams use branches. One agent is renaming a module while the other runs the test suite against half of that rename. One stages files the other just deleted. Neither is wrong; they are simply sharing a desk.</p>
<p>SuperDevSpace runs a manager and several workers on one repository at the same time. This post explains the mechanism that keeps them apart — git worktrees — and the exact rules the app follows around them.</p>
<h2 id="what-a-git-worktree-is">What a git worktree is</h2>
<p>A git repository normally has one working directory. <code>git worktree</code> lets a single repository have several, each checked out on its own branch, all sharing the same object database. There is no second clone and no second copy of the history: a new worktree costs the files of one checkout and nothing more.</p>
<p>You can try it by hand in any repository. The commands are the same everywhere; only the shell differs:</p>
<div class="blog-tabs" data-tabs><section class="blog-tab-panel" id="blog-tab-1-0" data-tab-label="macOS / Linux"><p class="blog-tab-label">macOS / Linux</p><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> add</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -b</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> agent/frontend-demo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> list</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> &#x26;&#x26; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> status</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> -</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> &#x26;&#x26; </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> worktree</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> remove</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ../myrepo-frontend</span></span></code></pre>
</section><section class="blog-tab-panel" id="blog-tab-1-1" data-tab-label="Windows (PowerShell)"><p class="blog-tab-label">Windows (PowerShell)</p><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">git worktree add </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">b agent</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">/</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">demo ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">git worktree list</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">cd ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend; git status</span></span>
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">cd ..\myrepo; git worktree remove ..\myrepo</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">-</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">frontend</span></span></code></pre>
</section></div>
<p>Each worktree has its own <code>HEAD</code>, its own index and its own files. Two processes can edit, build and test in two worktrees at once without seeing each other&#39;s half-finished changes. That is exactly the property a team of agents needs.</p>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Note"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>Note</span></p><p>Removing a worktree does not delete its branch. The commits stay in the repository until you delete the branch yourself.</p>
</aside>
<h2 id="how-superdevspace-uses-them">How SuperDevSpace uses them</h2>
<p>The rules are simple, and they are the same for every organisation:</p>
<ul>
<li><strong>The manager works in your main checkout.</strong> It plans, reviews and merges; it is the one place where branches come together.</li>
<li><strong>Every worker gets its own worktree on its own branch.</strong> When the manager hires a worker, the app runs <code>git worktree add -b &lt;branch&gt; &lt;path&gt;</code> for it. The branch is named <code>agent/&lt;worker-name&gt;-&lt;stamp&gt;</code> unless you gave it a name yourself.</li>
<li><strong>Worktrees live in the app&#39;s own data folder</strong>, under <code>worktrees/&lt;organisation&gt;/&lt;worker&gt;</code>, never inside your repository. Your project folder does not fill up with agent directories.</li>
<li><strong>Every turn is committed.</strong> When a worker finishes a turn, the app commits whatever changed in its worktree (<code>agent(&lt;name&gt;): turn</code>). Nothing a worker did is ever only in an uncommitted working directory.</li>
<li><strong>Merging is a squash merge.</strong> When the manager accepts a worker&#39;s report, the branch is merged into your line with <code>git merge --squash</code> and one commit. If the merge conflicts, the app aborts it and leaves the repository clean for the next operation instead of leaving you in the middle of a conflicted merge.</li>
<li><strong>One git operation at a time per repository.</strong> The worktree directories isolate the files; a per-repository queue serialises the git commands themselves, so two workers finishing at the same moment never race on git&#39;s metadata.</li>
</ul>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/49145bbb26778a2ce873-light.svg" width="471" height="264" alt="Two workers, two branches, two squash merges" loading="lazy" decoding="async"><figcaption>Two workers, two branches, two squash merges</figcaption></figure>
<p>On the board this looks like several tasks in progress at once, each owned by a different worker, each with its own branch underneath.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/board-sprint.webp" alt="A sprint board with tasks spread across to do, in progress, awaiting approval, in review and done" loading="lazy" decoding="async"><figcaption>Tasks moving in parallel on an organisation&#39;s board — each worker on its own branch (real app, shown in Turkish).</figcaption></figure>
<h2 id="the-parts-that-make-it-practical">The parts that make it practical</h2>
<p>A fresh worktree contains only what git tracks. That is usually not enough to run a project: <code>node_modules</code>, a local <code>.env</code>, generated files. Two details handle this.</p>
<h3 id="a-setup-script-per-repository">A setup script per repository</h3>
<p>If your repository has <code>.super/scripts/setup-worktree.sh</code>, the app runs it inside every new worktree before the worker starts, with <code>SUPERDEV_MAIN_REPO</code> pointing at your main checkout. Its output streams live, so a long install is not a blind wait, and you can cancel it.</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">#!/usr/bin/env bash</span></span>
<span class="line"><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">set</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> -euo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> pipefail</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"># Copy local-only files from the main checkout</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">cp</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">$SUPERDEV_MAIN_REPO</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/.env"</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> .env</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> 2></span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/dev/null</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> ||</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> true</span></span>
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"># Install dependencies (pnpm links from one shared store, so this is quick)</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">pnpm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> install</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> --frozen-lockfile</span></span></code></pre>
<aside class="blog-callout blog-callout-tip" role="note" aria-label="Tip"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5"/><path d="M9 18h6"/><path d="M10 22h4"/></svg><span>Keep the setup script fast</span></p><p>The worker starts only after the script finishes, and a failing script stops the spawn rather than letting an agent work in a half-prepared tree. A package manager with a shared store keeps every new worktree cheap.</p>
</aside>
<h3 id="submodules">Submodules</h3>
<p><code>git worktree add</code> leaves submodules empty. If the new worktree has a <code>.gitmodules</code> file, the app runs <code>git submodule update --init --recursive</code> in it, so a worker never builds against a quietly missing dependency.</p>
<h2 id="cleaning-up-without-losing-work">Cleaning up without losing work</h2>
<p>Worktrees accumulate. The app reclaims them, but it is conservative about it:</p>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/1c85e868b61c0c4a7d53-light.svg" width="444" height="721" alt="When a worker&#39;s worktree may be removed" loading="lazy" decoding="async"><figcaption>When a worker&#39;s worktree may be removed</figcaption></figure>
<p>A worktree with uncommitted changes, or with a branch that has work not yet in your line, stays where it is. A deleted folder can be recreated; lost work cannot. The same caution applies to branches: the app keeps track of the branches it created, and it only touches those.</p>
<h2 id="what-this-changes-for-you">What this changes for you</h2>
<p>With each worker on its own branch, &quot;run four agents at once&quot; stops being a gamble. You can:</p>
<ul>
<li>give the manager a directive that splits into independent tasks and let the workers run in parallel;</li>
<li>read any worker&#39;s diff on its own, next to the conversation that produced it;</li>
<li>reject one worker&#39;s change without disturbing the others;</li>
<li>keep using your main checkout yourself while the team works.</li>
</ul>
<p>It is the same discipline a human team uses, applied to agents that cannot tell you they are about to step on each other. If you are wondering why we built a whole app around this, the <a href="https://superdevspace.com/blog/why-we-built-superdevspace">first post</a> tells that story.</p>
<h2 id="try-it">Try it</h2>
<p>The 14-day trial is Premium, with no card. <a href="https://superdevspace.com/download">Download SuperDevSpace</a>, point a new organisation at a repository, and watch the worktrees appear as the manager hires its first workers.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Why we built SuperDevSpace: an AI team on your own CLI subscription</title>
      <link>https://superdevspace.com/blog/why-we-built-superdevspace</link>
      <guid isPermaLink="true">https://superdevspace.com/blog/why-we-built-superdevspace</guid>
      <pubDate>Sun, 25 Oct 2026 08:00:00 GMT</pubDate>
      <dc:creator>SuperDevSpace</dc:creator>
      <category>launch</category>
      <category>agents</category>
      <category>claude-code</category>
      <description>A manager plans, workers build, each in its own terminal and git worktree — all on the agent CLI you already pay for. Why we built it.</description>
      <content:encoded><![CDATA[<p>If you already pay for an agent CLI like Claude Code, you have more capacity than one terminal window lets you use. The model can plan, write code, run tests and explain itself. What it cannot do on its own is be five people at once, keep track of who is doing what, and hand you one honest report at the end of the day.</p>
<p>That gap is why we built SuperDevSpace. It is a desktop app that turns the CLI you already have into a small team: a manager that plans the work and workers that do it, each in its own terminal and its own git worktree.</p>
<aside class="blog-callout blog-callout-note" role="note" aria-label="Note"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg><span>We sell the orchestra, not the musicians</span></p><p>SuperDevSpace does not sell models or tokens. It drives the agent CLI you already pay for, under your own agreement with its provider.</p>
</aside>
<h2 id="the-problem-with-one-agent-in-one-terminal">The problem with one agent in one terminal</h2>
<p>Working with a single coding agent feels great for a single task. It falls apart the moment you have three things to do in the same repository:</p>
<ul>
<li>You can open a second terminal, but both agents now edit the same checkout. One of them runs the test suite while the other is halfway through a refactor.</li>
<li>You become the project manager. You split the work, you remember which terminal had which task, you copy context from one session to the next.</li>
<li>Nothing writes down what happened. When you come back after lunch, the only record is a scrollback buffer.</li>
</ul>
<p>None of this is a model problem. It is an organisation problem, and organisation is something software is good at.</p>
<div class="table-scroll"><table><thead><tr><th></th><th>One agent, one terminal</th><th>A SuperDevSpace organisation</th></tr></thead><tbody><tr><td>Parallel work without collisions</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>A worktree and branch per worker</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>Work split into tasks on a board</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>A written report per task</td><td><span class="blog-no" role="img" aria-label="No">✗</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>You review the diff before it lands</td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr>
<tr><td>Runs on the CLI you already pay for</td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td><td><span class="blog-yes" role="img" aria-label="Yes">✓</span></td></tr></tbody></table></div>
<h2 id="what-superdevspace-actually-does">What SuperDevSpace actually does</h2>
<p>In SuperDevSpace every repository is an <strong>organisation</strong>. Each organisation has a <strong>manager</strong>: a real agent CLI session running in a real terminal that you can see and type into. You give the manager a directive in plain language — by typing, or by dictating it with voice typing.</p>
<figure class="blog-diagram" data-diagram><img class="blog-diagram-img blog-diagram-light" src="https://superdevspace.com/blog/diagrams/468c233146b5a3da350e-light.svg" width="459" height="640" alt="How one directive becomes merged work" loading="lazy" decoding="async"><figcaption>How one directive becomes merged work</figcaption></figure>
<p>The manager then does what a lead would do:</p>
<div class="blog-steps"><ol>
<li><strong>Plan.</strong> It opens a sprint and breaks the directive into tasks on a board, each with a short brief.</li>
<li><strong>Hire.</strong> It hires workers for those tasks. Every worker is another real CLI session in its own visible terminal tab, with a role — a frontend developer, a QA engineer, and so on.</li>
<li><strong>Isolate.</strong> Every worker gets its own git worktree on its own branch, so parallel work never collides in one checkout. A separate post explains <a href="https://superdevspace.com/blog/parallel-coding-agents-git-worktrees">how that works</a>.</li>
<li><strong>Review.</strong> When a worker finishes, it submits a report. The manager reviews it, merges the branch, and asks for fixes when something is off.</li>
<li><strong>Report.</strong> You get one consolidated report instead of five scrollbacks.</li>
</ol>
</div>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/team-roles.webp" alt="The &quot;Add your agents&quot; dialog: a grid of roles such as frontend, backend, QA engineer, code reviewer, designer and DevOps, with a name field and optional extra instructions" loading="lazy" decoding="async"><figcaption>Choosing a worker&#39;s role when the team is set up (real app, shown in Turkish).</figcaption></figure>
<p>You can always drop in. Every agent has a chat view and its real terminal — one session, two ways to look at it — and every change shows up as a diff next to the conversation that produced it, so you review before it lands on your main line.</p>
<figure class="blog-figure"><img src="https://superdevspace.com/blog/shots/board-sprint.webp" alt="An organisation&#39;s sprint board with columns for backlog, to do, in progress, awaiting approval, in review and done, and task cards labelled by lane" loading="lazy" decoding="async"><figcaption>The sprint board of a demo organisation while its team works (real app, shown in Turkish).</figcaption></figure>
<h2 id="your-subscription-your-machine-your-code">Your subscription, your machine, your code</h2>
<p>The most important design decision is also the simplest: <strong>SuperDevSpace drives a CLI you already pay for.</strong> We never resell model access, so nothing you run shows up on a bill from us beyond the SuperDevSpace subscription itself.</p>
<p>That decision has consequences we like:</p>
<ul>
<li><strong>Agents run as local processes on your machine</strong>, against your local repositories. Your source, prompts, terminal output and file paths are never sent to our servers. Our account service stores an account, a subscription state and a device list.</li>
<li><strong>You choose the CLI per organisation.</strong> Claude Code, OpenAI Codex, Gemini CLI, Aider, Qwen Code, Cursor CLI and OpenCode are all selectable. Claude Code is the one the app speaks fluently today — hooks, resume, MCP tools, permission answers. The other six start and run; the app marks them experimental and tells you which extras are not wired yet instead of failing quietly.</li>
<li><strong>Nothing is locked into our cloud</strong>, because there is no cloud doing the work.</li>
</ul>
<p>Before the first directive, it is worth checking that the CLI and the repository are where you expect them:</p>
<pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> claude</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> --version</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> cd</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> ~/code/your-project</span></span>
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">$</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> git</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> status</span></span></code></pre>
<h2 id="the-parts-around-the-team">The parts around the team</h2>
<p>A team needs more than terminals. A few of the things that come with every plan:</p>
<ul>
<li><strong>A board that tells the truth.</strong> Sprints, tasks, briefs and reports. A report says what failed, not just what passed.</li>
<li><strong>Inspector.</strong> Click an element in your running web page and send it to an agent with the component, file and line attached. It works with Vite, Next.js and static sites.</li>
<li><strong>Approvals from your phone.</strong> When an agent needs a decision, it asks you. The phone app shows the board, the agents and the pending approvals, so you can answer a permission prompt away from your desk.</li>
<li><strong>A whiteboard per organisation</strong> (Excalidraw) that agents can read and draw on.</li>
</ul>
<figure class="blog-figure blog-figure-video"><video class="blog-video" muted loop playsinline controls preload="metadata" data-autoplay aria-label="A short silent loop from the product tour: creating an organisation and its first steps"><source src="https://superdevspace.com/media/superdevspace-tanitim-loop.mp4" type="video/mp4"></video><figcaption>A few seconds of the real product tour (app shown in Turkish).</figcaption></figure>
<p>Premium adds the pieces that reach further: a design mode built on Penpot with a Designer agent that draws in the file, schedules that run directives on a timetable, and a peer link that lets a manager on your Mac hand work to a manager on your Windows PC. The <a href="https://superdevspace.com/pricing">pricing page</a> has the full comparison.</p>
<h2 id="what-we-do-not-promise">What we do not promise</h2>
<aside class="blog-callout blog-callout-warning" role="note" aria-label="Warning"><p class="blog-callout-title"><svg class="blog-icon" viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"/><path d="M12 9v4"/><path d="M12 17h.01"/></svg><span>Precise rather than impressive</span></p><p>SuperDevSpace does not make the model smarter; it gives the model a structure to work in. It runs on macOS (Apple silicon) and Windows (64-bit); Linux has no date yet, and we will not invent one.</p>
</aside>
<p>A team of agents still needs a boss: you decide what gets built, and you approve what reaches your main branch.</p>
<h2 id="try-it">Try it</h2>
<p>The trial is 14 days of Premium, with no card. Your CLI subscription stays yours, and so does your code. If you want to see the team at work on your own repository, <a href="https://superdevspace.com/download">download SuperDevSpace</a> and give the manager its first directive.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
