<?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>Forem: Siddharth Rathore</title>
    <description>The latest articles on Forem by Siddharth Rathore (@siddharth_rathore).</description>
    <link>https://forem.com/siddharth_rathore</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1720993%2Fcb2e773f-1d0c-45dd-a34c-60f863479397.jpg</url>
      <title>Forem: Siddharth Rathore</title>
      <link>https://forem.com/siddharth_rathore</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/siddharth_rathore"/>
    <language>en</language>
    <item>
      <title>Stop Treating Mixed Prompts Like One Task: Why I Built RouteSmith</title>
      <dc:creator>Siddharth Rathore</dc:creator>
      <pubDate>Thu, 07 May 2026 14:24:28 +0000</pubDate>
      <link>https://forem.com/siddharth_rathore/stop-treating-mixed-prompts-like-one-task-why-i-built-routesmith-2bbh</link>
      <guid>https://forem.com/siddharth_rathore/stop-treating-mixed-prompts-like-one-task-why-i-built-routesmith-2bbh</guid>
      <description>&lt;p&gt;&lt;em&gt;I built RouteSmith because mixed prompts are workflows, not single tasks. It routes coding-agent work across real host constraints instead of pretending every environment works the same way.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;I built RouteSmith because coding agents still make users do too much manual routing.&lt;/p&gt;

&lt;p&gt;If a prompt says, "plan this feature, implement it, add tests, and write docs," that is not one task. It is a workflow.&lt;/p&gt;

&lt;p&gt;RouteSmith detects the current host, decomposes the prompt into task types, maps those tasks to capability classes, and routes them using what the host can actually support. If the host supports switching, RouteSmith can suggest concrete models. If it does not, RouteSmith falls back honestly instead of pretending switching happened.&lt;/p&gt;

&lt;p&gt;It is especially useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;people starting with coding agents&lt;/li&gt;
&lt;li&gt;vibe coders who do not want to learn model tradeoffs first&lt;/li&gt;
&lt;li&gt;solo builders doing mixed-task prompts&lt;/li&gt;
&lt;li&gt;advanced users who want measurable, configurable routing&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.amazonaws.com%2Fuploads%2Farticles%2F6v5mfjx73sx8adma3uhg.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.amazonaws.com%2Fuploads%2Farticles%2F6v5mfjx73sx8adma3uhg.png" alt="One coding prompt branching into multiple task-specific workstreams inside an IDE and terminal workflow." width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem That Kept Annoying Me
&lt;/h2&gt;

&lt;p&gt;I kept running into the same moment.&lt;/p&gt;

&lt;p&gt;I would open a coding agent and give it one big prompt:&lt;/p&gt;

&lt;p&gt;"Plan this feature, implement it, add tests, write docs, and review the result."&lt;/p&gt;

&lt;p&gt;At first it felt smooth.&lt;/p&gt;

&lt;p&gt;Then the flow broke.&lt;/p&gt;

&lt;p&gt;I stopped thinking about the feature and started doing routing in my head.&lt;/p&gt;

&lt;p&gt;Questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;should planning use a stronger reasoning model?&lt;/li&gt;
&lt;li&gt;should coding use something different?&lt;/li&gt;
&lt;li&gt;why am I spending the heaviest model on docs and formatting?&lt;/li&gt;
&lt;li&gt;does this host even support switching the way I think it does?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was the real problem.&lt;/p&gt;

&lt;p&gt;The prompt was never one task. It was several different jobs bundled together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What RouteSmith Is
&lt;/h2&gt;

&lt;p&gt;RouteSmith is a host-aware routing layer for coding agents.&lt;/p&gt;

&lt;p&gt;It is not another coding agent.&lt;/p&gt;

&lt;p&gt;It is not an API gateway.&lt;/p&gt;

&lt;p&gt;It sits between a mixed prompt and the host's real capabilities.&lt;/p&gt;

&lt;p&gt;The basic flow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;detect the current host&lt;/li&gt;
&lt;li&gt;classify the prompt into task types&lt;/li&gt;
&lt;li&gt;map those task types to capability classes&lt;/li&gt;
&lt;li&gt;resolve those capabilities against host-native models or strategies&lt;/li&gt;
&lt;li&gt;preserve dependency order&lt;/li&gt;
&lt;li&gt;track outcomes and improve routing over time&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why "Host-Aware" Is the Important Part
&lt;/h2&gt;

&lt;p&gt;This is the part I care about most.&lt;/p&gt;

&lt;p&gt;Too many conversations about multi-model workflows flatten away the host and act like every environment exposes the same control surface.&lt;/p&gt;

&lt;p&gt;They do not.&lt;/p&gt;

&lt;p&gt;Claude Code, Cursor, Copilot, Codex, Gemini CLI, and Aider do not all behave the same way. Some support real model switching. Some expose model choice differently. Some are much more host-controlled.&lt;/p&gt;

&lt;p&gt;So RouteSmith is built around a simple rule:&lt;/p&gt;

&lt;p&gt;the host is the source of truth.&lt;/p&gt;

&lt;p&gt;If the host supports dynamic switching, RouteSmith can route tasks to concrete models.&lt;/p&gt;

&lt;p&gt;If the host does not, RouteSmith does not fake it. It keeps the routing logic and applies prompt strategy instead.&lt;/p&gt;

&lt;p&gt;That honest behavior matters more than a fake universal abstraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who This Is For
&lt;/h2&gt;

&lt;p&gt;This project is not just for people who already know the difference between reasoning models, coding models, fast utility models, and cost-optimized routing.&lt;/p&gt;

&lt;p&gt;It is also for people who are new to all of that.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. People starting with coding agents
&lt;/h3&gt;

&lt;p&gt;If you are using agent tools but still do not know when to switch models, RouteSmith is meant to help reduce that decision burden.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. People doing vibe coding
&lt;/h3&gt;

&lt;p&gt;If your style is to describe the outcome in plain English and keep moving, RouteSmith helps because it treats the prompt like a workflow rather than a blob.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Solo builders and founders
&lt;/h3&gt;

&lt;p&gt;If you are doing planning, implementation, tests, docs, and review yourself, task-aware routing becomes immediately useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Advanced users
&lt;/h3&gt;

&lt;p&gt;If you care about policy overrides, plugins, telemetry, performance-aware routing, and host constraints, RouteSmith has room for that too.&lt;/p&gt;

&lt;p&gt;The short version:&lt;/p&gt;

&lt;p&gt;RouteSmith is for people who want the benefits of multi-model workflows without having to become experts in model routing first.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Concrete Example
&lt;/h2&gt;

&lt;p&gt;Say a beginner types this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Build me a simple expense tracker with authentication, add tests, and write a README.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What that usually means is something like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;planning the feature structure&lt;/li&gt;
&lt;li&gt;implementing the app&lt;/li&gt;
&lt;li&gt;writing tests&lt;/li&gt;
&lt;li&gt;documenting the result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those are different kinds of work.&lt;/p&gt;

&lt;p&gt;RouteSmith can treat them that way.&lt;/p&gt;

&lt;p&gt;A conceptual route might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;planning      -&amp;gt; deep_reasoning
coding        -&amp;gt; coding
testing       -&amp;gt; coding
documentation -&amp;gt; balanced
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the host adapter decides what that means in practice.&lt;/p&gt;

&lt;p&gt;If the host supports switching, RouteSmith can suggest concrete models for each step.&lt;/p&gt;

&lt;p&gt;If the host does not, it still preserves the task-aware strategy without lying about model control.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works Under the Hood
&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.amazonaws.com%2Fuploads%2Farticles%2Fl8z40qp359v0m7niolnx.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.amazonaws.com%2Fuploads%2Farticles%2Fl8z40qp359v0m7niolnx.png" alt="Flow diagram showing host detection, task classification, capability mapping, routing, execution, and telemetry feedback." width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deterministic planning
&lt;/h3&gt;

&lt;p&gt;RouteSmith classifies prompts into task types such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;planning&lt;/li&gt;
&lt;li&gt;analysis&lt;/li&gt;
&lt;li&gt;coding&lt;/li&gt;
&lt;li&gt;testing&lt;/li&gt;
&lt;li&gt;refactor&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;formatting&lt;/li&gt;
&lt;li&gt;review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That planning is deterministic. It does not need live API calls just to understand the shape of the request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Capability classes
&lt;/h3&gt;

&lt;p&gt;Instead of hardcoding routes directly to model names, RouteSmith maps tasks into capability classes like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;deep_reasoning&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;coding&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;balanced&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fast&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes the system portable across hosts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dependency-aware execution
&lt;/h3&gt;

&lt;p&gt;Mixed prompts are not just lists. Tests often depend on implementation. Docs usually follow the change. Review comes later.&lt;/p&gt;

&lt;p&gt;RouteSmith keeps that order intact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance-aware routing
&lt;/h3&gt;

&lt;p&gt;RouteSmith also records local telemetry such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;model used&lt;/li&gt;
&lt;li&gt;host name&lt;/li&gt;
&lt;li&gt;task type&lt;/li&gt;
&lt;li&gt;capability class&lt;/li&gt;
&lt;li&gt;success or failure&lt;/li&gt;
&lt;li&gt;duration&lt;/li&gt;
&lt;li&gt;telemetry source&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That data is not just for display.&lt;/p&gt;

&lt;p&gt;If enough evidence shows that a default model is weak for a capability and a better host-available option exists, RouteSmith can de-prioritize the weaker model.&lt;/p&gt;

&lt;p&gt;That turns performance tracking into an active routing signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Compares to Other Tools
&lt;/h2&gt;

&lt;p&gt;I do not think the useful framing here is "RouteSmith vs everything else."&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.amazonaws.com%2Fuploads%2Farticles%2Fyjk8byjv4w5vcdt5yf49.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.amazonaws.com%2Fuploads%2Farticles%2Fyjk8byjv4w5vcdt5yf49.png" alt="Diagram showing agent products, RouteSmith as a routing layer, and API gateway infrastructure as separate layers." width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The useful framing is that adjacent tools solve different layers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agent products
&lt;/h3&gt;

&lt;p&gt;Claude Code, Cursor, and Aider are agent products. They are the tools doing the coding work.&lt;/p&gt;

&lt;p&gt;RouteSmith is not trying to replace them.&lt;/p&gt;

&lt;h3&gt;
  
  
  API and gateway infrastructure
&lt;/h3&gt;

&lt;p&gt;LiteLLM and Portkey solve a different problem: multi-provider routing, control, and observability at the API layer.&lt;/p&gt;

&lt;p&gt;That is useful, but it is not the same layer RouteSmith lives in.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rules, skills, and instructions
&lt;/h3&gt;

&lt;p&gt;Instruction surfaces help shape behavior, but they are not routing brains on their own.&lt;/p&gt;

&lt;p&gt;RouteSmith sits between these layers as a host-aware routing layer for coding-agent workflows.&lt;/p&gt;

&lt;p&gt;If I had to summarize it simply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use Claude Code, Cursor, or Aider when you want a coding agent&lt;/li&gt;
&lt;li&gt;use LiteLLM or Portkey when you want API-layer routing or gateway control&lt;/li&gt;
&lt;li&gt;use RouteSmith when you want mixed-task coding prompts routed more intelligently inside real host constraints&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What It Actually Gives You
&lt;/h2&gt;

&lt;p&gt;The main benefit is not novelty. It is leverage.&lt;/p&gt;

&lt;p&gt;RouteSmith helps by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;reducing model micromanagement&lt;/li&gt;
&lt;li&gt;making mixed prompts more structured&lt;/li&gt;
&lt;li&gt;respecting host-specific constraints&lt;/li&gt;
&lt;li&gt;helping beginners benefit from better routing without needing deep model knowledge&lt;/li&gt;
&lt;li&gt;giving advanced users telemetry, policy, and performance-aware adaptation&lt;/li&gt;
&lt;/ul&gt;

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



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;routesmith
routesmith detect-host
routesmith explain &lt;span class="s2"&gt;"Plan this feature, implement it, add tests, and write docs"&lt;/span&gt;
routesmith run &lt;span class="s2"&gt;"Plan this feature, implement it, add tests, and write docs"&lt;/span&gt;
routesmith stats
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if you want to use it as a tool inside larger workflows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;routesmith serve-stdio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;The interesting part of coding-agent workflows is no longer just the model.&lt;/p&gt;

&lt;p&gt;It is the routing layer around the work.&lt;/p&gt;

&lt;p&gt;If a prompt contains planning, coding, testing, documentation, and review, then treating it like one undifferentiated request is a bad fit for how software work actually happens.&lt;/p&gt;

&lt;p&gt;That is the gap RouteSmith is trying to close.&lt;/p&gt;




&lt;p&gt;Github link: &lt;a href="https://github.com/sidrat2612/routesmith" rel="noopener noreferrer"&gt;github.com/sidrat2612/routesmith&lt;/a&gt;&lt;br&gt;
PyPI link: &lt;a href="https://pypi.org/project/routesmith/" rel="noopener noreferrer"&gt;pypi.org/project/routesmith&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>vibecoding</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How a small misconfiguration cost me $10000 in AWS Bill!!</title>
      <dc:creator>Siddharth Rathore</dc:creator>
      <pubDate>Mon, 05 Jan 2026 06:39:18 +0000</pubDate>
      <link>https://forem.com/siddharth_rathore/how-a-small-misconfiguration-cost-me-10000-in-aws-bill-4lb5</link>
      <guid>https://forem.com/siddharth_rathore/how-a-small-misconfiguration-cost-me-10000-in-aws-bill-4lb5</guid>
      <description>&lt;p&gt;This was the time when I was just starting with AWS. I came from a background where I worked on bare-metal servers and knew little about Cloud Platforms. I joined a startup, and there I started working on AWS, where the company's entire production environment had only two EC2 instances - one hosting the web application and the other running the database.&lt;/p&gt;

&lt;p&gt;Being a startup, after some time, they started getting traction, and with growing users, the database started growing at a rapid pace. To ensure data protection and business continuity, I was asked to design and implement a backup and disaster recovery (DR) strategy.&lt;/p&gt;

&lt;p&gt;At the time, AWS did not offer a secondary region within the same country for our geography. Due to strict data compliance requirements, storing data outside the country was not an option - effectively ruling out cross-region DR within AWS. So, after much discussion, I finalised the following plan&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Primary Hosting would remain on AWS.&lt;/li&gt;
&lt;li&gt;Cold Disaster Recovery would be hosted on Google Cloud Platform (GCP), solely for worst-case scenarios.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To achieve the above I created 3 types of backup jobs–&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Full Backup - Once every Friday night&lt;/li&gt;
&lt;li&gt;Differential Backup - Every night&lt;/li&gt;
&lt;li&gt;Transactional backup - Every 30 min&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I uploaded the backups to AWS S3 and then synced them to GCP. In GCP, I retained only two weeks of data to keep storage costs under control.&lt;/p&gt;

&lt;p&gt;For the first few months, everything appeared to work as expected. However, after roughly 4 months, I started seeing our AWS bill rising. When I looked closely at the bill, the cost spike was primarily due to data transfer charges running into terabytes. This was puzzling. Our database size was around 200 GB, and even with regular backups, my calculations suggested that monthly transfer costs should not exceed $500.&lt;/p&gt;

&lt;p&gt;We raised a support ticket with AWS. After reviewing the case, AWS confirmed that the data transfer charges were legitimate and advised us to inspect our S3 buckets more closely.&lt;/p&gt;

&lt;p&gt;After more investigation, I found terabytes of broken multipart uploads - incomplete files that had never been cleaned up. These broken multipart uploads were being picked up by the S3-to-GCP sync process and transferred repeatedly, massively increasing data transfer costs.&lt;/p&gt;

&lt;p&gt;With the root cause found, the solution was simple. I applied S3 lifecycle policy to automatically delete incomplete multipart uploads. Once this rule was applied, the unnecessary data transfers stopped, and the AWS bills came down to normal in subsequent months.&lt;/p&gt;

&lt;p&gt;From that point onward, every new S3 bucket I created included a default lifecycle rule to clean up incomplete multipart uploads. This costly lesson not only taught me to include this in our best practice but also to check and verify small configurations for Cloud setup and its governance, which we often overlook.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
