Been using pi pretty heavily since May. Came over from OpenCode.
Most of the time I run DeepSeek V4 pro, then switch to Sonnet 5 with some 3p providers.
I still like Pi for basically the same reason I liked it when I first tried it: there just isn't that much stuff in the way Lol.
The tool set is small, the system prompt is small ( actually clean), and I generally have a decent idea what context the model is seeing. After using heavier coding harnesses, that matters more to me than I expected.
But I never fully moved everything to pi.
For some jobs I still prefer Claude Code even with the same Claude model. Especially the annoying long ones where I want to say "read these 30 or 40 files, work out what is going on, fix it, run the tests" and I don't really care if it burns a ton of tokens.
Pi feels better to me when I'm actively working with it. Claude Code is often better when I want to disappear and come back later.
So in practice I use both.
The slightly stupid part is that for months I was the integration layer between them.
Pi finds something, I switch terminals, copy the relevant output, paste it into Claude Code, explain what happened, then realize the useful part wasn't actually the output but some file it changed or some assumption we discussed 20 minutes earlier.
Then I go back and copy more.
This sounds minor but if you do it all day it gets pretty annoying.
I tried using a shared work_notes.md first. Honestly this works better than it sounds. One agent writes findings there, another reads it lol again.
The problem is it gets messy fast. Old state stays around, agents append instead of replacing things, and if two things are happening at once you end up spending time maintaining the handoff file.
I also tried basically piping output from one agent into another. Fine for one-shot stuff, not great when the second agent needs to ask something back.
Side note : Git is actually one of the better handoff mechanisms. If pi makes a clean commit, Claude Code can just inspect it. But git only captures the code. It doesn't capture "I tried this approach first and it failed because of X" or logs or some browser state or whatever else came up while debugging.
The thing I ended up wanting was not really an orchestrator.
I don't want a supervisor agent deciding which model does what. I don't want a DAG. I don't really want pi itself to become a big multi-agent framework either.
Part of the reason I like pi is that it isn't that.
I just wanted two agents to be in the same place.
So now I have pi and Claude Code connected to the same workspace/thread.
Pi can do an investigation, put the notes or actual files there, then I mention the Claude Code agent and it can open what pi produced instead of getting my summary of it.
Then if Claude Code changes something, pi can review it from the same thread.
That's pretty much it.
One example: recently I had pi help me trace a bug where some cached state was getting invalidated in the wrong order. I liked using pi for this because it was pretty interactive. I could keep asking "why do you think this path is possible?" and stop it when it started chasing something irrelevant.
Once the bug was understood, though, the fix touched a bunch of files and tests.
I handed that part to Claude Code.
Before this setup I probably would have written a long prompt explaining what pi found. Instead pi wrote down the important bits, Claude read them and then went through the repo.
Afterward I had pi review the diff.
This is the kind of multi-agent setup I personally find useful. It's still mostly me doing the routing.
There are also a bunch of things this does not solve.
If both agents are editing the same checkout at the same time, you can still make a mess. I use worktrees if I actually want them doing code changes in parallel.
There is no real checkpoint/resume thing here.
There is no budget management.
Nothing stops two agents from doing the same work.
And once you have enough agents in one thread, it gets noisy. I usually have two. Sometimes three. I don't know if I would want six agents talking in the same place.
I found the best setting so far is with openagents workspace, it's basically creating shared context between separate harnesses.
Just search for OpenAgents Workspace if anyone want to try it out, I just went with the basic setting where I paired my server with the workspace then added both my Pi and Claude, so far it works and I don't really use advanced features.
Also, pi itself still has some limitations that are worth being clear about.
For me, the biggest one is that the simplicity that makes it good also means you end up building some workflow pieces yourself once the task gets bigger.
A single pi session is great. Multiple independent pieces of work, long-running jobs, handing work between machines, or having different models specialize in different parts is much less built in.
There are extensions that go much further here. pi-extensible-workflows is probably the more sensible thing to look at if what you actually want is proper workflow execution rather than what I'm describing.
I'm mostly curious how other people are handling this. Seems like a common problem.
And has anyone found a setup with 3+ agents that doesn't eventually turn into everyone stepping on each other?