WebJourney changed its agent and its model vendor without touching its backend
The SDK that powered WebJourney also chose its model vendor. Moving to pi and open-source models changed the two fields that name the agent and the model — the session API, the event stream, the persistence, and the key all stayed where they were.
WebJourney
- Company size:
- Startup
- Region:
- North America
- Industry:
- AI software
- Products:
- Agent API, model routing, cloud computer
50,000+
agents launched*
2
Fields changed to move harness and model family
A builder whose output has to ship
WebJourney lets people build full-stack apps, AI apps, and landing pages by describing them to an agent, and carries the result through deployment. The work does not stop at a preview, which puts the agent on the critical path of everything WebJourney sells.
It also moves the cost of running agents out of an experiment budget and onto the invoice. At volume, which model runs the work is a margin decision, not a preference.
The SDK picked the vendor
WebJourney started on the Claude Code SDK. The harness fit; the constraint that arrived with it did not. Model choice was limited to the Claude family, so every workload — trivial and hard, cheap and expensive — had to be priced from one vendor’s menu.
This is the shape agent lock-in actually takes, and it is easy to miss on the way in: you evaluate a harness on how well it works and inherit a decision about who you buy tokens from. Reaching a different model meant reaching a different harness, and reaching a different harness normally means a second agent backend — another lifecycle to run, another event format to translate, another state directory to keep, another thing to be paged about.
“The product needed a different model menu, not a different backend.”
Two fields, not a sprint
Because WebJourney’s product speaks one agent API, moving to pi was a parameter change. The field naming the harness and the field naming the model changed; the session API, the streamed events, the persistent workspace, and the API key did not.
pi opened the menu WebJourney was after — GPT, DeepSeek, Gemini, Kimi, and GLM models on the same contract — and the harness itself is not a line item, so the move did not trade one vendor bill for another. No cloud runtime came back in-house as the price of switching.
The swap took a config change, not a sprint.
The value is in the second swap
The point of the boundary is not the migration it already absorbed; it is the next one. Quality, speed, and price move constantly across harnesses and model families, and a product that can follow them holds an option its competitors have to spend a quarter buying back.
Sessions keep their history across the change, so following the market does not mean asking customers to start over. When a better agent or a cheaper model ships, WebJourney’s next switch is the same one-word change.
Results at a glance
- Moved from the Claude Code SDK to pi without replacing the product backend or the agent API
- Opened the model menu past the Claude family to GPT, DeepSeek, Gemini, Kimi, and GLM on one contract
- Kept the session API, the event stream, persistence, and the API key unchanged through the move
- Launched 50,000+ agents while owning no agent runtime of its own
Lessons for builders
- Read what an SDK decides for you, not only what it does for you. A harness that picks your model vendor has priced your roadmap.
- Keep the agent and the model as fields in a call. Whatever you hardcode becomes next year’s migration.
- Judge a runtime boundary by the second swap. The first one is a project; after that they should be configuration.
- Cost work does not have to be a rebuild — unless you already built the layer that makes it one.
Optionality as an architectural property
WebJourney’s customers care about a shipped app, not about which model wrote it. That is exactly why the choice should stay cheap to revisit: nothing in the product promise depends on the answer staying the same.
One API for the agent and its model turns a vendor decision into a reversible one, and leaves WebJourney free to move again the next time the menu changes.
Build on AgentSky
One call serves the agent, its model, the cloud computer it works on, and the workspace it keeps between visits. Your UI, your brand — AgentSky runs the agent.
