# Serdar Doğrubakar > Backend engineer and builder in İzmir, Türkiye. Fifteen-plus years in payments, wallets and financial infrastructure. After hours: AI-native systems, multi-agent tooling, automation and content pipelines. This site is the work-log of an independent maker: open source developer tools, field notes on building with AI, and the systems behind them. All content is first-hand and technical. ## Projects - [context-bridge](https://dogrubakar.com/projects/context-bridge): Switch agents. Not context. You work in more than one coding agent, and every switch normally costs you the conversation: copy a summary, hunt a session id, start over. context-bridge connects the native sessions of Claude Code, Codex, Grok, Antigravity and OpenCode. Each agent keeps its own real session; the bridge computes what the other one is missing and delivers exactly that. - [multi-agent](https://dogrubakar.com/projects/multi-agent): Independent second opinions, natively. You already have an agent defined for one coding CLI, a plain .claude/agents/*.md file. multi-agent runs that same agent on other model CLIs: grok, codex, claude. Each target executes it natively through its own agent runtime, no API keys and no re-implementation. When independent models converge on a finding you get confidence. When they diverge you get coverage. ## Blog - [Same model, 30 points apart](https://dogrubakar.com/blog/same-model-30-points-apart): Eleven teams, one benchmark, the same model families. The best and worst systems running identical models finished 30.4 points apart, and everything that opened that gap sat outside the weights. - [Grok 4.6: from the intelligence race to turn economics](https://dogrubakar.com/blog/grok-4-6-turn-economics): A model launch is usually three bars on a chart. This one is more interesting for where the improvement comes from — and for what it costs to finish a job rather than to answer a prompt. - [The next learning layer for AI agents may not be the model](https://dogrubakar.com/blog/the-next-learning-layer): When a coding agent fails we rarely change the model. We change the harness around it — and the agent works better next time. So where does an agent's experience actually accumulate? - [The wrong OpenCode session](https://dogrubakar.com/blog/context-bridge-0-12-2): One SQLite store holds every OpenCode session, and anything can leave one behind. When the bridge had to find its own session again, it took the newest. Usually that was someone else's. - [The first switch into OpenCode](https://dogrubakar.com/blog/context-bridge-0-12-1): I described OpenCode's delivery path accurately enough to expose the bug, and did not notice. The first switch into OpenCode never delivered anything. - [The day an agent ran clean in the wrong directory](https://dogrubakar.com/blog/clean-in-the-wrong-directory): It deleted 131 checkpoint groups. Every guard in the code held — the command was correct, and it was pointed at the wrong place. - [context-bridge 0.11 and 0.12: OpenCode, safer handoffs, and lanes](https://dogrubakar.com/blog/context-bridge-0-11-and-0-12): Adding OpenCode exposed several problems in how context-bridge delivered a handoff. Then lanes made it possible to keep more than one independent conversation inside the same project. - [Building context-bridge with context-bridge](https://dogrubakar.com/blog/building-context-bridge-with-context-bridge): Version 0.12.0 was built and reviewed by five coding agents passing the same session between them through context-bridge. ## Notes - [Newest is not mine](https://dogrubakar.com/notes/newest-is-not-mine): The bridge picked the wrong OpenCode session. It picked the newest one. That was the bug. OpenCode keeps every session in one SQLite store, filed by direct... - [Late is not lost](https://dogrubakar.com/notes/late-is-not-lost): The first handoff into OpenCode didn't arrive. It waited until a session existed. That's a real bug. It's fixed. But it was never a data loss bug. Only a d... - [No session, no message](https://dogrubakar.com/notes/no-session-no-message): I was writing into someone else's database. I read the schema. I understood the tables. I made the insert. It worked. What I missed wasn't how to write. It... - [Use the real tool, not the side door](https://dogrubakar.com/notes/the-real-tool-not-the-rescue-path): Mid-flow, it is tempting to reach for whatever glue moves the work instead of the tool you are building. While building the review chain for 0.12.0, my age... - [Why tombstones have no age cap](https://dogrubakar.com/notes/why-tombstones-have-no-age-cap): Unlinking an agent leaves a tombstone, so that agent's stale hooks become no-ops and a session started outside the bridge can never silently revive. Every... - [A code fix goes back for review](https://dogrubakar.com/notes/a-code-fix-goes-back-for-review): My review chain runs on one rule. If a reviewer's finding is about a test or a comment, I fix it and move on. If it is about code, I do not commit — it goe... - [Make the test bite](https://dogrubakar.com/notes/make-the-test-bite): A test that cannot fail proves nothing. Before I trust a regression test, I put the bug back, run the suite, and watch the test fail. Then I restore the fi... - [Enforce the rule where it is declared](https://dogrubakar.com/notes/enforce-the-rule-where-it-is-declared): Each agent adapter in context-bridge declares the CLI flags that would break a resumed session — seven for Grok, four for Antigravity. Declaring them was t... - [The first one is the unbounded one](https://dogrubakar.com/notes/the-first-one-is-the-unbounded-one): Every delta context-bridge sends is clipped to fit: summary first, as much conversation as there is room for, the rest parked in a checkpoint the delta poi... - [A hook delivers context, not a turn](https://dogrubakar.com/notes/a-hook-delivers-context-not-a-turn): Claude Code and Codex both take their handoff through a SessionStart hook. It is the cleanest road in — the delta arrives inside the conversation, with not... - [Delivered means answered, not started](https://dogrubakar.com/notes/delivered-means-answered): context-bridge used to record a handoff as delivered the moment the target agent's process started. That is the obvious place to put it: the spawn either w... - [The third time, a script does it](https://dogrubakar.com/notes/the-third-time-a-script-does-it): I have one rule for automation, and it is a counter, not a philosophy. Do it once by hand: fine. Twice: annoying, still fine. The third time, a script is a... - [Constraints are a feature](https://dogrubakar.com/notes/constraints-are-a-feature): The content pipeline behind my daughter's story brand runs on a single MacBook. Local image generation, local TTS, local orchestration. Cloud GPUs would wo... - [Watch-only by design](https://dogrubakar.com/notes/watch-only-by-design): para-radar collects Turkish lira yield opportunities: money market funds, deposit campaigns, daily interest accounts. It compares everything net of tax and... - [Shadow mode first, always](https://dogrubakar.com/notes/shadow-mode-first-always): I run an autonomous agent that posts market commentary to X. Before it was allowed to publish anything, it ran for weeks in shadow mode: full pipeline, rea... - [Moving 15 years of email without a gap](https://dogrubakar.com/notes/moving-15-years-of-email-without-a-gap): dogrubakar.com lived on free Yandex mail for years, until it went read-only behind a paywall. The move to Google Workspace had one hard requirement: not a... - [One agent file, many opinions](https://dogrubakar.com/notes/one-agent-file-many-opinions): I did not want three review agents for three CLIs. I wanted the agent I already tuned for Claude Code to run everywhere. That one constraint shaped multi-a... - [Score the models, but do not tell them](https://dogrubakar.com/notes/score-the-models-but-do-not-tell-them): multi-agent's arena ends with a scoreboard: which model found real bugs, which one hallucinated, which one conceded gracefully. The design decision that ma... - [Let the debate stop itself](https://dogrubakar.com/notes/let-the-debate-stop-itself): The first version of multi-agent's arena ran a fixed number of rounds. Three models, four rounds, every time. Half of those rounds were theater. By round t... - [Send the delta, not the transcript](https://dogrubakar.com/notes/send-the-delta-not-the-transcript): The lazy way to move context between two coding agents is to copy the whole conversation. It is also the wrong way. A transcript is large, it repeats what... - [Vendor session formats break silently](https://dogrubakar.com/notes/vendor-session-formats-break-silently): The worst bug in context-bridge was not in my code. Every handoff reported success and carried an empty delta. Claude Code, Codex and Grok keep their sessi... ## Contact - Email: serdar@dogrubakar.com - GitHub: https://github.com/serdardb - X: https://x.com/SerdarDB - LinkedIn: https://www.linkedin.com/in/serdardogrubakar/