<?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: Vladimir Petrov</title>
    <description>The latest articles on DEV Community by Vladimir Petrov (@vladimir_petrov_1ae47b344).</description>
    <link>https://dev.to/vladimir_petrov_1ae47b344</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%2F4056595%2F44b0413e-7eba-45be-a1f6-70ae985d0736.png</url>
      <title>DEV Community: Vladimir Petrov</title>
      <link>https://dev.to/vladimir_petrov_1ae47b344</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vladimir_petrov_1ae47b344"/>
    <language>en</language>
    <item>
      <title>We gave Codex its own computer</title>
      <dc:creator>Vladimir Petrov</dc:creator>
      <pubDate>Fri, 31 Jul 2026 12:50:21 +0000</pubDate>
      <link>https://dev.to/vladimir_petrov_1ae47b344/we-gave-codex-its-own-computer-97e</link>
      <guid>https://dev.to/vladimir_petrov_1ae47b344/we-gave-codex-its-own-computer-97e</guid>
      <description>&lt;p&gt;We recently launched &lt;a href="https://cobaltcode.ai" rel="noopener noreferrer"&gt;Cobalt&lt;/a&gt;, a browser-based app that gives every coding task its own remote development computer.&lt;/p&gt;

&lt;p&gt;We built it because we were tired of juggling Git worktrees locally.&lt;/p&gt;

&lt;p&gt;Git worktrees are useful when two branches need to exist on the same machine, but separating the files is only part of the job. Each piece of work may also need its own dependencies, containers, database, ports, environment variables, terminals, and running application. Move between three worktrees and you are soon checking which server belongs to which branch, restarting processes, and trying not to point one frontend at another feature’s API. Not to mention the waste of disk space this is!&lt;/p&gt;

&lt;p&gt;So we asked a different question: what if every feature had its own complete development environment?&lt;/p&gt;

&lt;p&gt;That idea became Cobalt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect your repository and coding agent
&lt;/h2&gt;

&lt;p&gt;Starting a task begins with two connections: the repository containing the code and the coding agent that will work on it.&lt;/p&gt;

&lt;p&gt;Cobalt supports repositories hosted on GitHub and Azure DevOps. Once a repository is connected to a workspace, choose the branch or pull request that contains the right starting point for the task.&lt;/p&gt;

&lt;p&gt;You can currently run tasks with &lt;a href="https://cobaltcode.ai/docs/agents/codex" rel="noopener noreferrer"&gt;Codex&lt;/a&gt;, &lt;a href="https://cobaltcode.ai/docs/agents/cursor" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt;, &lt;a href="https://cobaltcode.ai/docs/agents/opencode" rel="noopener noreferrer"&gt;OpenCode&lt;/a&gt;, or &lt;a href="https://cobaltcode.ai/docs/agents/pi" rel="noopener noreferrer"&gt;Pi&lt;/a&gt;. Connect the agent account you already use, then select it when creating the task.&lt;/p&gt;

&lt;p&gt;The agent changes from task to task. The repository, computer, preview, and Git workflow around it remain consistent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every task gets a dedicated computer
&lt;/h2&gt;

&lt;p&gt;When you start a task, Cobalt launches a remote development computer for it and checks out the selected repository state.&lt;/p&gt;

&lt;p&gt;The coding agent is then asked to prepare the project. It can install dependencies, start Docker containers, create local databases, run migrations, and launch the services the application needs. If the repository contains a &lt;code&gt;.cobalt/README.md&lt;/code&gt;, the agent reads it for project-specific setup, startup, and verification instructions.&lt;/p&gt;

&lt;p&gt;This gives the agent a repeatable way to prepare the environment instead of rediscovering the project on every task. The runbook lives with the repository, so it can evolve with the code and differ between branches when necessary.&lt;/p&gt;

&lt;p&gt;Some environments still take time to prepare. A large repository may need a lengthy dependency restore, several containers, generated assets, or seeded development data before useful work can begin. Once a computer reaches a good starting state, you can save it as a named snapshot.&lt;/p&gt;

&lt;p&gt;Future tasks can begin from that snapshot with the dependencies and project state already in place. The new task still receives its own independent computer, but it avoids repeating the slowest parts of the setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open the application beside the conversation
&lt;/h2&gt;

&lt;p&gt;After preparing the project, the agent runs the code.&lt;/p&gt;

&lt;p&gt;When Cobalt detects a web service, it makes that service available through Preview. The application opens beside the task conversation, so you can use it while the agent works.&lt;/p&gt;

&lt;p&gt;A task can expose more than one service. A frontend, API explorer, component library, and administration app can all run from the same computer and appear as separate previews. Development servers retain WebSocket support, hot module replacement, and live reload where the framework provides them.&lt;/p&gt;

&lt;p&gt;Not every coding task produces something that can be shown in a browser. A library change, command-line tool, or background worker may only have tests and command output to inspect. When an application does expose a web interface, Preview lets you verify the result against the same environment in which the agent built it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt the agent as you normally would
&lt;/h2&gt;

&lt;p&gt;Working with an agent in Cobalt feels familiar if you already use Cursor or Codex.&lt;/p&gt;

&lt;p&gt;Describe the change in the task conversation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Add a compact navigation mode for smaller screens. Update the existing tests and start the application so I can review it in Preview.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent edits the repository, runs commands, and reports its progress. When the application updates, you can click through it and send another message if something needs changing.&lt;/p&gt;

&lt;p&gt;There is no need to translate feedback into a special workflow. Tell the agent that the navigation opens too slowly, that a button belongs somewhere else, or that an edge case still fails. The next turn continues from the same checkout, installed dependencies, running services, and conversation history.&lt;/p&gt;

&lt;p&gt;Alongside Preview, Cobalt lets you browse the files on the computer and inspect the current Git diff. This makes it possible to review the implementation and the behaviour together before publishing anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Return the result through a pull request
&lt;/h2&gt;

&lt;p&gt;When the task is finished, its changes return through Git.&lt;/p&gt;

&lt;p&gt;Review the diff, check the tests, and create a commit from the task. You can then push the branch and open a pull request in GitHub or Azure DevOps.&lt;/p&gt;

&lt;p&gt;The pull request remains the place for automated checks, code review, approvals, and the final merge. Cobalt handles the development environment and the agent’s work leading up to it; the result enters the same repository workflow as any other change.&lt;/p&gt;

&lt;p&gt;If the work is not ready, keep the task open and continue the conversation. Its computer and repository state remain available until you decide to publish, suspend, or delete it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run several tasks without sharing their state
&lt;/h2&gt;

&lt;p&gt;The original worktree problem becomes more noticeable when several pieces of work are active at once. One feature needs the frontend on one port, another needs a different database migration, and a bug investigation needs to reproduce production behaviour without disturbing either of them.&lt;/p&gt;

&lt;p&gt;Cobalt gives each task a separate computer.&lt;/p&gt;

&lt;p&gt;You can start a feature, a bug fix, and an experiment in parallel. Each task has its own repository checkout, dependencies, processes, containers, database, ports, and conversation. One agent restarting its application does not interrupt another task, and none of the work touches your local development environment.&lt;/p&gt;

&lt;p&gt;When a task finishes, keep the result that matters and remove the computer you no longer need. There are no local worktrees to clean up and no forgotten development servers left running in old terminals.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cobalt has only just launched
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://cobaltcode.ai" rel="noopener noreferrer"&gt;Cobalt&lt;/a&gt; launched recently, and we are still learning where dedicated coding computers are most useful and where the workflow creates friction.&lt;/p&gt;

&lt;p&gt;We would like to hear how it behaves with different repositories, development stacks, and coding agents. If setup takes too long, Preview does not recognise part of your application, or something about the path from task to pull request feels awkward, that feedback will help us decide what to improve next.&lt;/p&gt;

&lt;p&gt;You can start a task at &lt;a href="https://app.cobaltcode.ai" rel="noopener noreferrer"&gt;app.cobaltcode.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To see the full workflow—from connecting a repository to running the application and preparing the result for Git—watch the Cobalt introduction on &lt;a href="https://youtu.be/1yyhj5wYyvA" rel="noopener noreferrer"&gt;YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/1yyhj5wYyvA"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>agents</category>
      <category>news</category>
    </item>
  </channel>
</rss>
