<?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: Axidesk</title>
    <description>The latest articles on DEV Community by Axidesk (@axidesk).</description>
    <link>https://dev.to/axidesk</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%2F4133460%2F8be7cc86-d289-4036-bbc9-9ed4482dadbc.png</url>
      <title>DEV Community: Axidesk</title>
      <link>https://dev.to/axidesk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/axidesk"/>
    <language>en</language>
    <item>
      <title>I'm an architect. I built an AI agent that draws - and outputs IFC models</title>
      <dc:creator>Axidesk</dc:creator>
      <pubDate>Sat, 19 Sep 2026 22:41:29 +0000</pubDate>
      <link>https://dev.to/axidesk/im-an-architect-i-built-an-ai-agent-that-draws-and-outputs-ifc-models-1j08</link>
      <guid>https://dev.to/axidesk/im-an-architect-i-built-an-ai-agent-that-draws-and-outputs-ifc-models-1j08</guid>
      <description>&lt;p&gt;Every coding agent I tried could write files. None of them could &lt;strong&gt;use the computer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm an architect. I don't write code for a living - I design buildings. But I got tired of repeating the same drawings, the same spreadsheets, the same model exports by hand. So I built one: &lt;strong&gt;Axio Coder&lt;/strong&gt;, an open-source (AGPL-3.0) agent that works &lt;em&gt;inside&lt;/em&gt; your project, next to you.&lt;/p&gt;

&lt;p&gt;Here is the part that turned out to be hard.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing almost nobody does: operating native programs
&lt;/h2&gt;

&lt;p&gt;Any agent can read and write files in a repository. That is the easy 80%.&lt;/p&gt;

&lt;p&gt;The hard 20% is a program with no API. A CAD window. Photoshop. MS Paint. These are the programs architects and engineers actually live in, and they expose no endpoint.&lt;/p&gt;

&lt;p&gt;Most "computer use" approaches screenshot the screen and guess pixel coordinates. On Windows I took a different route: the &lt;strong&gt;UI Automation tree&lt;/strong&gt;. Every native control announces itself - name, type, value - to the operating system. That is how screen readers work. So instead of guessing where a button is, the agent asks the program: &lt;em&gt;where is the "Fill with colour" button?&lt;/em&gt; and gets a real answer from the app itself.&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%2Fbxxebu5iw4g49h7g1e8b.jpg" 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%2Fbxxebu5iw4g49h7g1e8b.jpg" alt="The agent drawing in MS Paint, with its reasoning next to it" width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is how it drew a rocket in Paint, stroke by stroke: it picked the tool, dragged from here to there, and then &lt;strong&gt;looked at the screen again&lt;/strong&gt; before the next stroke.&lt;/p&gt;

&lt;h2&gt;
  
  
  Eyes change everything
&lt;/h2&gt;

&lt;p&gt;An agent that writes code does not need to see. An agent that draws does.&lt;/p&gt;

&lt;p&gt;So this one can look: at the screen, at a PDF page, at an image, at a 3D model rendered from any angle - and it can compare what it produced against the reference, side by side.&lt;/p&gt;

&lt;p&gt;That closed the loop for me: &lt;strong&gt;generate, look, correct, repeat&lt;/strong&gt;. The agent builds the geometry, renders it, looks at it, and says honestly what is still wrong. Which is how a person works.&lt;/p&gt;

&lt;h2&gt;
  
  
  It outputs engineering models, not just files
&lt;/h2&gt;

&lt;p&gt;This is the part I have not seen elsewhere.&lt;/p&gt;

&lt;p&gt;Give it a reference - a photo, a drawing, a spec with dimensions - and it builds the &lt;strong&gt;parametric model&lt;/strong&gt;, then writes it out in the formats the industry actually uses: IFC, DXF, STEP. Real geometry, measured back from the file it just wrote and checked against the formula that was supposed to produce it.&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%2Ffn3579tjnondnnyo1u19.jpg" 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%2Ffn3579tjnondnnyo1u19.jpg" alt="The viewer reading a generated IFC model inside the app" width="800" height="795"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The generated folder in the repository holds three IFC revisions of the same piece. Each one was looked at and corrected. That is the loop, in public.&lt;/p&gt;

&lt;p&gt;The point is not "AI makes 3D". The point is that the output leaves the chat window and lands in ArchiCAD, inside a BIM workflow - where the work continues.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boring parts that matter
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Memory.&lt;/strong&gt; Notes and past sessions are indexed and retrieved semantically. It does not start from zero every morning.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The diff.&lt;/strong&gt; Every edit is shown before and after, changed lines highlighted - one click away, from the log or from the session history.&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%2Fm2y3rz04p5mkniknjg94.jpg" 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%2Fm2y3rz04p5mkniknjg94.jpg" alt="The session history, with the edited file and the diff highlighted" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The terminal.&lt;/strong&gt; A live shell plus a card per process, so you can watch what it runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It watches itself.&lt;/strong&gt; When an agent has tools it will eventually loop. If this one repeats the same call with the same arguments, it stops and changes approach instead of insisting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it is &lt;em&gt;not&lt;/em&gt; good at
&lt;/h2&gt;

&lt;p&gt;I would rather say it now than have you find out later.&lt;/p&gt;

&lt;p&gt;It is a single-user desktop app (Electron + Python), built for me first. It has rough edges. Heavy CAD geometry fails sometimes and the agent has to notice and back off. And it will not replace your CAD software - it does the tedious 80% so you can spend your time on the 20% that needs judgement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this is going
&lt;/h2&gt;

&lt;p&gt;The piece I am working on now is the agent &lt;strong&gt;operating other programs in sequence on its own&lt;/strong&gt;: open the program, do the work, export, look at the result, move on. After that, modelling from a reference image end to end, with me no longer in the middle.&lt;/p&gt;

&lt;p&gt;If you are an architect, an engineer, or someone who automates their own work, I would genuinely like to know where this breaks for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/Axidesk/Axio-Coder" rel="noopener noreferrer"&gt;github.com/Axidesk/Axio-Coder&lt;/a&gt; - AGPL-3.0&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>python</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
