As engineers, we’ve all tried — and crashed — different workflows. This article is a snapshot of mine.
I use only Canonical-provided licenses. No Claude subscription, no Codex. Not because they’re bad, but because my pipeline achieves comparable results at a fraction of the cost.
I’m disclosing here my personal setup. There will be mistakes, wrong calls, and things I still get wrong — so tell me what I’m doing wrong. I’m eager to improve.
I work on the Juju team. Go, Bash, occasionally Python. Large monorepo, a few smaller repos on the side.
My Harnesses
I run three tools inside Warp, which I treat as my agent engineering IDE: multi-pane layout for running agents side-by-side with shells, current diffs, parallel worktree sessions in tabs, and a project explorer.
Opencode is my interactive dev workhorse. It auto-discovers all my OpenRouter models without per-model configuration, and its session database tracks input and output tokens separately. Critical for cost analysis. I use it for the explore → plan → implement cycle where I’m in the loop giving feedback at each step.
Hermes handles explorative tasks where I’m not in the driving seat. It builds persistent memory as it works: each debugging or QA session feeds a knowledge base that makes the next one faster. It also runs cron prompts, so daily session synthesis and weekly retrospectives happen without me thinking about it. Honestly, half the time I forget it’s running, and then I check the logs and find it caught something I missed. I’m still not sure if that’s a feature or a problem.
A warpified zsh shell for manual QA and quick checks. Sometimes you just want to type.
Skills
I use three skills regularly.
juju-qa kicks in automatically whenever I run QA or debug something in Juju. It helps the agent grasp Juju concepts, idioms, and common pitfalls without me having to re-explain the project architecture every session.
juju-pr-review is my go-to for reviewing anything in Juju. It layers domain knowledge on top of several “review lenses” — things like database performance, test coverage, Go idioms, Juju architecture — picked automatically based on the diff. It pushes comments directly to GitHub as a draft review. I use it as a complement, not a replacement: the agent catches edge cases, and I do the final human pass. Review costs dropped from $1.18 to $0.57 over two weeks as the 6-lens workflow improved. You can find it at github.com/gfouillet/juju-pr-review. I run it with GLM-5.2 or DeepSeek V4 Pro.
session-synthesis is what I call at the end of every agent session. It pulls data from all harnesses (Opencode, Hermes, Warp) to track which models were used, how many tokens I burned, and what prompts worked. It consolidates everything into a session log. Fair warning: the reports undercount real costs by 15-35%. I believe it is due to the fact we may have several providers and pricing aren’t that reliable from Openrouter, and harness telemetry is specific. A cron job merges all daily sessions, giving me a weekly retrospective with actual numbers. I won’t pretend the counts are perfect, but the trends are real. Available at github.com/gfouillet/session-synthesis-skill. I run it with DeepSeek V4 Flash, to reduce the cost as much as possible.
Also, I use the semble** MCP. It indexes the repo and returns exact file paths and line numbers. No full-codebase dumps into context. It’s the only MCP server I use, and it’s cut my token consumption dramatically.
Working on a feature
I use OpenRouter as my only provider, targeting around $25/day as a ceiling. My actual average is $8-15/day. I work in several phases, switching model between each prompt depending on the task:
- Minimax-V3 — Lists relevant files and explores the repo. Dirt cheap and fast. No reasoning needed. I just need it to tell me where things are.
- GLM-5.2 — My accidental workhorse. Drafts the plan, polishes it into a TDD spec, and also my default PR reviewer. Comparable design output to models costing 5-10× more. Not flashy, just reliable.
- Claude Opus 4.8 — Critiques the plan. This is the expensive step I don’t skip. Opus finds holes nothing else catches, but output tokens cost a lot, so I keep it short.
- Mimo V2.5 Pro — Implements from the TDD plan. I am not a fan of this model, but it is cheap, and work decently with a detailed plan, especially with TDD.
- DeepSeek Pro — Reviews the final result. Cheap, reliable, and I haven’t found a better reviewer at this price point.
I’ve dropped Claude Sonnet 4.6 and Haiku 4.6. They weren’t worth the cost. I keep an eye on openrouter.ai/rankings with “Pareto” enabled. Recently noticed Kimi K3 took over in cheap models. Might evaluate it to replace GLM for design or Opus for critique.
What annoys me right now: the whole pipeline is manual. Explore, plan, critique, TDD rewrite, implement, review — each step with a different model, each requiring me to switch context and stitch results together. Opencode gives me plan and build agents with sticky model selection, and it might be fine if i could have a few more dedicated agents to just switch between those without changing the model. It is probably possible, I need to dig.
Proof It Works
In one of my early days, Opus consumed 52% of my total cost ($27.06) for only 14% of my tokens. I was throwing it at every planning and review task by default, and the bill showed it. The turning point came when I noticed GLM-5.2 producing comparable design work at roughly 10-20% of the cost. I started routing planning to GLM instead, reserving Opus only for the hardest critiques where nothing else would do. Opus usage collapsed from more than ten dollars per session to around one dollar.
I learned the hard way that the context matters. Early on, I threw a vague debug prompt at GLM without scoping files first. At some point it started to hallucinate in Chinese… Not just a comment. The whole output. And the token cost started to hit the sky… I just interrupt things and switch to Opus with a sad thought about money burning.
That was the moment I added Minimax as an exploration step before any planning model touches the codebase. The cost of that extra step pays for itself by preventing expensive model confabulation.
I still think about that and regret to not have drop those strange character in a translator. Maybe it want to say something important.
The Vim equivalent of agentic engineering
- OpenRouter as your provider + Opencode as your harness. This is the part I’d start with every time.
- Three models: Minimax-V3 for file exploration, GLM-5.2 for planning, Mimo V2.5 Pro for implementation. Optionnaly adding Opus as a reviewer for GLM plan if the feature is complex enough.
- That’s ~$2-5/day for most workflows
Also, it is useful to add as a discipline to use session synthesis tracking. I settled to it quite early, but need few weeks to get reliable (yet imperfect) evaluation of costs. This was incredibly helpful to improve my workflow and my understanding of how optimize my usage. I believe that this skill will be very helpful in the few next month when we will get access to customizable routers.
Practices
I keep several “main” repositories for different purposes (development, peacekeeping, reviews) and use worktrees to parallelize work across branches without conflicts. My tool wt-helper makes managing this reasonably painless.
At the end of every week, I sit down with my session synthesis reports. They give me hard data: which models I used, how many tokens I burned, whether my pipeline is actually efficient or just busy. It’s a personal retrospective, but with receipts.
I’ve also learned to keep plans small and focused. Agents work best with a tight, well-critiqued scope. The more I split work into testable units, asking planning LLM to write TDD plan, the less the implemention agent loses focus(especially Mimo) and burn tokens.
Conclusion
This pipeline isn’t static. The model landscape shifts fast, and I’m still learning what makes agents tick. I keep asking myself: is this pipeline actually the right shape, or am I just comfortable with it?
If you have a workflow, tool, or model I should try, I’d love to hear about it. And if you spot something dumb in my setup, tell me. I probably already suspect it but am ignoring the problem.

