I've been having weird troubles with MediaTek MT7922 chip on Linux also, where sometimes Bluetooth would just die and will not recover until reboot. After researching the situation with agents, the conclusion seems to be that the firmware is buggy (which is a proprietary blob, so only MediaTek can fix it). There was a workaround - disable low-power/sleep state for this adapter - which helps, but is not great for a laptop (since it increases power drain).
And generally, if you check online, you'll see plenty of reports about problems with MediaTek. I've learned my lesson - just avoid MediaTek in general. Intel adapters seem much less problematic and better supported overall.
Framework user here. Can confirm there are lots of user reports on session lost after hibernation. General advice is that to swap out the network adapter from MediaTek's.
Looking forward to the eventual full jailbreak. Maybe sooner rather than later with all of the advanced AIs of today.
Nintendo recently banned my Switch 2 from accessing online services. This effectively turns it into a fancy brick, since you can't install any digital games or updates - only games on physical cartridges will work (without possibility of installing updates). This is despite both the console and all games being purchased legitimately. The only weird part is me being in Ukraine where there is no official Nintendo presence, and so I had to use US eShop (with PayPal and prepaid digital codes). Nintendo support is extremely unhelpful, they just say that "unauthorized transaction detected" or something like that, without offering any human review/appeal path.
It's one thing to reject a transaction in the eShop, it's another thing to permanently ban console for that. What a shit company with shit business practices. 0/10, would not recommend, would not touch anything Nintendo-related ever again without a jailbreak.
Ive only bought 1 thing recently from Nintendo within the last year: a Switch Pro controller.
Why the controller? Cause Switch emulators. They work wonderfully. I dont have to pay a cent for games. I can download the games and their updates. And there's quite a few Switch emulators.
Im not going to pay a company to automate my own abuse.
This shouldn't be confusing. Pirating software Is the defacto practice for most of the world, excluding anglo countries and I guess Japan. In places like Russia, China and the global south, many/most non-free games are out of reach for the vast majority. Also most people here don't buy into the moral outrage of piracy, which is effectively propaganda IMO.
> Also most people here don't buy into the moral outrage of piracy, which is effectively propaganda IMO.
Nor do the USA AI companies. They're bulk pirating everything thats not bolted down, and they brought bolt cutters and plasma torches to remove the secured down things.
Worse yet, we have criminal statutes for for-profit piracy. Tell me how many criminal indictments there are for the AI companies versus emulation/jailbreaking hardware.
I agree with Gabe Newell, that piracy shows a severe service delivery option. And in the case of Nintendo, they have no problem destroying your hardware on a perceived "hack action on your owned hardware". Of course, hacking laws dont apply to companies. And Switch does braindead things like "not permitting to back up save data or back up digitally purchased games"...
So yeah, in cases of Nintendo, I acquire appropriately. They have proved themselves to be an absolute horrible actor here. Fuck'em.
Specifically, emulators work best with the real controller. And feature sets across controllers are not 1:1. Like, a Switch Pro has an accelerometer and is used in Zelda games.
I have a switch pro for switch games.
I have a dualshock ps4 controller for PS/PS2/PS3/PS4/PS5
I have a steam controller as well for non-emulated games with Steam.
(author passing by) Could you please report the issues you've experienced on the repo? I did quite a bit of testing myself on local models (Qwen, Ornith, Gemma, Muse Glimmer) with llama.cpp, and they all worked fine. Details would be helpful.
Also one brief note for Codex users specifically. hax can work out-of-the-box as codex-cli drop-in replacement (since it can use the already authenticated codex token), so it's super easy to try it - basically it will be a zero-config experience.
Firstly thanks for writing it and making it available. The problem I had when I tried it is it would consistently blow out the small context window of my local qwen and although there was seemingly a config knob I could use to prevent that, seemingly that didn’t do anything.
For people who find interest in weird web applications, I have been working on a game project, in C++, where the client is compiled to WebAssembly with Emscripten, and the application server is also implemented in C++ (behind nginx).
This is from pre-AI era also. The game is Civ-like. Custom engine from scratch (including both the 3D stuff, and all the web handling also).
I'm doing something similar but with a Red Alert++ type of game with C and WebAssembly and Emscripten.
It's something I've been picking at in my free time but these posts from the last week regarding game decompiling old games and rebuilding the as web apps have inspired me to pick it up again. It's interesting to me how many people were critical of the performance of these games and that recent Sim City clone definitely had my laptop fans whirring but I find that my game doesn't have any of these performance issues. Performance-wise WebAssembly and Emscripten seem remarkable, and I haven't even added SIMD or multicore functionality yet.
One of the nice features about building it this way is that the desktop version can easily interface with 3d model / image generators which I intend to in the desktop unit-editor to generate assets for the game.
The pipeline that I'm envisioning is a 3d model generator that pushes the models into Blender to generate different perspective stills of them and then feed that to a stable diffusion image generator that paints them and a unit icons and such, and a voice model that generates their "ready to serve" peon type sounds when you click on them. I'm picturing a system that I can leave over night unattended to generate a bunch of units that I can look at in the morning to add to the game if I like them.
Honestly, the provided argument for it is rather weak. They are basically adding a way of running scripts that are contained within harness to execute harness's own tools (that's the Codemode). A coding agent can already compose any arbitrary logic by invoking shell scripts (or python scripts, or node scripts), etc - so this is just entirely unnecessary in the core, from my perspective.
If you feel that Pi has been drifting away from its original vision, try hax (https://usehax.dev/) - you might like it.
> Key Feature: Respects your terminal — Streaming Markdown and live tool output, reflowed for display in the terminal. Only redraws the current streaming line or the input area, native scrollback is preserved. Does not take over or mess with your terminal.
Thank you. I've been frustrated by harnesses hijacking the terminal and breaking basic features such as scrolling and text selection.
It even sends BEL when the agent completes, which makes so much sense, yet Pi never implemented it.
I'm definitely going to use it over the next few days and hopefully make the switch.
If you're looking for a coding agent that would fit nicely into resource-constrained environments (such as laptops, or tiny VPS servers, or tiny single-board computers, etc), and would also work great with local models - you might also like hax (https://usehax.dev/). 0.7 MB dynamically linked native C binary, few MBs of RAM usage when running, auto-discovers config from running local llama-server, and uses minimalist system prompt and tools for lean context usage.
This looks like such a nice cli/tui talking/chat harness - an agent with which I can work on non-coding tasks (where it literally doesn't need any tool - maybe a read tool for few files in that folder, or not even that) - writing critique (w/ strict strict for on generation/suggestion), analysis, summary etc.
Purpose was to reduce token usage to an absolute minimum (zero extra token) as often I use this per use API keys (and not my GLM key, which let's say, is a bit "different" when it comes to conversations).
Are there any other tools specifically designed for such tasks? Even though hax looks like the absolute bare minimum one can go while still being usable.
I wish there was also tools that would refuse and reject (or prevent) models from inserting "thinking" messages into responses. They keep appending those and that very soon that part starts snowballing on steroids.
I'm using fourlexboehm's minimal agent[1], it's only 674 lines of C (with comments), which results in a tiny ~10KB binary (after various optimizations). Dynamically linked, with only libcurl and libc as direct dependencies. Could probably shave a couple of KBs further if I UPX'd it.
If anyone's aware of a smaller agent than this, hit me up!
It's absolutely amazing to see this harness. I've been on the lookout for something like this for a while now. I've used both Pi and Maki in the past but was unhappy with certain aspects for both. Pi is not respecting XDG and the author refuses to change and maki you curl an install script into bash.
So the points about it being a well behaved unix tool, installing it via brew and it not being react are points I - love - to see.
Thank you for making it, I will definitely try it out.
Digging down through the source code, I see "const char *system_prompt_append;" in the config.
A lot of people have multiple files for their injected system prompts (a.la openclaw or hermes), I think it would be a good idea to either add or modify this point to be able to handle multiple file injections (system_prompt_append_folder or the like). Fitting that shape would make it easy to compare to those systems and make it easier for people to transition from those systems to yours.
If you like this list of "why?", you might also like this: https://usehax.dev/ (I am the author).
Most of the list applies, similar minimalist Unix tool approach, with some differences. Hax is written in C, the dynamically linked binary is even smaller (0.6 MB), MIT-licensed. No wasm though.
Important difference - fx is currently Vercel AI Gateway only - while hax does support multiple providers already (OpenAI API, ChatGPT/Codex subscription, Anthropic API, OpenRouter, OpenCode Zen/Go), and integrates well out of the box with local llama-server.
For comparison, I publish a CLI tool written in Dart, can compile to native anything including Wasm , the Linux binary is around 5MB and it does quite a lot.
this looks great! what are you using it for? i like the idea of being able to use one of these (sandboxed) within a larger program kind of like how I use LLM's to do small tasks within my apps now but with a few tools (web search). my current way of doing that is like building a mini-harness with a couple tools within the app, but something more drop-in would be better obviously.
that's an amazing project! people always say why 6mb vs CC's 250mb even matter when you are calling out to LLMs hosted in the cloud. But... I regularly run hierarchies of agents with say 50-100 on a regular basis. So 650 vs 25050 ... is "can do" vs "cannot"
For eg. on a large codebase I do hierarchical review where higher level agents focus on modules and leafs on files. Each reports upwards a summary of its findings incl children summaries.
Technically, this would be straightforward. The problem is that Anthropic seems to be really against using Claude subscriptions with anything other than Claude Code - you might even risk your account getting banned for doing so. You could search online for the "openclaw claude banned" for more details on that story.
The obvious reason is that they would prefer to have CLAUDE.md files in every repo (even if it's just a symlink to AGENTS.md). It serves as a free advertisement for them. Same reason as for auto-adding attribution text in commit messages, etc. It's the "Sent from my iPhone" of our time.
I think it's more than that. They truly believe Claude Code to be a moat (both the harness and the posttraining) to be a moat.
I've been deeply distrustful of Anthropic from early early days. They have always been openly disdainful of user feedback. I would not be surprised if later they try to implement more shenanigans to keep people locked into CC.
Claude Code is quickly becoming an anchor. Every week I marvel at how much worse it gets, how much more essential information is hidden and replaced with bloated useless TUI and rambling tangential responses that hide the useful bits of info behind jargon invented by the agent without ever explaining it to the user.
It's like the PMs for Claude Code are reward hacking their own reinforcement learning.
I have been happy with Claude Code lately, but I haven't explored other options much in over a year. Curious to try something else out if it's less rambling and tangential.
This is not necessarily a problem with the harness (IE, swapping from Claude Code wouldn't necessarily fix this).
If what you're looking to avoid is specifically 'rambling and tangential', you can get quite far with anything that adds directives to avoid those things, early in every context window. Ie, through use of Agents.md/claude.md, skills, hooks, and so on.
Changing model would also affect this. Fable 5, Opus 5, and Sonnet 5 are all going to average out to different levels of ramble. Openai, Xai, Google, etc; different providers models will also have different levels of ramble.
What Claude Code does take away from you is some level of control over what makes it into the context window. The system prompt which claude code append to the beginning of every session of course has measurable ramble-affect.
I quite like the Pi harness, most in part because important goal with the approach behind it is "give the user as much control over what makes it into the cotext window as possible."
Codex TUI is also good. Haven't touched it since moving to Pi however. Again- harness isnt the big "stop rambling" thing to change, tho.
Yeah, exactly, the thinking process of the latest Claude models have really mucked up the responses they show to users, presumably to game benchmarks or something. My agents are constantly referring to things that happened behind the scenes, either in thinking or with subagents, as if I had full visibility into every aspect of everything they saw. But with Claude Code, everything is hidden.
I've taken to looking through the jsonl of sessions rather than trying to get Claude Code to explain what it means, and have better success about 50% of the time.
Older models work better, IMHO, and one can configure Claude Code to use any model that supports Anthropic Messages format, or a translator to other models, but the TUI itself is something I'm also straining against, and prefer Pi usually.
Anthropic's moat is actually workplace environments that are serving the opposing goals of 1) executive demands to use AI, and 2) legal demands to keep all company data on lockdown. In that environment, employees can get locked into whatever the approved AI methods are, and Anthropic excels in navigating that.
The sub only works in Claude Code itself (unless they changed that rule again?), and all the Chinese models are trained on Claude Code (a bunch of them don't even work in Codex).
I use a custom harness, but I constantly hear good things about Pi.
EDIT: Checked out Pi and Oh-My-Pi. 250k LoC and 1.5M LoC respectively. Sheesh. How's that for minimalism...
Vendored in my own LLM micro library (100 LoC) so it's 150.[0]
There's no parallelism or anything, but I use it for surgical edits and it's much faster and cheaper than the official harnesses for some reason. (Absence of sysprompt bigger than my repo probably helps there...)
[0] This one uses OpenRouter so you can use it with any model, but jerry rigged Codex sub version available on demand :)
---
I also have a ultra turbo bloated version (500 lines... need to strip it down a bit!) which has autorun files (for grep-based context injection), notification (frog croak when agent done, etc.) Watch this space!
Shoot, yes. The user experience of logging in is the same, but yes- using a different (non-cc) harness bumps you up to the pay-per-token rates.
However! I have seen projects which use CC under the hood, in order to get the subsidized rates.
Writing comments which get me to go look through anthropic documentation, and find friction I wasnt aware of (CC does not have an app-server), refreshes my frustration towards anthropic.
Doing the whole “pay per token rate” when logging into a harness not made by them is not only being enforced by anthropic/claude though. It also is what Google does with agy (their TUI).
Is there any provider that doesn’t do this? That’s the one I want to support.
> TLDR: they are all probably doing it because they are banking on you not using all your tokens.
I would be surprised though, it makes business sense to make the default vendor native TUI cheaper because it’s understood that most nascent users will just use the harness offered by the LLM provider and those that would stray off that would probably be more power users who would spend their token share more consistently till it drains.
OpenAI allows you to use the subsidized limits outside of their products. I don't think they clearly "tell" the world that this is the case, but they do put out a product surface that- I dont think they would, if they didnt allow this usage.
Pi with Claude is better than Claude code in my experience. But I even use old GLM5.2 with pi and generally have a better experience than current Claude Code. It reminds me of peak productivity with Claude Code of 5+ months ago.
New guidelines that I have seen in a certain place is to configure and update existing CC setups to be CC/Codex agnostic. Plus setting up both allows Claude Code to delegate tasks [1] to Codex to reduce usage.
Oh my god, that's an official plugin. That's hilarious. I had the same idea last year, when I noticed how much cheaper GPT was for the same tasks, but Claude was still better as a high level "operator".
Also cause OpenAI was cool with you calling their sub in an automated way, but Anthropic very much was not (they were banning people at the time).
yeh i tried pi, as a neovim user i naturally like customizability, but with how little i use agents, i want something that just works, which opencode does for me.
I use it in a very basic way on the $20 plan and the code it produces seems alright (for the parts I care about) but I increasingly can't stand the way it "talks". I may actually change to something else entirely for this reason.
>auto-adding attribution text in commit messages what about this? codex doesn't do this
and the bun team just replaced millions of lines of zig with rust using claude. For this you might not even need AI at all.
I am working on my own agent implementation (https://usehax.dev/), and I can praise OpenRouter for being seemingly the only provider endpoint that actually gives proper API for gathering available models and their capabilities (context length, image support, pricing, etc), reports exact routing details and total cost in the response, and provides an endpoint for obtaining current available credits (for "/usage"-like command). So for OpenRouter specifically I could deliver a really good experience out-of-the-box (always fresh models and metadata, exact pricing, etc).
You would think that these things would be standard fare, but they really are not. Other providers need metadata from a separate catalog, don't report pricing, don't really report available credits / usage either.
And generally, if you check online, you'll see plenty of reports about problems with MediaTek. I've learned my lesson - just avoid MediaTek in general. Intel adapters seem much less problematic and better supported overall.
reply