<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Don Karter</title>
    <description>The latest articles on DEV Community by Don Karter (@donk8r).</description>
    <link>https://dev.to/donk8r</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3868460%2F00d65e09-1e87-48db-8634-1af15e5f7438.jpeg</url>
      <title>DEV Community: Don Karter</title>
      <link>https://dev.to/donk8r</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/donk8r"/>
    <language>en</language>
    <item>
      <title>Benchmarking AI Coding Agents on Real Pull Requests</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Sat, 01 Aug 2026 17:25:42 +0000</pubDate>
      <link>https://dev.to/donk8r/benchmarking-ai-coding-agents-on-real-pull-requests-22k9</link>
      <guid>https://dev.to/donk8r/benchmarking-ai-coding-agents-on-real-pull-requests-22k9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;No synthetic puzzles, no contaminated suites: 25 tasks harvested from PRs merged in 2026 across five languages, graded by each project's own held-out tests. Four agents at stock settings. octomind with an open model solved 24/25 - ahead of Claude Code with Opus - while the same model in another harness solved 19 at double the cost. Here's how we built the benchmark and what it taught us.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We wanted one number we could actually trust: if you hand a coding agent the kind of task a maintainer faces on a normal Tuesday - a real bug, a real feature request, in a real codebase - how often does it deliver a fix the project's own test suite accepts?&lt;/p&gt;

&lt;p&gt;None of the public benchmarks could give us that number, so we built octobench. This post is the story of how, what broke along the way, and what the scoreboard says.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not an existing benchmark
&lt;/h2&gt;

&lt;p&gt;Two problems kept biting us with the popular suites.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Contamination.&lt;/strong&gt; The well-known benchmarks are old enough that frontier models have seen the fixes - sometimes literally, commit by commit - in training data. At one point we caught a model running git show on a commit hash it had no business knowing about. Whatever that measures, it isn't problem-solving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Taste-grading.&lt;/strong&gt; Many benchmark tasks are graded by tests that assert an implementer's arbitrary choices: an internal variable name, the exact wording of an error message. An agent can write a maintainer-grade fix and fail because it phrased an error differently than the original author. That measures mimicry, not engineering.&lt;/p&gt;

&lt;p&gt;So the design goals were: real tasks, fresh tasks, fair grading.&lt;/p&gt;

&lt;h2&gt;
  
  
  25 tasks, 5 languages, mostly newer than the models
&lt;/h2&gt;

&lt;p&gt;We harvested every task from a real, recently-merged pull request in a respected open-source project: werkzeug, click, anyio, pydantic, twig, carbon, symfony, guzzle, commonmark, uuid, rayon, chrono, bytes, serde-json, fmt, yaml-cpp, catch2, spdlog, eslint, fastify, undici, pino, pino-pretty.&lt;/p&gt;

&lt;p&gt;That list is deliberate on two axes. &lt;strong&gt;Languages:&lt;/strong&gt; five of them - python, php, rust, c++, js - because an agent that's great at python and lost in a CMake build is not a general coding agent. &lt;strong&gt;Freshness:&lt;/strong&gt; every fix was merged in 2026, mostly after current model training cutoffs - several within days of harvesting. One case, chrono's reversed date iterators, was merged the same morning we picked it. A benchmark you can re-harvest as cutoffs advance is a benchmark that can't go stale.&lt;/p&gt;

&lt;p&gt;The scenario mix runs from one-line crash fixes to multi-file features, and each case reconstructs the moment before the fix existed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;setup.sh&lt;/strong&gt; checks out the repository at the commit before the fix - as a single-commit shallow clone, so the answer isn't hiding in the git object store - prepares the toolchain, and removes the git remote so the agent can't just fetch the upstream fix.&lt;/li&gt;
&lt;li&gt;The agent gets a task prompt and works in the repo like a hired contractor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;validate.sh&lt;/strong&gt; runs after the agent finishes: it fetches the merged fix's test files - which the agent has never seen - overwrites whatever the agent may have done to the test suite, and runs exactly those tests. The project's own tests, written by the project's own maintainers, decide pass or fail.&lt;/li&gt;
&lt;li&gt;An LLM judge separately grades work quality from the diff and logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before any case entered the benchmark it had to prove itself fail-to-pass: held-out tests must fail on the pre-fix code and pass with the real merged fix applied. No proof, no case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing prompts that don't cheat - in either direction
&lt;/h2&gt;

&lt;p&gt;For 20 tasks we ran a dedicated agent (octomind's developer:reverse-spec) over each merged commit to reconstruct the request that plausibly produced it, then curated by hand with one rule - the derivability rule: everything the hidden tests assert must be derivable from the prompt. Bug fixes got a short informal prompt, because any correct fix passes. Features whose tests pin public API names or exact output formats got a spec-tight version, because a real requester would state a wire format.&lt;/p&gt;

&lt;p&gt;For the other 5 - one per language - we used the actual GitHub issue text, verbatim, trimmed only of fix-leaking sections (one author had helpfully written "I have a PR ready that does X"). That tests something different: turning a user-shaped bug report, sometimes with a screenshot instead of expected output, into a maintainer-grade fix.&lt;/p&gt;

&lt;p&gt;A few favorites, by the skill they isolate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;anyio's cancel-scope spin&lt;/strong&gt; - a 4-line fix that requires understanding why an asyncio event loop pins a CPU core. Tiny diff, deep async reasoning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;guzzle's cookie prefixes&lt;/strong&gt; - 27 lines with three independent traps; the naive startsWith("__Secure-") &amp;amp;&amp;amp; !secure fix fails half the tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;commonmark's fenced-code tabs&lt;/strong&gt; - a user reported "code blocks sometimes lose their first character" with a screenshot. The held-out fixtures include cases the issue never mentions - only a true root-cause fix passes, a symptom-patch fails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pino-pretty's control characters&lt;/strong&gt; - two hidden tests exist purely to punish over-broad sanitizing: they pass on the broken code and fail any fix that doesn't respect the trust boundary.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Eating our own dogfood
&lt;/h2&gt;

&lt;p&gt;Before the final run, three reviewers read every held-out assertion against every prompt. The audit caught real problems - in our benchmark, not the agents. One case's tests asserted the exact prose of an error message the issue never quoted; two frontier agents produced perfect fixes (one even picked the same error-code number as the maintainer) and both failed on wording. We replaced the case. Another case's hidden tests contradicted its own issue text. A third had its held-out tests inside a source file, so restoring gold tests wholesale would silently revert a correct fix.&lt;/p&gt;

&lt;p&gt;The meta-lesson: benchmark infrastructure fails in ways that look exactly like model failures. Every anomaly we chased - a judge scoring 0 on a passing run, a "solved" case with an empty diff - deserved a real root-cause, and about half were ours.&lt;/p&gt;

&lt;h2&gt;
  
  
  The scoreboard
&lt;/h2&gt;

&lt;p&gt;Four agents, each at its stock, out-of-the-box single-agent invocation. No tuning, no custom prompts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Solved&lt;/th&gt;
&lt;th&gt;Judge Σ / 2500&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Wall Time&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;octomind + glm-5.2&lt;/td&gt;
&lt;td&gt;24/25&lt;/td&gt;
&lt;td&gt;2264&lt;/td&gt;
&lt;td&gt;$63.43&lt;/td&gt;
&lt;td&gt;3.6h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;claude code + claude-opus-5&lt;/td&gt;
&lt;td&gt;23/25&lt;/td&gt;
&lt;td&gt;2262&lt;/td&gt;
&lt;td&gt;$81.79&lt;/td&gt;
&lt;td&gt;6.7h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;codex + gpt-5.6-sol&lt;/td&gt;
&lt;td&gt;21/25&lt;/td&gt;
&lt;td&gt;2127&lt;/td&gt;
&lt;td&gt;$14.86&lt;/td&gt;
&lt;td&gt;1.0h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opencode + glm-5.2&lt;/td&gt;
&lt;td&gt;19/25&lt;/td&gt;
&lt;td&gt;2093&lt;/td&gt;
&lt;td&gt;$129.54&lt;/td&gt;
&lt;td&gt;3.3h&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Four things the table says:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The harness matters as much as the model.&lt;/strong&gt; octomind and opencode ran the same model on the same endpoint at the same prices - a pure harness A/B. octomind solved 24, opencode 19, at half the cost. The difference is context discipline (opencode pushed 30M input tokens through one task where octomind needed 8M) and supervision: the cases opencode dropped are exactly the deep-root-cause, multi-trap ones where an unsupervised agent declares victory too early.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An open model beat Opus while paying full price for every token.&lt;/strong&gt; glm-5.2 ran via Ollama cloud, which has no prompt caching - every agent turn re-bought its full context at list price. Opus, meanwhile, billed ~97% of its context re-reads at 1/10 cache rates. glm's dollar figure is its worst case, and it still came out ahead on solves, cost, and time. On any cache-enabled endpoint the cost gap becomes a chasm.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speed has a thoroughness tax.&lt;/strong&gt; Codex is remarkable - 2-4 minutes per case, $0.59 median - but all four of its failures are cases that punish not checking one more caller, one more surface, one more trap.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No task was impossible.&lt;/strong&gt; Every case was solved by at least one agent, and the failure classes were clean: the trust-boundary case caught opus, codex, and opencode; the deep root-cause parser case caught everyone except octomind; and the one case both glm harnesses failed identically is a genuine model blind spot, not a harness artifact.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where the harness edge comes from
&lt;/h2&gt;

&lt;p&gt;A big share of "context discipline" is simply how the agent finds code. Stock claude code, codex, and opencode navigate a repository the same way: grep, read the file, grep again, read more - and every re-read is context the model pays for on every subsequent turn. octomind's developer:general ships with octocode out of the box: structural search that finds the exact symbol, signature, or code pattern directly, so the agent jumps to the three functions that matter instead of paging through files that don't. Enable semantic indexing and it also searches the codebase by meaning - "where is cookie validation handled" as a query, not a grep pattern. Fewer wrong files read is fewer tokens re-bought, and that compounds into the 8M-vs-30M input-token gap the A/B exposed.&lt;/p&gt;

&lt;p&gt;The other share is supervision. During dry runs an agent once "finished" a task by announcing "Now let me create a plan and implement the fix" - and stopping, with a zero diff. In a non-interactive run a text-only turn ends the session, so octomind added a deterministic guard: if a turn ends with no action while the agent's self-reported status is still in progress, it gets sent back to work. In the final run that failure mode was gone - and the cases opencode dropped are precisely the ones where nothing questioned an early declaration of victory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproduce it
&lt;/h2&gt;

&lt;p&gt;Everything is public and pinned: the full per-case table and reproduction guide at the exact commit of this run, per-case agent traces and judge verdicts in the run artifacts, and the case-harvesting pipeline - the reverse-spec agent, the derivability rules, the fail-to-pass verifier - documented so the set keeps growing as training cutoffs advance.&lt;/p&gt;

&lt;p&gt;The result we care most about isn't the ranking. It's the A/B: same model, same endpoint, five more tasks solved at half the cost. Model quality is table stakes now - the harness is where the leverage is. That's the thesis octomind is built on, and now we have the number.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>coding</category>
      <category>benchmark</category>
      <category>programming</category>
    </item>
    <item>
      <title>Workflows Come to the Cloud: Running Multi-Agent Pipelines from the Browser</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Wed, 29 Jul 2026 08:22:38 +0000</pubDate>
      <link>https://dev.to/donk8r/workflows-come-to-the-cloud-running-multi-agent-pipelines-from-the-browser-4lg</link>
      <guid>https://dev.to/donk8r/workflows-come-to-the-cloud-running-multi-agent-pipelines-from-the-browser-4lg</guid>
      <description>&lt;h1&gt;
  
  
  Workflows Come to the Cloud: Running Multi-Agent Pipelines from the Browser
&lt;/h1&gt;

&lt;p&gt;I've been building AI tools for three years now. Here's what I keep running into: most real work isn't a conversation – it's a contract.&lt;/p&gt;

&lt;p&gt;You have the input (an article, a diff, a pile of CSV data). You know what the output should be (social drafts, a review verdict, a readable report). What you want in between isn't chat. It's a pipeline: specialists doing their parts, handing off to each other, with an auditor gating the result before it reaches you.&lt;/p&gt;

&lt;p&gt;That's the core idea behind workflows in &lt;a href="https://github.com/muvon/octomind" rel="noopener noreferrer"&gt;Octomind&lt;/a&gt; – our session-first, multi-provider AI agent runtime. And as of this week, those workflows now run in the cloud panel, not just the CLI.&lt;/p&gt;

&lt;p&gt;Same pipelines. Same tap library. New surface.&lt;/p&gt;

&lt;p&gt;If you've been running &lt;code&gt;octomind workflow&lt;/code&gt; from your terminal, nothing changed – you just got a second way to do the same thing. If you haven't tried workflows yet, here's what I built and why I built it this way.&lt;/p&gt;

&lt;h2&gt;
  
  
  A workflow is a team with a contract
&lt;/h2&gt;

&lt;p&gt;Every workflow in Octomind is a declared pipeline of steps. Each step is a full agent run with its own role. Steps can be sequential, parallel, conditional – or loops, which is where it gets interesting.&lt;/p&gt;

&lt;p&gt;Take the &lt;code&gt;promote&lt;/code&gt; workflow. You feed it an article. It turns that article into platform-native social drafts. Here's what actually happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A researcher grounds the article in its source material&lt;/li&gt;
&lt;li&gt;A writer drafts per platform (Twitter, LinkedIn, whatever)&lt;/li&gt;
&lt;li&gt;An auditor checks each draft against quality gates&lt;/li&gt;
&lt;li&gt;If the audit fails, the draft loops back for re-editing&lt;/li&gt;
&lt;li&gt;The pipeline halts rather than shipping something the auditor rejected&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Or &lt;code&gt;review&lt;/code&gt; – it takes your unstaged diff and produces an independently verified verdict. Or &lt;code&gt;report&lt;/code&gt; – it turns raw data into a decision-ready document where every number is computed, never invented.&lt;/p&gt;

&lt;p&gt;There are fourteen of these in the public tap today. They're the same whether you run them from a terminal or a browser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# CLI still works exactly the same&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;article.md | octomind workflow promote
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The full input goes in at the start – the whole brief, up to 256 KB of it – and the finished result comes out at the end. No steering mid-flight, no drip-feeding context. That's not a limitation; it's the point. You're not chatting with a team, you're commissioning one.&lt;/p&gt;

&lt;h2&gt;
  
  
  From library to running pipeline
&lt;/h2&gt;

&lt;p&gt;In the cloud panel, the Library tab shows the catalog. Pick a workflow and the new-run screen asks for exactly two things: which machine, and your input.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Dry run&lt;/strong&gt; button is the part I'd point at first. It validates the workflow on the machine itself and renders the resolved pipeline – every step, every role, the loop caps – without spawning anything or reading your input.&lt;/p&gt;

&lt;p&gt;It's free. It takes a couple of seconds. And it means a broken pipeline fails before a single token burns.&lt;/p&gt;

&lt;p&gt;Starting a real run performs the same validation again on its own, so the button is a preview, not a chore. But I use it anyway. There's something useful about seeing the full pipeline shape before you commit to running it.&lt;/p&gt;

&lt;p&gt;Then the run page becomes the thing worth watching: the whole chain renders immediately from the validated plan, and steps light up as the stream comes in. A checkmark when a step completes. A spinner on the one running. A pass counter on loops as the auditor sends drafts back.&lt;/p&gt;

&lt;p&gt;You can close the tab and come back. The run belongs to the machine, not to your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  Artifacts: when output is a file, not text
&lt;/h2&gt;

&lt;p&gt;Under the result there's a detail we're calling artifacts. Workflow deliverables are often files – &lt;code&gt;promote&lt;/code&gt; writes drafts, &lt;code&gt;report&lt;/code&gt; renders a document – and the final message names the paths.&lt;/p&gt;

&lt;p&gt;The panel picks those mentions out and turns each one into a download chip, with inline previews for images and text. Nothing is fetched until you click – the mention is just a string until you ask for the file.&lt;/p&gt;

&lt;p&gt;This is also the security posture: text can name a path, but only you can fetch one. Sessions got the same mechanic: when an agent in a chat says it saved something, the file is right there to grab.&lt;/p&gt;

&lt;p&gt;Everything the run printed is kept, verbatim. The collapsible full log holds the validated plan, the machine-readable event stream, and the human progress view – downloadable, nothing summarized away. Step outputs get their own friendly view too, so you can read what each specialist handed to the next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest one-shots: why there's no retry button
&lt;/h2&gt;

&lt;p&gt;Here's a design decision I want to be explicit about: a workflow run has five states – queued, running, done, failed, canceled – and the last three are final.&lt;/p&gt;

&lt;p&gt;There is no resume. No retry-in-place. No "continue from step 3".&lt;/p&gt;

&lt;p&gt;The CLI has no such mode, and we didn't fake one in the UI. Partial re-execution of a pipeline whose earlier steps fed later ones is a good way to get confidently wrong output. If step 2 consumed step 1's output and step 5 consumed step 4's output, you can't just rerun step 3 without invalidating everything downstream.&lt;/p&gt;

&lt;p&gt;So a failed run tells you plainly what went wrong – the actual stderr tail, not a shrug – keeps every completed step's output visible (that spend was real, and the work is often still useful), and offers exactly one recovery: &lt;strong&gt;Run again&lt;/strong&gt;, which pre-fills a fresh run with the same workflow and input.&lt;/p&gt;

&lt;p&gt;Your runs list is history you can trust: what ran, what it cost, what came out.&lt;/p&gt;

&lt;p&gt;I'd rather give you a clean slate than a half-broken retry mechanism that produces garbage output.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs: nothing new
&lt;/h2&gt;

&lt;p&gt;There's no workflow fee and no new meter. A run's model calls flow through your account's hub key exactly like a session's – plan caps and credits decide, per published prices – and the machine bills per second while it works, like always.&lt;/p&gt;

&lt;p&gt;The run page shows the aggregated cost the pipeline reported, so you can see what a &lt;code&gt;promote&lt;/code&gt; actually costs you end to end. On the open models, it's typically cents.&lt;/p&gt;

&lt;p&gt;Dry runs are free. And workflows are on every plan, free tier included – the free tier's one-at-a-time model calls just serialize the steps, which makes runs slower, not smaller.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same contract as the CLI
&lt;/h2&gt;

&lt;p&gt;If you already run workflows from the terminal, nothing changed and everything got a second surface. The panel drives the same &lt;code&gt;octomind workflow&lt;/code&gt; binary on your machine, with the same tap resolution and the same machine-readable output contract the CLI exposes via &lt;code&gt;--format jsonl&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Machine-readable output&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;article.md | octomind workflow promote &lt;span class="nt"&gt;--format&lt;/span&gt; jsonl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One event per completed step. One aggregated cost at the end. A pipeline you tested locally behaves identically in the cloud, because it is identical.&lt;/p&gt;

&lt;p&gt;That's also the direction this is headed. Today the library is the public tap. The plan is for every account to get its own tap – personal workflows, edited in the panel with the same dry-run validation, distributed to your machines through the exact mechanism tap content already uses.&lt;/p&gt;

&lt;p&gt;One distribution system, not two.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why pipelines beat chat for production work
&lt;/h2&gt;

&lt;p&gt;I want to zoom out for a second. Why build this at all?&lt;/p&gt;

&lt;p&gt;Chat is great for exploratory work. You don't know what you're looking for. You want to poke around, ask follow-ups, change direction mid-conversation. A session – a conversation where you steer turn by turn – is exactly right for that.&lt;/p&gt;

&lt;p&gt;But production work is different. You have a contract. Input in, output out. You want repeatability. You want auditability. You want to know that if you run the same thing tomorrow, you get the same result.&lt;/p&gt;

&lt;p&gt;Workflows give you that. They're not better than sessions – they're different. And for a whole class of problems, they're the right tool.&lt;/p&gt;

&lt;p&gt;Here's what I mean:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Chat&lt;/strong&gt;: "Help me figure out what's wrong with this code"&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workflow&lt;/strong&gt;: "Review this diff and tell me if it's safe to merge"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chat&lt;/strong&gt;: "What should I post about this article?"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workflow&lt;/strong&gt;: "Turn this article into Twitter, LinkedIn, and Mastodon drafts"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chat&lt;/strong&gt;: "Help me analyze this data"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Workflow&lt;/strong&gt;: "Turn this CSV into a decision-ready report with computed metrics"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The chat version is open-ended. The workflow version has a contract. Both are useful. I use both. But they're not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical bit: how the pipeline actually runs
&lt;/h2&gt;

&lt;p&gt;Under the hood, a workflow run is a state machine. Each step is an agent invocation with its own context, role, and constraints. The pipeline orchestrates these invocations, passing outputs between steps, handling loops, and aggregating costs.&lt;/p&gt;

&lt;p&gt;The event stream is the key. Every step completion emits an event. The panel subscribes to that stream and renders it live. That's how you see steps light up, how loop counters increment, how the final cost gets computed.&lt;/p&gt;

&lt;p&gt;Here's what a simplified event stream looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{"event": "step_start", "step": "research", "role": "researcher"}
{"event": "step_complete", "step": "research", "output": "...", "cost": 0.002}
{"event": "step_start", "step": "write", "role": "writer"}
{"event": "step_complete", "step": "write", "output": "...", "cost": 0.004}
{"event": "step_start", "step": "audit", "role": "auditor"}
{"event": "audit_failed", "step": "audit", "reason": "..."}
{"event": "loop_iteration", "step": "write", "iteration": 2}
{"event": "step_complete", "step": "audit", "passed": true, "cost": 0.001}
{"event": "workflow_complete", "total_cost": 0.015, "artifacts": ["drafts/twitter.md", "drafts/linkedin.md"]}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI and the panel both consume this same stream. That's why they behave identically – they're two different UIs over the same underlying contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;If you haven't tried the cloud yet, it's open to everyone – no card, no invite. Create a machine, open Workflows, feed &lt;code&gt;promote&lt;/code&gt; a blog post you like, and watch a team you didn't have five minutes ago argue itself into shippable drafts.&lt;/p&gt;

&lt;p&gt;And if you're already running workflows from the CLI: nothing broke. Your taps still work. Your machines still work. You just got a browser option now.&lt;/p&gt;

&lt;p&gt;The repo is at &lt;a href="https://github.com/muvon/octomind" rel="noopener noreferrer"&gt;github.com/muvon/octomind&lt;/a&gt;. Apache-2.0, like everything we build. Pull it, run it, tell me what breaks.&lt;/p&gt;

&lt;p&gt;This is the original article: &lt;a href="https://octomind.run/blog/workflows-in-the-cloud" rel="noopener noreferrer"&gt;Workflows Come to the Cloud&lt;/a&gt;&lt;/p&gt;

</description>
      <category>octomind</category>
      <category>devops</category>
      <category>ai</category>
      <category>cloud</category>
    </item>
    <item>
      <title>We Built an Invite System. We Deleted It Three Days Later.</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Sun, 26 Jul 2026 15:18:29 +0000</pubDate>
      <link>https://dev.to/donk8r/we-built-an-invite-system-we-deleted-it-three-days-later-48p9</link>
      <guid>https://dev.to/donk8r/we-built-an-invite-system-we-deleted-it-three-days-later-48p9</guid>
      <description>&lt;p&gt;Three days after launch, we killed the invite gate on Octomind Cloud machines.&lt;/p&gt;

&lt;p&gt;Not paused. Not "temporarily opened." Deleted.&lt;/p&gt;

&lt;p&gt;Here's what happened, why it was wrong, and what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Confession
&lt;/h2&gt;

&lt;p&gt;At launch, machines were invite-only. We're bootstrapped – no investors – and hardware gets bought with revenue, not term sheets. A gate felt responsible. Don't let everyone in if you can't handle them.&lt;/p&gt;

&lt;p&gt;Three days of production taught us the gate was solving a problem we didn't have yet, and creating one we definitely did.&lt;/p&gt;

&lt;p&gt;Fleet had headroom. Bottleneck wasn't capacity – it was new users hitting a locked door and leaving before seeing what a machine actually is.&lt;/p&gt;

&lt;p&gt;So we removed it. The invite system is gone from the product. Fewer moving parts, one honest answer to "can I try it?": yes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Octomind Cloud Is (Briefly)
&lt;/h2&gt;

&lt;p&gt;Octomind Cloud is an agent runtime. Persistent Linux machines from $0.05/hr, real Docker inside, a hub of 21 models behind one key at published per-token prices, one wallet with caps.&lt;/p&gt;

&lt;p&gt;Free tier: $0, $0.15/day usage, 1 Tiny machine, no card required.&lt;/p&gt;

&lt;p&gt;The agent runs on these cloud machines, not your laptop. Sessions survive you closing the tab – keep running, full transcript when you come back.&lt;/p&gt;

&lt;p&gt;Whole stack is open source Apache-2.0: octomind, octocode, octobrain, octohub.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Three Days Taught Us
&lt;/h2&gt;

&lt;p&gt;Day one: invites felt prudent. Don't oversubscribe a fleet you're funding yourself.&lt;/p&gt;

&lt;p&gt;Day three: the prudent thing was creating friction for people who just wanted to see what this does.&lt;/p&gt;

&lt;p&gt;We watched the funnel. Signups were fine. Activation dropped at the invite wall. People weren't hitting capacity limits – they were hitting a locked door and bouncing.&lt;/p&gt;

&lt;p&gt;The invite system wasn't protecting us from overload. It was protecting us from users.&lt;/p&gt;

&lt;p&gt;That's backwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Changed
&lt;/h2&gt;

&lt;p&gt;As of today, every Octomind account – free tier included – can create a machine and have it running in under a minute. No codes, no waitlist, no earning your way in.&lt;/p&gt;

&lt;p&gt;Sign up, click, it's yours.&lt;/p&gt;

&lt;p&gt;What this means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New users sign up, create a machine – real Linux box, whole agent toolchain, web terminal, Docker inside – in under a minute&lt;/li&gt;
&lt;li&gt;Free tier, no card&lt;/li&gt;
&lt;li&gt;Unredeemed codes are moot&lt;/li&gt;
&lt;li&gt;Referral program still alive (both earn storage and credit bonuses)&lt;/li&gt;
&lt;li&gt;Paid plans still buy bigger everything (caps, sizes, slots) – just no longer buy a key to a door that's now open&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're still bootstrapped. Fleet grows as subscriptions fund hardware. If demand outruns capacity, machine creation says so plainly rather than silently degrading.&lt;/p&gt;

&lt;p&gt;Honesty over optics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;Open the panel, sign up free (no card), create a machine. Pick a name, pick a size, done – boots in seconds. Open a session and put the agent to work.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/muvon/octomind" rel="noopener noreferrer"&gt;https://github.com/muvon/octomind&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full post: &lt;a href="https://octomind.run/blog/cloud-invites-removed" rel="noopener noreferrer"&gt;https://octomind.run/blog/cloud-invites-removed&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>opensource</category>
      <category>startup</category>
    </item>
    <item>
      <title>We Taught Our Code Search to Think — Here's What Broke (and What Fixed It)</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Sun, 26 Jul 2026 08:14:36 +0000</pubDate>
      <link>https://dev.to/donk8r/we-taught-our-code-search-to-think-heres-what-broke-and-what-fixed-it-47ao</link>
      <guid>https://dev.to/donk8r/we-taught-our-code-search-to-think-heres-what-broke-and-what-fixed-it-47ao</guid>
      <description>&lt;p&gt;Octocode is our open source semantic code search engine built in Rust (Apache-2.0). It's the code-search layer behind Octomind, and you can grab it at &lt;a href="https://github.com/muvon/octocode" rel="noopener noreferrer"&gt;https://github.com/muvon/octocode&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Last month we added an LLM reasoning step to the retrieval pipeline. The first version made things worse.&lt;/p&gt;

&lt;p&gt;Hit@10 dropped 7 points. Recall@10 dropped 7.5 points. The model was pruning away true positives because it thought they weren't relevant.&lt;/p&gt;

&lt;p&gt;Here's what we learned, what we shipped, and why "add contextual retrieval" is not the universal win everyone claims.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Similarity Is Not Relevance
&lt;/h2&gt;

&lt;p&gt;Octocode uses hybrid retrieval — vector search plus keyword overlap. Works well. But there's a gap: the snippet that shares the most tokens with your query is often not the code that answers it.&lt;/p&gt;

&lt;p&gt;Ask "where do we decide a request is retryable" and the similarity ranker hands you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The retry config struct&lt;/li&gt;
&lt;li&gt;The retry constant
&lt;/li&gt;
&lt;li&gt;The test that names the word four times&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The actual function that makes the call? Rank seven.&lt;/p&gt;

&lt;p&gt;Vector search ranks by similarity. Hybrid adds keyword matching. But neither reads the code. Neither knows what the code &lt;em&gt;does&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Attempt: Pure LLM Reranking
&lt;/h2&gt;

&lt;p&gt;We added an LLM reasoning step after hybrid retrieval. The model reads the candidate code bodies and re-ranks by whether they actually answer the query. No new index, no reindexing — just a reranker sitting between retrieval and results.&lt;/p&gt;

&lt;p&gt;Tested on 127 queries. Here's what happened:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MRR&lt;/td&gt;
&lt;td&gt;0.595&lt;/td&gt;
&lt;td&gt;0.752&lt;/td&gt;
&lt;td&gt;+0.157&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NDCG@10&lt;/td&gt;
&lt;td&gt;0.658&lt;/td&gt;
&lt;td&gt;0.758&lt;/td&gt;
&lt;td&gt;+0.100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hit@10&lt;/td&gt;
&lt;td&gt;0.913&lt;/td&gt;
&lt;td&gt;0.843&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.071&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recall@10&lt;/td&gt;
&lt;td&gt;0.886&lt;/td&gt;
&lt;td&gt;0.811&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;−0.075&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;MRR and NDCG went up. The ranking quality improved. But Hit@10 and Recall@10 &lt;em&gt;dropped&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The LLM was being too aggressive. It returned only what it judged relevant and quietly discarded true positives at ranks 6–10. Better ranking head, worse recall floor.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fix: Fuse, Don't Replace
&lt;/h2&gt;

&lt;p&gt;Don't let the LLM replace the ranking — fuse it with the hybrid ranking via Reciprocal Rank Fusion (RRF).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;hybrid_rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;reasoning_weight&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;k&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;reasoning_rank&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hybrid rank always contributes — that's your recall floor. Reasoning rank drives the head.&lt;/p&gt;

&lt;p&gt;Final fused results on the same 127 queries:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MRR&lt;/td&gt;
&lt;td&gt;0.595&lt;/td&gt;
&lt;td&gt;0.809&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+36%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NDCG@10&lt;/td&gt;
&lt;td&gt;0.658&lt;/td&gt;
&lt;td&gt;0.833&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+27%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hit@5&lt;/td&gt;
&lt;td&gt;0.827&lt;/td&gt;
&lt;td&gt;0.953&lt;/td&gt;
&lt;td&gt;+0.126&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hit@10&lt;/td&gt;
&lt;td&gt;0.913&lt;/td&gt;
&lt;td&gt;0.969&lt;/td&gt;
&lt;td&gt;+0.056&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recall@5&lt;/td&gt;
&lt;td&gt;0.777&lt;/td&gt;
&lt;td&gt;0.924&lt;/td&gt;
&lt;td&gt;+0.147&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recall@10&lt;/td&gt;
&lt;td&gt;0.886&lt;/td&gt;
&lt;td&gt;0.944&lt;/td&gt;
&lt;td&gt;+0.058&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every metric up. Hit@5 at 0.953 means nineteen times out of twenty the answer is in the top five.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Tuned (and What Didn't Matter)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Reasoning weight:&lt;/strong&gt; Best at 2.0. Weight 5 buys nothing and costs recall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Candidates:&lt;/strong&gt; 25 is the sweet spot. We tried 40 — worse across the board.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context level:&lt;/strong&gt; Full code bodies win by a lot. Signatures-only was the worst performer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM temperature:&lt;/strong&gt; 1.0 beat 0.3 and 0.0. Counterintuitive, but the model reasons better with normal sampling. Stiff decoding made it dumber.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Did NOT Work: Contextual Retrieval
&lt;/h2&gt;

&lt;p&gt;Anthropic's contextual retrieval approach — adding descriptions at index time — gets recommended everywhere. We tested it.&lt;/p&gt;

&lt;p&gt;Hit@5: −0.008&lt;br&gt;&lt;br&gt;
Recall@10: −0.019&lt;/p&gt;

&lt;p&gt;It trades recall for ranking. On code, that's a net loss. "Add contextual retrieval" is cargo-culted advice — not a universal win. We didn't ship it.&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Turn It On
&lt;/h2&gt;

&lt;p&gt;The feature is in Octocode's master branch now (not yet released — landing soon). Off by default, one config flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[search.reasoning]&lt;/span&gt;
&lt;span class="py"&gt;enabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;model&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"deepseek:deepseek-v4-flash"&lt;/span&gt;
&lt;span class="py"&gt;max_candidates&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
&lt;span class="py"&gt;context_level&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"full"&lt;/span&gt;
&lt;span class="py"&gt;reasoning_weight&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;
&lt;span class="py"&gt;final_top_k&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or swap in any other provider:model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[search.reasoning]&lt;/span&gt;
&lt;span class="py"&gt;enabled&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="py"&gt;model&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"openai:gpt-4o-mini"&lt;/span&gt;
&lt;span class="py"&gt;max_candidates&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;
&lt;span class="py"&gt;context_level&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"full"&lt;/span&gt;
&lt;span class="py"&gt;reasoning_weight&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;2.0&lt;/span&gt;
&lt;span class="py"&gt;final_top_k&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Any provider:model works. One LLM call per semantic search. &lt;code&gt;structural_search&lt;/code&gt; stays pure grep. No reindex needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway
&lt;/h2&gt;

&lt;p&gt;LLM reranking works – but only if you keep the hybrid ranking as a floor. Fusion beats replacement. And don't cargo-cult "best practices" without testing them on your actual workload.&lt;/p&gt;

&lt;p&gt;Octocode is open source under Apache-2.0. The benchmark suite, ground truth dataset, and raw results are all in the repo: &lt;a href="https://github.com/muvon/octocode" rel="noopener noreferrer"&gt;https://github.com/muvon/octocode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This feature is merged to master now, not yet released – landing soon.&lt;/p&gt;

&lt;p&gt;Full writeup with all the numbers and tuning details: &lt;a href="https://muvon.io/blog/reasoning-retrieval-code-search" rel="noopener noreferrer"&gt;https://muvon.io/blog/reasoning-retrieval-code-search&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codesearch</category>
      <category>llm</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Tap Registry Grew Beyond Code: 108 Agents, 27 Domains, and Workflows That Verify Their Own Work</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Fri, 24 Jul 2026 10:30:00 +0000</pubDate>
      <link>https://dev.to/donk8r/the-tap-registry-grew-beyond-code-108-agents-27-domains-and-workflows-that-verify-their-own-work-4lc6</link>
      <guid>https://dev.to/donk8r/the-tap-registry-grew-beyond-code-108-agents-27-domains-and-workflows-that-verify-their-own-work-4lc6</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post originally appeared on &lt;a href="https://octomind.run/blog/octomind-tap-registry-expansion" rel="noopener noreferrer"&gt;octomind.run/blog/octomind-tap-registry-expansion&lt;/a&gt;. Cross-posted to dev.to.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;The cloud launch got the attention this week. But something quieter happened alongside it — the tap registry went through its biggest expansion since taps were first introduced, and it's worth a closer look if you're building with agents.&lt;/p&gt;

&lt;p&gt;The default registry now ships &lt;strong&gt;108 agents across 27 domains&lt;/strong&gt;, 71 capabilities, and 18 workflows. All available with one command. No downloads, no marketplace accounts, no setup.&lt;/p&gt;

&lt;p&gt;Here's what changed and why it matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a tap actually is
&lt;/h2&gt;

&lt;p&gt;If you haven't used taps before, the mental model is simple: a tap is a &lt;strong&gt;git-hosted registry of TOML manifests&lt;/strong&gt;. Each manifest defines one agent — its system prompt, model, tools, MCP servers. Octomind fetches the manifest at runtime and merges it into your config.&lt;/p&gt;

&lt;p&gt;Nothing gets installed. There's no global state to rot.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;octomind run developer:rust      &lt;span class="c"&gt;# a Rust specialist&lt;/span&gt;
octomind run lawyer:immigration  &lt;span class="c"&gt;# an immigration-law explainer&lt;/span&gt;
octomind workflow harden         &lt;span class="c"&gt;# a multi-step security audit pipeline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The tag format is &lt;code&gt;domain:spec&lt;/code&gt;. The official &lt;code&gt;muvon/octomind-tap&lt;/code&gt; ships as the default registry. You can browse it on the site, and adding your own registry is a single &lt;code&gt;octomind tap&lt;/code&gt; away.&lt;/p&gt;

&lt;p&gt;The point: agents should be distributed like code — reviewable in a diff, not installed like apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  The registry isn't just for developers anymore
&lt;/h2&gt;

&lt;p&gt;This is the biggest shift. The tap registry started as a developer toolbox, but most problems people bring to an agent aren't code problems.&lt;/p&gt;

&lt;p&gt;This week added 17 new agents across domains you wouldn't expect in a dev tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Family&lt;/strong&gt; — &lt;code&gt;family:parenting&lt;/code&gt;, &lt;code&gt;family:eldercare&lt;/code&gt;, &lt;code&gt;family:bereavement&lt;/code&gt; (an agent for the paperwork and decisions that arrive at the worst possible time, written with the gravity that moment deserves)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Finance&lt;/strong&gt; — &lt;code&gt;finance:tax&lt;/code&gt;, &lt;code&gt;finance:retirement&lt;/code&gt;, &lt;code&gt;finance:insurance&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Health &amp;amp; wellbeing&lt;/strong&gt; — &lt;code&gt;doctor:sleep&lt;/code&gt;, &lt;code&gt;coach:wellbeing&lt;/code&gt;, &lt;code&gt;coach:negotiation&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Life&lt;/strong&gt; — &lt;code&gt;lawyer:immigration&lt;/code&gt;, &lt;code&gt;home:realty&lt;/code&gt;, &lt;code&gt;vet:general&lt;/code&gt;, &lt;code&gt;vet:behavior&lt;/code&gt;, &lt;code&gt;vehicle:mechanic&lt;/code&gt;, &lt;code&gt;tutor:coding&lt;/code&gt;, &lt;code&gt;content:fiction&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These aren't replacements for licensed professionals. They're structured, well-prompted assistants that help you prepare, organize, and understand. The value is that the preparation — which is honestly 80% of the work — no longer starts from a blank page.&lt;/p&gt;

&lt;p&gt;There's also &lt;code&gt;assistant:concierge&lt;/code&gt;, which routes across the whole ecosystem. A bare &lt;code&gt;octomind run&lt;/code&gt; discovers matching specialists by intent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four new workflows that close the loop
&lt;/h2&gt;

&lt;p&gt;Workflows are multi-step TOML pipelines. Each step gets its own agent, model, and toolset, with validate scripts acting as deterministic quality gates between steps.&lt;/p&gt;

&lt;p&gt;The shared pattern across all four new workflows: &lt;strong&gt;don't stop at the first answer — loop until the check passes.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  harden
&lt;/h3&gt;

&lt;p&gt;An OWASP-lens security audit of your current repo, then a fix ⇄ re-audit loop that runs until findings are resolved and your project's own checks stay green.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;octomind workflow harden
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  upgrade
&lt;/h3&gt;

&lt;p&gt;Dependency bumps — named packages, or safe patch/minor by default — running in a bump ⇄ verify loop until your build is green.&lt;/p&gt;

&lt;h3&gt;
  
  
  scout
&lt;/h3&gt;

&lt;p&gt;This one's interesting. It's the phase &lt;em&gt;before&lt;/em&gt; anyone has an idea: take a field or market, mine it for real evidenced pain through three blind parallel sweeps, and come back with vetted opportunities instead of vibes.&lt;/p&gt;

&lt;h3&gt;
  
  
  learn
&lt;/h3&gt;

&lt;p&gt;Bootstraps a project knowledge base. Reads the codebase, extracts durable facts, promotes them into &lt;code&gt;.box/&lt;/code&gt; where they're indexed and readable by every agent that works on the project afterward.&lt;/p&gt;

&lt;p&gt;All four run the same way as everything else — &lt;code&gt;octomind workflow&lt;/code&gt; — reading from stdin, writing to stdout, scriptable by construction. That brings the registry to 18 workflows total.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents that remember the project
&lt;/h2&gt;

&lt;p&gt;A new &lt;code&gt;octobrain&lt;/code&gt;-backed knowledge capability gives agents durable project memory. &lt;code&gt;assistant:knowledge&lt;/code&gt; curates it, the &lt;code&gt;learn&lt;/code&gt; workflow seeds it from the codebase.&lt;/p&gt;

&lt;p&gt;Facts get extracted once, stored in the repo's &lt;code&gt;.box/&lt;/code&gt; directory, and become available to every specialist that touches the project afterward. You run &lt;code&gt;learn&lt;/code&gt; once. Every agent after that starts with context instead of zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  The unglamorous fixes that actually matter
&lt;/h2&gt;

&lt;p&gt;Two things that don't make headlines but fix real pain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependency installs now work in containers and CI.&lt;/strong&gt; Tap agents bootstrap their own tooling (Node for MCP servers), and those scripts assumed &lt;code&gt;sudo&lt;/code&gt; exists. Root containers — Docker, CI images — don't have it. Every dep script now escalates through a helper that runs bare as root, uses &lt;code&gt;sudo&lt;/code&gt; when present, and tells you exactly what's missing otherwise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web search needs no API key.&lt;/strong&gt; The &lt;code&gt;websearch&lt;/code&gt; capability defaults to DuckDuckGo now. One less credential between a fresh install and a working researcher agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use it anywhere
&lt;/h2&gt;

&lt;p&gt;Everything works on a local Octomind install (one curl command) and comes preloaded on cloud machines. Models route through the hub with &lt;code&gt;octohub:auto&lt;/code&gt; routing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Browse the full registry&lt;/strong&gt; at &lt;a href="https://octomind.run/tap" rel="noopener noreferrer"&gt;octomind.run/tap&lt;/a&gt; — see what's available before you build something from scratch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the manifests&lt;/strong&gt; at &lt;a href="https://github.com/Muvon/octomind-tap" rel="noopener noreferrer"&gt;github.com/Muvon/octomind-tap&lt;/a&gt; — they're TOML files, fully reviewable, and contributions are open&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try a workflow&lt;/strong&gt; — &lt;code&gt;octomind workflow harden&lt;/code&gt; on a repo you care about and see the loop-until-green pattern in action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If there's a specialist you keep wishing existed, it's one manifest away. And if you build one, we'd genuinely like to see it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>agents</category>
    </item>
    <item>
      <title>Your First Five Minutes with Octomind: One Install, One Login, Zero API Keys</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Fri, 24 Jul 2026 04:43:08 +0000</pubDate>
      <link>https://dev.to/donk8r/your-first-five-minutes-with-octomind-one-install-one-login-zero-api-keys-p2h</link>
      <guid>https://dev.to/donk8r/your-first-five-minutes-with-octomind-one-install-one-login-zero-api-keys-p2h</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post originally appeared on &lt;a href="https://octomind.run/blog/octomind-hub-quickstart" rel="noopener noreferrer"&gt;octomind.run/blog/octomind-hub-quickstart&lt;/a&gt;. Cross-posted to dev.to.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Every AI coding tool starts the same way: sign up, grab an API key, paste it into a config file, forget it's there until it leaks. Octomind doesn't do that. One curl command, one browser click, and you're talking to an agent that reads your code, finds bugs, and fixes them — then proves the fix works.&lt;/p&gt;

&lt;p&gt;Total cost for the whole thing: under two cents.&lt;/p&gt;

&lt;p&gt;Here's the walkthrough. Everything below ran in a clean Ubuntu 24.04 container. No dotfiles, no cached credentials, no Node, no Python pre-installed. Just the agent and a real codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you're actually getting
&lt;/h2&gt;

&lt;p&gt;Octomind's Hub is an OpenAI-compatible gateway sitting in front of a curated model roster. Not a 400-model dropdown where half the entries are deprecated — 21 models that earn their place.&lt;/p&gt;

&lt;p&gt;Open-weights models (DeepSeek, Qwen, Kimi, GLM, MiniMax, Gemma) ship with every paid plan. Premium models (Claude, GPT, Gemini) bill per token from prepaid credits at published prices. There's a free model with a daily allowance, so a brand-new account can try everything without entering a card.&lt;/p&gt;

&lt;p&gt;The key part: &lt;strong&gt;you never handle an API key.&lt;/strong&gt; Not once.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;octomind login&lt;/code&gt; runs a device flow — same pattern as &lt;code&gt;gh auth login&lt;/code&gt;. The CLI shows a short code, you confirm in your browser, and the Hub mints a key scoped to that specific machine. No password in your terminal. No secret in your shell history.&lt;/p&gt;

&lt;p&gt;Every machine gets its own revocable key. Log in from your laptop and your server, and you'll see two keys in the panel named after each device. Revoke one, the other keeps working. Fair use is per account, not per key — past the parallelism limit, requests queue briefly instead of failing.&lt;/p&gt;

&lt;p&gt;And the meter is visible while you work. Every response prints what it cost. No end-of-month archaeology.&lt;/p&gt;

&lt;p&gt;Under the hood, it's all &lt;code&gt;octohub&lt;/code&gt; — open source, Rust, one static binary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install (one command)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://octomind.run/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or on macOS: &lt;code&gt;brew install muvon/tap/octomind&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Here's what actually happened in the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;[INFO] Installing octomind...
[INFO] Detected platform: x86_64-unknown-linux-musl
[INFO] Latest version: 0.38.2
[INFO] Downloading octomind 0.38.2 for x86_64-unknown-linux-musl...
[INFO] Extracting binary...
[INFO] Installing to /root/.local/bin...
[SUCCESS] octomind installed successfully!
[SUCCESS] Installation verified!
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Static binary drops into &lt;code&gt;~/.local/bin&lt;/code&gt;. No runtime dependencies, no package manager churn, works identically on macOS and Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Log in (one click)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;octomind login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;╭ login · octomind account
│   code  6PVJ-NHW9
│   url   https://octomind.run/app/login/cli
│
│ Confirm the code in your browser to finish signing in.
│ waiting…
│   account  don@muvon.io
│   key      octomind-cli-35f0c0f849cd
│   stored   /root/.local/share/octomind/config/.env
╰ ✓ login · signed in
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI opened the panel URL, I confirmed the code, and it claimed a per-device Hub key. If you don't have an account yet, the same page signs you up first — free plan needs no card.&lt;/p&gt;

&lt;p&gt;The key shows up in the panel under Keys. Revoking it takes one click. This shipped in 0.38.0 because pasting long-lived secrets into terminals is exactly how keys end up in shell history and screen recordings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Ask your first question
&lt;/h2&gt;

&lt;p&gt;I dropped a Python file with a deliberate bug:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# stats.py
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;median&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;ordered&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ordered&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ordered&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ordered&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ordered&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;median&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;median&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;]))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bug: both branches return &lt;code&gt;ordered[mid]&lt;/code&gt;. The even-length case should average the two middle values.&lt;/p&gt;

&lt;p&gt;If your directory isn't a git repo, run &lt;code&gt;git init&lt;/code&gt; first — the code-search index works repo-per-repo. First run bootstraps its own tooling (it installed Node for MCP servers unprompted), so give it a minute.&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;octomind run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This starts the concierge orchestrator — it works out what you need, routes to the right specialist, and remembers across sessions. The header shows the agent, model setting (&lt;code&gt;octohub:auto&lt;/code&gt; — the Hub routes each request to a suitable model), working directory, and session ID.&lt;/p&gt;

&lt;p&gt;Or skip routing entirely: &lt;code&gt;octomind run developer:general&lt;/code&gt; for direct specialist access.&lt;/p&gt;

&lt;p&gt;I asked: &lt;em&gt;"Read stats.py and explain in a few sentences what it does. Is the median calculation correct?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read the file with a tool call (not hallucinating from context)&lt;/li&gt;
&lt;li&gt;Found the bug: duplicated branch, even-length case wrong&lt;/li&gt;
&lt;li&gt;Demonstrated on concrete input: &lt;code&gt;median([3,1,4,1,5,9])&lt;/code&gt; → sorted &lt;code&gt;[1,1,3,4,5,9]&lt;/code&gt;, mid=3, returns 4. Correct answer is &lt;code&gt;(3+4)/2 = 3.5&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Suggested the fix: &lt;code&gt;return (ordered[mid-1] + ordered[mid]) / 2&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cost: &lt;strong&gt;$0.00403&lt;/strong&gt; · 27K in · 518 out&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Make it prove the fix
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting. I asked: &lt;em&gt;"Fix the median bug, then run python3 stats.py to prove the fix works."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edited exactly the broken line with &lt;code&gt;str_replace&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ran &lt;code&gt;python3 stats.py&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Output: &lt;code&gt;3&lt;/code&gt; and &lt;code&gt;3.5&lt;/code&gt; — fix verified. Even-length now yields 3.5 instead of 4.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cost: &lt;strong&gt;$0.00960&lt;/strong&gt; · 67K in · 525 out&lt;/p&gt;

&lt;p&gt;Total for review plus verified fix: under a cent and a half.&lt;/p&gt;

&lt;p&gt;Every run is a persistent session. &lt;code&gt;octomind run --resume-recent&lt;/code&gt; picks up where you left off. &lt;code&gt;-n mywork&lt;/code&gt; gives the session a name. You can pipe it for CI and scripting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Fix the median bug, then run python3 stats.py to prove the fix."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  | octomind run developer:general &lt;span class="nt"&gt;--format&lt;/span&gt; plain
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to ask questions that actually work
&lt;/h2&gt;

&lt;p&gt;A few things I learned from the transcripts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One task per message, with the file named.&lt;/strong&gt; "Read stats.py and check the median calculation" beats "look around and tell me what's wrong." Specificity is free speed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask for proof, not confidence.&lt;/strong&gt; The agent has a shell. End your request with "run it and show the output." A claim that compiles is worth ten that don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bound the answer.&lt;/strong&gt; "In a few sentences" saved tokens on every single transcript in the walkthrough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Escalate when the task outgrows the shelf.&lt;/strong&gt; &lt;code&gt;-m&lt;/code&gt; on the command line or &lt;code&gt;/model&lt;/code&gt; mid-session switches to any model. Premium ones bill per token from credits. Escalation is a flag, not a migration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Does it hold up?
&lt;/h2&gt;

&lt;p&gt;The SWE-bench-Live numbers: 70% solved on the open-shelf model (GLM) at roughly $3.30 per solved task. The harness and baseline live in the repo under &lt;code&gt;bench/&lt;/code&gt; with committed history.&lt;/p&gt;

&lt;p&gt;Honest framing: it's their own harness, a pilot-sized suite (15 instances, two runs each), efficiency-first metric. Not a leaderboard submission. The claim is straightforward — an agent on open-weights pricing, resolving real issues, with a cost-per-solved you can actually reason about.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Everything above ran on a local machine. That's the point — start where you are.&lt;/p&gt;

&lt;p&gt;Machines (persistent Linux boxes with the full toolchain, real Docker inside, sessions that survive closing your laptop) are invite-gated while the fleet scales. Subscribing unlocks access instantly. Free accounts earn invites through weekly usage. Every subscriber gets invites to hand out.&lt;/p&gt;

&lt;p&gt;It's bootstrapped — hardware bought with revenue, the gate widening at the pace they can genuinely serve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;p&gt;Free tier, no card required:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://octomind.run/install.sh | bash
octomind login
octomind run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Five minutes, two cents, no API keys. Ask it something concrete, make it prove its answer, then see how it goes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Octomind Cloud Is Live: Real Machines for Your Agent, Every Model Through One Key</title>
      <dc:creator>Don Karter</dc:creator>
      <pubDate>Wed, 22 Jul 2026 16:42:12 +0000</pubDate>
      <link>https://dev.to/donk8r/octomind-cloud-is-live-real-machines-for-your-agent-every-model-through-one-key-3ei9</link>
      <guid>https://dev.to/donk8r/octomind-cloud-is-live-real-machines-for-your-agent-every-model-through-one-key-3ei9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This post originally appeared on &lt;a href="https://octomind.run/blog/octomind-cloud-launch" rel="noopener noreferrer"&gt;octomind.run/blog/octomind-cloud-launch&lt;/a&gt;. Cross-posted to dev.to.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;You've built an agent. It's running a 40-minute refactor. You close your laptop.&lt;/p&gt;

&lt;p&gt;Gone. Session dead. Tokens burned. Context lost.&lt;/p&gt;

&lt;p&gt;Agents are long-running processes. Laptops aren't long-running machines. The math doesn't work.&lt;/p&gt;

&lt;p&gt;That's the first problem we solved with Octomind Cloud. There are two more — and they're equally annoying if you've ever tried to run AI workflows in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Three Problems
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Problem 1: Your agent dies with your laptop lid.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You start a long task. Close the laptop. Come back. Everything's gone. You're starting over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 2: API keys in five dashboards.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OpenRouter. Anthropic. OpenAI. Voyage. That &lt;code&gt;.env&lt;/code&gt; file you're scared to look at. Every provider has its own billing, its own rate limits, its own way of telling you you're out of credits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem 3: Your AI bill is a surprise.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Opaque seat pricing. Or worse — usage-based, but you can't see the meter until the invoice hits. Runaway agents burning money overnight while you sleep.&lt;/p&gt;

&lt;p&gt;Octomind Cloud is the answer to all three. It's cloud compute for AI agents — one subscription, one wallet, one key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdu0ch2hkwau8em2nxxml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdu0ch2hkwau8em2nxxml.png" alt="The Octomind panel showing cloud machines and the model hub — one key, one wallet, transparent prices" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Actually Get
&lt;/h2&gt;

&lt;p&gt;Two things sharing one account:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Hub&lt;/strong&gt; — an OpenAI-compatible gateway with 21 curated models behind a single API key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Machines&lt;/strong&gt; — persistent Linux containers with the full agent toolchain, ready in under a minute&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole stack is open source (Apache 2.0): &lt;code&gt;octomind&lt;/code&gt;, &lt;code&gt;octocode&lt;/code&gt;, &lt;code&gt;octobrain&lt;/code&gt;, &lt;code&gt;octohub&lt;/code&gt;. Self-host if you want. All doors open, docs assume you might.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Hub: One Key, 21 Models
&lt;/h2&gt;

&lt;p&gt;The Hub is an OpenAI-compatible gateway. You get one API key, and it works across every model on the shelf.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open shelf&lt;/strong&gt; (included in every paid plan):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DeepSeek V4 Flash, DeepSeek V4 Pro&lt;/li&gt;
&lt;li&gt;Qwen3.7 Plus, Qwen3.7 Max&lt;/li&gt;
&lt;li&gt;Kimi 2.6, Kimi 2.7 Code&lt;/li&gt;
&lt;li&gt;MiniMax M3&lt;/li&gt;
&lt;li&gt;GLM-5.2&lt;/li&gt;
&lt;li&gt;Gemma 4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Premium shelf&lt;/strong&gt; (bills per token from credits):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Fable 5, Opus 4.8, Sonnet 5&lt;/li&gt;
&lt;li&gt;GPT-5.6 family: Sol, Terra, Luna&lt;/li&gt;
&lt;li&gt;GPT-5.5, GPT-5.5 Pro, GPT-5.4 mini, GPT-5.4 nano&lt;/li&gt;
&lt;li&gt;Gemini 3.5 Flash, Gemini 3.1 Pro&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's also a free model with a daily allowance. When everything else is exhausted, this one keeps working.&lt;/p&gt;

&lt;p&gt;Prices are published. Metering matches the table exactly. No surprises.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F29d3r0bal2prccum0abs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F29d3r0bal2prccum0abs.png" alt="The Models page — LLMs and embedding models with per-token prices and plan badges" width="800" height="552"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fair use per account:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free: 1 parallel call&lt;/li&gt;
&lt;li&gt;Pro: 5 parallel calls&lt;/li&gt;
&lt;li&gt;Max: 10 parallel calls&lt;/li&gt;
&lt;li&gt;Team: 20 pooled parallel calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under the hood, the Hub runs on &lt;code&gt;octohub&lt;/code&gt; — open source, written in Rust, ships as one static binary.&lt;/p&gt;

&lt;p&gt;Here's what a call looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://hub.octomind.run/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OCTOMIND_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "gpt-5.6-luna",
    "messages": [{"role": "user", "content": "Explain Rust ownership in one paragraph"}]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same endpoint, same format. Switch models by changing the &lt;code&gt;model&lt;/code&gt; field. That's it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Machines: Persistent Linux Containers
&lt;/h2&gt;

&lt;p&gt;Machines are persistent Linux containers with the full agent toolchain pre-installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;octomind&lt;/code&gt;, &lt;code&gt;octocode&lt;/code&gt;, &lt;code&gt;octobrain&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Web terminal&lt;/li&gt;
&lt;li&gt;Git, Docker, Node, Bun&lt;/li&gt;
&lt;li&gt;Headless browser, ffmpeg&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn2nkuyxgu0sviar006s6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn2nkuyxgu0sviar006s6.png" alt="The Machines page — one machine active, one suspended, live disk and network meters" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Three sizes:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;vCPU&lt;/th&gt;
&lt;th&gt;RAM&lt;/th&gt;
&lt;th&gt;Active&lt;/th&gt;
&lt;th&gt;Idle-Warm&lt;/th&gt;
&lt;th&gt;Suspended&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Small&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;$0.05/hr&lt;/td&gt;
&lt;td&gt;$0.01/hr&lt;/td&gt;
&lt;td&gt;~$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4 GB&lt;/td&gt;
&lt;td&gt;$0.10/hr&lt;/td&gt;
&lt;td&gt;$0.02/hr&lt;/td&gt;
&lt;td&gt;~$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;$0.20/hr&lt;/td&gt;
&lt;td&gt;$0.04/hr&lt;/td&gt;
&lt;td&gt;~$0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Per-second metering. Automatic transitions between active, idle-warm, and suspended states.&lt;/p&gt;

&lt;p&gt;10 GB working disk free with every machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security details that matter:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker runs inside (real Docker Engine, sysbox runtime, no &lt;code&gt;--privileged&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;System filesystem is read-only&lt;/li&gt;
&lt;li&gt;Agent runs as non-root user&lt;/li&gt;
&lt;li&gt;Environment variables are encrypted and write-only — the panel never shows the value back&lt;/li&gt;
&lt;li&gt;Shared directories between machines on the same host&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your machine is ready in about a minute. You get a web terminal, an API endpoint, and it's reachable from the panel, the developer API (&lt;code&gt;api.octomind.run&lt;/code&gt;), or Telegram.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sessions Survive You
&lt;/h2&gt;

&lt;p&gt;Start a turn. Close the tab. The turn keeps running.&lt;/p&gt;

&lt;p&gt;Open it from your phone 20 minutes later. Everything's there — full transcript recorded.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwt82zavamd5aa7l3fy1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwt82zavamd5aa7l3fy1g.png" alt="A session on a cloud machine — the agent writes a Bun server, runs it, proves it with curl; the whole thing cost $0.008" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sessions are reachable from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The panel&lt;/li&gt;
&lt;li&gt;Web terminal&lt;/li&gt;
&lt;li&gt;Developer API (&lt;code&gt;api.octomind.run&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Telegram integration:&lt;/strong&gt; One tap connects your bot. The machine answers in chat with real formatting — code blocks, lists, everything renders properly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Switch models per session:&lt;/strong&gt; &lt;code&gt;/model gpt-5.6-luna&lt;/code&gt; works from the panel, Telegram, or the API. Same command, same result.&lt;/p&gt;

&lt;p&gt;This is the same &lt;code&gt;octomind&lt;/code&gt; you run locally. Same config, same sub-agent delegation, same tools. The only difference is it doesn't die when you close your laptop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Embeddings: Index Once, Search Everywhere
&lt;/h2&gt;

&lt;p&gt;Two lanes for embeddings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqo2oirp3fg2wouup14au.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqo2oirp3fg2wouup14au.png" alt="The embeddings picker — local models billed as compute, hub models billed per token" width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local&lt;/strong&gt; (default, free):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fastembed running on machine CPU&lt;/li&gt;
&lt;li&gt;You pay compute, not tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hub&lt;/strong&gt; (paid):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Voyage 4, Jina v5, OpenAI text-embedding-3&lt;/li&gt;
&lt;li&gt;Starts at $0.02 per million tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Index once. The index lands in shared storage. Every machine reuses it. No re-indexing, no duplication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7nmidida5izvl5rxkf9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7nmidida5izvl5rxkf9.png" alt="The Usage page — rolling caps, daily spend chart, per-model and per-machine breakdowns" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Usage Caps&lt;/th&gt;
&lt;th&gt;Machines&lt;/th&gt;
&lt;th&gt;Shared Storage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;$0.15/day&lt;/td&gt;
&lt;td&gt;1 Small&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$20/mo ($10 first month)&lt;/td&gt;
&lt;td&gt;$20/4h · $60/week · $120/month&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;10 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Max&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$100/mo&lt;/td&gt;
&lt;td&gt;5x Pro caps&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;30 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Team&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$500/mo&lt;/td&gt;
&lt;td&gt;Pooled caps&lt;/td&gt;
&lt;td&gt;Unlimited members&lt;/td&gt;
&lt;td&gt;Shared machines&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Credits are overflow.&lt;/strong&gt; Hit your cap mid-task? Credits keep the session flowing. It doesn't die.&lt;/p&gt;

&lt;p&gt;Every price is on the pricing page and in the panel. The meter bills from the same numbers. No reconciliation surprises.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;Octomind Cloud is in beta. It's live now.&lt;/p&gt;

&lt;p&gt;Login is email code — no card needed for the free tier. Your first machine is ready in about a minute.&lt;/p&gt;

&lt;p&gt;The whole stack is open source, Apache 2.0. Self-host if you want, or use the cloud and move on with your day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt; &lt;a href="https://octomind.run/app" rel="noopener noreferrer"&gt;octomind.run/app&lt;/a&gt; — free tier, no card, start building.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cloud</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
