<?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: ProxySoul</title>
    <description>The latest articles on DEV Community by ProxySoul (@proxyosul).</description>
    <link>https://dev.to/proxyosul</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%2F4126852%2Fda663301-4047-49d1-88ad-a3ad1016bdb6.JPG</url>
      <title>DEV Community: ProxySoul</title>
      <link>https://dev.to/proxyosul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/proxyosul"/>
    <language>en</language>
    <item>
      <title>How i give my coding agent a map of the repo with Empryo</title>
      <dc:creator>ProxySoul</dc:creator>
      <pubDate>Tue, 15 Sep 2026 19:54:13 +0000</pubDate>
      <link>https://dev.to/proxyosul/how-i-give-my-coding-agent-a-map-of-the-repo-with-empryo-2a3g</link>
      <guid>https://dev.to/proxyosul/how-i-give-my-coding-agent-a-map-of-the-repo-with-empryo-2a3g</guid>
      <description>&lt;p&gt;i built Empryo solo because i was tired of explaining the same repo to my coding agent. where things live, what calls what, which files usually need to change together. then a new session starts and i'm doing it again.&lt;/p&gt;

&lt;p&gt;Token usage bothered me too. A few prompts can involve a lot of reading, retries, and tool results. The prompt you type is only a small part of what the model processes.&lt;/p&gt;

&lt;p&gt;So i started with the thing i wanted the agent to have before it opened another file: a useful map.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Genome
&lt;/h2&gt;

&lt;p&gt;The screenshot above is Empryo's Genome dock. It maps files, symbols, and imports, and updates as the code changes. The little agent moves around the graph while it works. yes, i gave it a home.&lt;/p&gt;

&lt;p&gt;Behind that view, the agent gets a ranked text map. Connections between files matter. Recent reads and edits matter. Files that tend to change together in Git can provide another clue.&lt;/p&gt;

&lt;p&gt;The graph helps choose where to look. The agent still needs to open the source, check its assumptions, and run the relevant tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  One rename, several places to check
&lt;/h2&gt;

&lt;p&gt;Take an illustrative task: rename a session method and update its callers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;auth/session.ts
  refreshSession()
       |
       +-- api/client.ts
       +-- workers/refresh.ts
       +-- tests/session.test.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A filename search might find the implementation immediately. The more interesting question is what depends on it.&lt;/p&gt;

&lt;p&gt;An import relationship gives the agent a place to investigate. A test that often changes alongside the implementation is another lead. Neither proves that every caller has been found. Dynamic calls, generated code, and string references still need checking.&lt;/p&gt;

&lt;p&gt;The workflow i want is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use the map to pick the likely implementation and dependents.&lt;/li&gt;
&lt;li&gt;Read those files before changing the interface.&lt;/li&gt;
&lt;li&gt;Make the change and update the map.&lt;/li&gt;
&lt;li&gt;Search for remaining references and run the focused tests.&lt;/li&gt;
&lt;li&gt;Review the diff for changes outside the task.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keeping that map current matters. A map of yesterday's code can confidently send an agent to the wrong place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same idea, in the terminal
&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%2Fgkpwvi3alanh4h9ce8n8.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%2Fgkpwvi3alanh4h9ce8n8.png" alt="Empryo terminal UI showing changed files, dependents, Git co-change hints, and the pink Mote mascot" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the TUI. The change view shows dependents and co-change hints beside the files. i want those clues visible to me too, so i can see what the agent is working from.&lt;/p&gt;

&lt;p&gt;It also has themes. i spend enough time in a terminal to care how it feels to sit in one.&lt;/p&gt;

&lt;h2&gt;
  
  
  A cheaper model can still make a more expensive run
&lt;/h2&gt;

&lt;p&gt;Empryo lets me route different tasks to different models. Exploration, editing, and review don't always need the same choice.&lt;/p&gt;

&lt;p&gt;But switching models has a catch: cache reuse.&lt;/p&gt;

&lt;p&gt;A worker on the same model can sometimes reuse an existing prompt prefix. Moving it to another model can mean paying to process that context again. A lower token price doesn't automatically mean a lower total.&lt;/p&gt;

&lt;p&gt;This is why i care about cached input, fresh input, output, retries, and whether the change actually worked. A failed cheap attempt followed by a full retry is still two attempts.&lt;/p&gt;

&lt;p&gt;Subscription usage is another separate measure. A token-price estimate is not the amount charged to a subscription, and cache percentage is not a percentage of money saved.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small test i'd actually trust
&lt;/h2&gt;

&lt;p&gt;If you're comparing coding agents, give each one the same commit and a small task with a checkable result. Keep the model and permissions comparable where possible.&lt;/p&gt;

&lt;p&gt;Record:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Check&lt;/th&gt;
&lt;th&gt;What to write down&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Correctness&lt;/td&gt;
&lt;td&gt;Did the relevant tests pass, and does the diff solve the task?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exploration&lt;/td&gt;
&lt;td&gt;Which files were read before the first edit?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rework&lt;/td&gt;
&lt;td&gt;How many retries or corrections were needed?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usage&lt;/td&gt;
&lt;td&gt;Fresh input, cached input, output, and the billing basis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Your time&lt;/td&gt;
&lt;td&gt;How much explanation and review did it take?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Repeat it on a few tasks. One attractive screenshot can't tell you which setup works best for your repo.&lt;/p&gt;

&lt;p&gt;That's the problem i'm working on with &lt;a href="https://empryo.com" rel="noopener noreferrer"&gt;Empryo&lt;/a&gt;: better project awareness, with desktop and terminal interfaces that make the work easier to follow.&lt;/p&gt;

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

&lt;p&gt;How do you handle this today? A repo instructions file, your own index, or a lot of repeated explanations? i'm especially interested in what breaks once a project gets big.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI disclosure: this article was drafted by an AI agent using my project documentation, screenshots, and the notes i supplied.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
  </channel>
</rss>
