Skip to content

Commit 2ee4caa

Browse files
committed
feat: add articles directory to .gitignore and create medium-routesmith.md for documentation
1 parent cd68096 commit 2ee4caa

2 files changed

Lines changed: 305 additions & 0 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ htmlcov/
1919
.ruff_cache/
2020
.routesmith/
2121
.DS_Store
22+
articles/

medium-routesmith.md

Lines changed: 304 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
# Stop Treating Mixed Prompts Like One Task
2+
3+
*A host-aware routing layer that turns mixed coding prompts into structured workflows — without replacing the agent you already use.*
4+
5+
I kept running into the same stupid moment.
6+
7+
I would open a coding agent, type one big prompt, and get exactly what these tools promise at their best: momentum.
8+
9+
"Plan this feature, implement it, add tests, write docs, and review the final result."
10+
11+
For a few minutes, it felt great. One prompt. One flow. One clean path from idea to shipped change.
12+
13+
Then the flow broke.
14+
15+
I stopped thinking about the feature and started doing manual routing in my head.
16+
17+
Should planning use a stronger reasoning model?
18+
19+
Should coding use something faster or cheaper?
20+
21+
Should tests use the same model as implementation?
22+
23+
Does this host even support real switching, or am I just assuming it does?
24+
25+
Why am I spending the heaviest model in the stack on README edits and formatting?
26+
27+
That was the point where the problem became obvious.
28+
29+
I was not blocked by the model. I was blocked by the workflow.
30+
31+
That prompt was not one task. It was planning, coding, testing, docs, and maybe review compressed into one sentence.
32+
33+
That is the gap that led me to build RouteSmith.
34+
35+
![One coding prompt branching into multiple task-specific workstreams inside an IDE and terminal workflow.](./assets/routesmith-hero.svg)
36+
37+
## Mixed Prompts Are Workflows
38+
39+
Most coding-agent workflows still treat a prompt like a single request.
40+
41+
Real development work is rarely shaped that way.
42+
43+
When someone says, "plan this feature, implement it, add tests, write docs," they are not asking for one thing. They are asking for several different kinds of work:
44+
45+
- planning
46+
- analysis
47+
- implementation
48+
- testing
49+
- documentation
50+
- often review and cleanup at the end
51+
52+
Those steps do not need the same kind of model. They do not need the same reasoning depth, the same latency profile, or the same cost profile.
53+
54+
And they definitely do not behave the same across Claude Code, Cursor, Copilot, Codex, Gemini CLI, or Aider.
55+
56+
That last part matters.
57+
58+
There is a lot of talk about multi-model workflows, but in practice the host decides what is actually possible. Some hosts support real dynamic switching. Some mostly control the model surface themselves. Some let you influence routing indirectly. Some make it very easy to believe you have more control than you really do.
59+
60+
I wanted a layer that works with that reality instead of smoothing it over with fake abstraction.
61+
62+
## What RouteSmith Actually Is
63+
64+
RouteSmith is a host-aware routing layer for coding agents.
65+
66+
It is not another coding agent.
67+
68+
It is not an API gateway.
69+
70+
It sits between a mixed prompt and the host's real capabilities.
71+
72+
The job is straightforward:
73+
74+
1. Detect the host.
75+
2. Break the prompt into task types.
76+
3. Map those tasks to capability classes.
77+
4. Resolve those capabilities against what the current host can actually do.
78+
5. Switch models when the host supports it.
79+
6. Fall back honestly when the host does not.
80+
7. Track outcomes over time so routing gets better.
81+
82+
That means RouteSmith is not trying to replace Claude Code, Cursor, Aider, Copilot, or anything else you already use. It is trying to make mixed-task workflows behave more intelligently inside those environments.
83+
84+
## Who This Is For
85+
86+
One mistake I think people make when they talk about routing is assuming only power users care.
87+
88+
I think that misses a big part of the story.
89+
90+
RouteSmith is also for people who are just getting started with coding agents and do not want to think about model choice all day.
91+
92+
That includes a lot of people getting into vibe coding right now.
93+
94+
If you are early in that workflow, the friction usually is not writing the prompt. The friction starts right after the prompt.
95+
96+
You begin second-guessing things like:
97+
98+
- Should I use the smartest model for everything?
99+
- Should I switch between planning and coding?
100+
- Is this task too simple for an expensive model?
101+
- Is the host actually switching, or am I just assuming it is?
102+
103+
Most people should not have to become part-time routing engineers before they can build something useful.
104+
105+
That is a big part of why RouteSmith exists.
106+
107+
It is for two groups at the same time:
108+
109+
- people who want better control over routing
110+
- people who want less manual model decision-making
111+
112+
That second group is probably bigger.
113+
114+
More concretely, RouteSmith is a good fit for:
115+
116+
### 1. People new to coding agents
117+
118+
If you are using Claude Code, Cursor, Copilot, Codex, Gemini CLI, or Aider and you do not yet have strong intuition for model tradeoffs, RouteSmith is meant to reduce that burden.
119+
120+
You should be able to describe the work in plain language and let the routing layer do the decomposition.
121+
122+
### 2. People doing vibe coding
123+
124+
If your style is, "build this feature, wire the API, add tests, clean up the docs," RouteSmith helps because it treats that prompt like a workflow instead of a blob.
125+
126+
### 3. Solo builders and founders
127+
128+
Solo builders usually mix planning, implementation, testing, docs, and review in one session because they are doing all of it themselves.
129+
130+
That is exactly where task-aware routing starts paying off.
131+
132+
### 4. Teams that want consistency
133+
134+
Without a routing layer, every developer ends up inventing their own model habits.
135+
136+
RouteSmith gives you a more explainable and repeatable path.
137+
138+
### 5. Advanced users who care about control
139+
140+
If you care about host constraints, routing logic, policy overrides, plugins, observability, and performance-aware switching, RouteSmith has room for that too.
141+
142+
## How the Routing Works
143+
144+
The flow is intentionally simple.
145+
146+
![Flow diagram showing host detection, task classification, capability mapping, routing, execution, and telemetry feedback.](./assets/routesmith-flow.svg)
147+
148+
### Step 1: Detect the host
149+
150+
RouteSmith starts by detecting where it is running.
151+
152+
The host is not a footnote. It decides what model families are relevant, what switching is possible, and how honest the router can be about execution.
153+
154+
### Step 2: Classify the prompt into task types
155+
156+
RouteSmith uses deterministic planning to classify prompts into task types like planning, analysis, coding, testing, refactor, documentation, formatting, and review.
157+
158+
I care about this being deterministic because planning should not require live API calls just to understand the shape of the work.
159+
160+
### Step 3: Map task types to capability classes
161+
162+
Instead of hardcoding everything directly to model names, RouteSmith maps tasks to capability classes such as:
163+
164+
- `deep_reasoning`
165+
- `coding`
166+
- `balanced`
167+
- `fast`
168+
169+
That gives the system a portable abstraction layer. A planning task can ask for deep reasoning without assuming every host exposes the same model names or the same controls.
170+
171+
### Step 4: Resolve capabilities against the current host
172+
173+
This is where RouteSmith becomes host-aware instead of generic.
174+
175+
If the host supports dynamic switching, RouteSmith can suggest concrete models per task.
176+
177+
If the host does not support switching, RouteSmith does not fake it. It keeps the routing intelligence, applies prompt strategy, and tells you what actually happened.
178+
179+
That truthful behavior is one of the core design decisions in the project.
180+
181+
### Step 5: Preserve dependency order
182+
183+
Mixed prompts are not just lists. They are dependency graphs.
184+
185+
Tests often depend on implementation. Docs usually make more sense after the change exists. Review is usually last.
186+
187+
RouteSmith keeps that order intact so the route matches the actual structure of the work.
188+
189+
### Step 6: Learn from real outcomes
190+
191+
RouteSmith also records local performance data, including model used, host name, task type, capability class, success or failure, duration, and telemetry source.
192+
193+
That is useful for visibility on its own, but it also does something more valuable: it can become an active routing signal.
194+
195+
If a default model has enough evidence showing weak success or poor latency for a capability, and a better host-available option exists, RouteSmith can de-prioritize the weaker default.
196+
197+
That turns performance tracking from passive reporting into routing feedback you can actually use.
198+
199+
## A Few Concrete Examples
200+
201+
### The beginner building an expense tracker
202+
203+
Imagine someone fairly new to coding agents asks for this:
204+
205+
"Build me a simple expense tracker with authentication, add tests, and write a README."
206+
207+
That user may not know which model is better for planning versus coding versus docs. They probably do not want to know. They just want the thing built.
208+
209+
RouteSmith helps by decomposing that request into task-level work and routing each phase with the host's real constraints in mind.
210+
211+
### The founder shipping a feature fast
212+
213+
A solo founder might say:
214+
215+
"Plan the feature, implement the API, add tests, update docs, and review the final diff."
216+
217+
That is a classic mixed-task workflow. Without routing, it becomes one long interaction on one model. With RouteSmith, it becomes a structured sequence.
218+
219+
### The user on a constrained host
220+
221+
Some hosts expose model control directly. Some do not.
222+
223+
That difference creates friction when tooling assumes universal switching. RouteSmith helps by being explicit: if switching is available, it uses it. If it is not, it falls back honestly.
224+
225+
## Where RouteSmith Fits
226+
227+
I do not think the honest pitch here is that nothing similar exists.
228+
229+
![Diagram showing agent products, RouteSmith as a routing layer, and API gateway infrastructure as separate layers.](./assets/routesmith-positioning.svg)
230+
231+
There are good products around this space. They mostly solve different layers of the stack.
232+
233+
Claude Code, Cursor, and Aider are agent products. They are the tools doing the work.
234+
235+
LiteLLM and Portkey are model and gateway infrastructure. They normalize providers, manage routing at the API layer, and add control, visibility, and governance around model traffic.
236+
237+
Rules, skills, and instruction files are customization layers. They shape behavior, but they are not really routing brains by themselves.
238+
239+
RouteSmith sits in the gap between those layers.
240+
241+
It is not trying to become a full IDE. It is not trying to become a universal API gateway. It is not just another instructions file.
242+
243+
It is a routing layer for coding-agent workflows.
244+
245+
If I had to summarize it simply:
246+
247+
- if you want a coding agent, use Claude Code, Cursor, or Aider
248+
- if you want API-layer multi-provider routing, use LiteLLM or Portkey
249+
- if you want a host-aware routing layer for mixed coding prompts, that is where RouteSmith fits
250+
251+
That is the lane.
252+
253+
## Why I Built It This Way
254+
255+
I do not think the useful future for coding agents is one model doing everything.
256+
257+
I also do not think the useful future is pretending every host is the same.
258+
259+
The more practical direction is:
260+
261+
- let the user describe the work naturally
262+
- let the system understand the shape of the work
263+
- let routing happen at the task level
264+
- let the host remain the source of truth about what is actually possible
265+
- let the feedback loop improve over time
266+
267+
That is the design RouteSmith is pushing toward.
268+
269+
## Try It
270+
271+
If you want to get a feel for it, the simplest path is:
272+
273+
```bash
274+
pip install routesmith
275+
routesmith detect-host
276+
routesmith explain "Refactor auth, add tests, write docs"
277+
routesmith run "Refactor auth, add tests, write docs"
278+
routesmith stats
279+
```
280+
281+
And if you are building tooling around agents, you can expose the routing layer over stdio with:
282+
283+
```bash
284+
routesmith serve-stdio
285+
```
286+
287+
## Final Thought
288+
289+
The most interesting part of coding-agent workflows is no longer just the model.
290+
291+
It is the routing layer around the work.
292+
293+
If a prompt contains planning, implementation, testing, documentation, and review, then treating it like one undifferentiated request leaves a lot on the table.
294+
295+
RouteSmith is my attempt to make that layer explicit, host-aware, and useful for both advanced users and people who are just getting started.
296+
297+
You should not need to know a full model matrix before you can build something real.
298+
299+
That is the job I want RouteSmith to take off your plate.
300+
301+
---
302+
303+
Project: [github.com/sidrat2612/routesmith](https://github.com/sidrat2612/routesmith)
304+
PyPI: [pypi.org/project/routesmith](https://pypi.org/project/routesmith/)

0 commit comments

Comments
 (0)