I'm getting ~/.bun/install/global:bun update @earendil-works/pi-coding-agent@latest bun update v1.4.2 (744846f84) error: refusing to install dependency get-ripgrep with unsafe folder path "../../third_party/get-ripgrep"
Been running it almost barebones vanilla for a couple of months. Just a bunch of basic extensions and some skills.
Now, if only they could fix the very annoying bug of the history jumping back at the beginning if I am not a the end while the model is reasoning that would great.
Couple skills to integrate with an obsidian MD task tracker, small chat interface on the phone made public via tailscale, and bam, a reminder bot you can text from the grocery store.
I am also using pi exclusively after having had decent success with openhands but begrudging all of the docker infrastructure ... and all of the emojis.
My only pain point is that in my extremely common and boring workflow, which is pi inside of gnu screen inside of OSX terminal.app ... all reasoning/thinking text is blinking ... like old fashioned ANSI blink on a BBS.
I cannot figure out how to disable the blinking thought/reasoning text ...
If I remember correctly, the reasoning text was being output using the italic ANSI code, which was being formatted funny on my terminal. I fixed it by adding a font that supports italics. I recommend taking a look at the ansi codes.
Pi felt nice when I used it, and I do value keeping things minimal, but I just find the criteria very uneven.
The only thing that makes Jev and the likes particularly interesting is that it is a general purpose classifier. In the past, classification tasks meant training a new model to solve your problem. Now you can just use an off the shelf general purpose model and hit the ground running.
General purpose classifiers have existed and proven useful for quite a while now. We used these last year. for vision and text both.
Codemode as a mechanism can expose non LLM functionality to the coding agent. In that sense, Pi does not have a tool for Jev or other classifiers. It just now makes it easier for the agent to utilize it in the same way as it's otherwise quite creative in using bash.
The point of Pi is that the user can tell the agent to improve itself and give it the tools it does need. The minimalism comes from the user creating what they need instead of the maintainers trying to support everything for the users. The fact that it doesn't have everything the user needs out of the box is intentional.
The point of Pi is to be minimal but also follow what the models need. We were pretty outspoken that models need code execution, and that's why Pi to this day has a very small set of tools available. However as more and more training with these models abstracts even over toolcalls themselves with code mode and similar things, it requires changes to Pi.
Mario and I talked about this last week if you want to know our thinking: https://x.com/pidotdev/status/2104510506627121451
And yes, that's why there is no Jev tool in Pi either.
I don't know if you were aware, but not shipping with MCP was one of its "features":
https://mariozechner.at/posts/2025-11-02-what-if-you-dont-ne...
They let you have it via a plugin/extension.
Some tools used to be 0.x for ages and, in this case, the 1.0 signals they're happy enough and allows them to promote things in a better way.
This is I guess the natural evolution of playing around building temporal like things for a need that many have.
If there's anything that I can conclude about Anthropics idea of how a LLM should speak. Vibes would have been an euphemism
Codex in particular is using responses lite internally and relies on codemode for parallel tool calling. So codemode was a given.
Jev on the other hand is new but it's not the first type of model we had troubles with supporting in Pi and we looked at how to make that make sense. The internal pi-ai SDK supports image generation and classifier models, but without building an extension it was never possible for you to utilize it.
So there was a while functionality of Pi that few people used, because there were no obvious ways to hook it up with the coding agent. Codemode also allows us to close that gap.
And once you have codemode, modern MCP can work quite well if the servers cooperate.
Haven't used omp web yet.
Now I just write a prompt and OMP just hammers away at it. There might very well be some OpenCode plugin for this but it just works out of the box with OMP.
But what I do use Pi a lot for is as a base for agents. I much prefer it to using an agent SDK. I find its minimalism and extensibility to be a really nice substrate for new projects.
I could easily imagine someone getting to a really productive personal setup with it as well, for the same reasons as above.
It kind of just gets with how you creative you want to be about it.
then i use pi in a terminal like a caveman to try the open models like deepseek etc.
I also have pi running on a VPS. I have a custom Django app that calls out to it for a bunch of stuff. I don't know how the full system works because the agents built it but basically I think one pi uses a whatsapp wrapper to constantly listen to a whatsapp group and find bills. Then those get added to the Django Database which triggers a second pi + deepseek to OCR them, parse out the data like amount, due date, reference etc, and update the database with that. I have a trigger to 'merge duplicate', which is also just a prompt and pi.
Yes you can do all this without a harness and just the model APIs directly but the harness means it can use linux tools to crop the PDFs etc, so when I also wanted a new feature that crops out the bank details and lets me hover over and see the original before making the payment for a bill that's just another tweak to pi's prompt (or more meta, me prompting my agent to update pi's prompt).
I love open source. I love the terminal. I spent the last 20+ years in a terminal w/vim every single day, and then claude/codex TUIs, and yet I care more about my own productivity so I don't use any of that now.
Even if taking pride in your tools was a productivity killer (I have my doubts), maybe there's mental value to be gained.
I usually recommend Conductor to most people. Personally, I use the one I built, but it's got a few ergonomic issues for most people which I still need to fix.
Tossed all my weekly usage for each provider at the top with their 5hour windows and such. its been great so far.
I usually start a codex or claude session on the remote host, close my mac, even restart Orca desktop on mac, but when I start Orca, I can watch the Orca on my remote host working through.
It's similar to Claude remote session, but just easier to manage, easier to create worktree, easier to navigate, open multiple tabs etc.
cursor.com
conductor.build
code.visualstudio.com w/ Claude Plugin or equivalent plugin
zed.dev
there are dozens tbh
I've eventually settled on a CLI agent multiplexer that essentially run in the background while the frontend is a GUI gateway agent to that backend system with a goal middle layer so I no longer need to interject directly into the prompts and forces the CC and Codexes to communicate to me in a structured format relevant to my purpose.
For research, planning, figuring out bugs, etc I usually don’t bother creating the worktree until I’ve decided on the implementation.
I’m sure there’s better workflows and software, but all I’ve got for work is gh copilot and Claude enterprise. I like copilot better than Claude for the most part.
The only thing I've configured is the default model.
Pi is great overall. I ended up deploying a GUI wrapper because TUI isn't as friendly to new adopters.
There's definitely a class of folks who like to "polish their tools" per se vs tools just being as a means to an end.
It's fine and cool, sort of like the desktop ricers do with Hyperland, Niri, etc showing off desktops, but never seem to do anything with this cool tech.
i haven't gotten around to it yet, but i'd also like to change how `Bash` functions on a basic level (and subagents), where rather than the agent picking a fixed timeout, it just gets notified with exponential backoff about commands that aren't done and then gets a turn to decide what to do with it.
having said that, i find it annoying and not empowering that basic things like subagents and web search aren't built in. the ideal to me seems to be an agent with polished extensions for all the common use cases that can be disabled if you do want to rewrite them. but i put up with the pain because i really want my pet feature ¯\_(ツ)_/¯
Just keep using Claude or Codex.
It's all window dressing and some delta in token usage, but again who cares really?
This really only matters when you're productizing "AI" for your end users, that's when you need to see which agent uses tools better, has more support for MCPs, headless mode, sessions, etc. \
I used to have a MCP extension but recently pi added builtin support for MCP so my stack is simpler now.
Thank you for keeping things simple! Simple is beautiful.
Minimalism is a difficult subject. In art, minimalists tried to strive for something that is universally minimal. But if you look in nature for straight lines or perfect circles, you end up disappointed. Turns out minimalism found things that were minimal with respect to how some humans think about minimalism. For all we know, pure chaos may be more universally minimal than an empty vacuum.
I actually built my own tool that maintains a work graph (DAG-like) with task leases. It allows me to copy and paste pre-written prompts into Claude Code, Codex, or OpenCode and all the agents self-coordinate through MCP calls.
I built this after trying hermes and Openclaw but not liking the lack of human-in-the-loop judgement. So I'm wondering if I should keep refining my tool, or evaluate something like pi?
Languages with less opensource footprint or too verbose are at the losing side in a llm-driven world.
I did not read this when I added support for AGENTS.md, skills, llama.cpp, extensions, alt TUI mode, mid-convo system messages and tool set changes to preserve KV cache, image model support, and everything else I added since November last year.
Codemode and MCP support are the latest additions. We follow what the models are trained on. E.g. the GPT family of models is actually trained on codemode for parallel tool calls now. The MCP spec has gotten a major update recently that makes it much less bad than it used to be in the past 24 months. Combined with codemode, it is now passable, so it got added to pi.
All of these features are still entirely optional and the only thing I could think of that could be considered "bloat" is the additional few megabytes for the QuickJS WASM blob.
So, I mean this in earenst and absolutely not combative: could you explain what exactly flips the switch between "pi is minimal" and "pi is not minimal"?
That said I also dislike many of those other changes and would prefer a hypothetical version of Pi which didn't have them, so this is in some sense just me looking up at the sound of a v1.0 release and realizing "oh hey, I don't really like the direction this has been trending for a while"
I also like Autolith. The freedom of having a lisp machine is, to me, much more enjoyable than trying to maintain Typescript. But I'm not a typescript guy.
I do largely stick with Pi because it's very bulletproofed