Meta just bought Manus, and their former lead dev took to Reddit to expose a hard truth: Bloated JSON function calling is dead. The future of AI agents is bash.

So, we all know Meta just dropped a bag to acquire Manus, the hyped AI agent startup. But right in the middle of this hype train, a former backend lead at Manus went on Reddit to drop a massive truth bomb that’s currently blowing up the dev community's minds. After two years of sweating blood over AI agents, his conclusion is delightfully chaotic: Throw your bloated structured function calling in the trash. A single run(command="...") using Unix CLI commands beats the crap out of everything else.
Sounds like heresy, right? But if you read his breakdown, it makes an infuriating amount of sense. Grab your coffee, let's break down this absolute masterclass in practical engineering.
This guy points out a beautifully simple parallel: 50 years ago, Unix creators made a core decision: everything is a text stream. Tiny tools do one thing well, chained together by pipes (|), yelling at each other via stderr, and reporting status via exit codes.
Fast forward 50 years, and what are LLMs? Everything is tokens (text). They think in text, act in text, consume text. So why on earth are we forcing them to context-switch between a massive catalog of typed JSON API tools (search_web, read_file, send_email)?
Instead, he exposes just one tool to the LLM: run(command="...").
Need to read a log and count errors? Instead of three separate function calls, the agent just spits out:
run(command="cat /var/log/app.log | grep ERROR | wc -l")
Why is the LLM so good at this? Because it was trained on billions of lines of GitHub repos, CI/CD scripts, and Stack Overflow dumps. You don't need to teach an LLM bash—it's already the ultimate terminal power user.
You can't just give an AI a terminal and expect magic. It can't Google things when it gets stuck. The dev used three "heuristic" tricks to make the CLI guide the agent naturally:
1. Progressive --help discovery
Don't stuff a 3,000-word API doc into the system prompt. It's context waste. Start by injecting a simple list of available commands. If the agent calls memory without arguments, the system throws an error showing the subcommands: usage: memory search|recent|store. The agent learns on the fly, drilling down only when needed.
2. Error messages as a GPS
Traditional CLI errors are meant for humans. For agents, every error must include the fix.
Agent tries cat photo.png? Instead of tokenizer garbage, the system intercepts and says: [error] binary image. Use: see photo.png. The agent corrects itself in the very next step.
3. Pavlovian output formatting
Append [exit:0 | 12ms] to the end of every output. The LLM quickly internalizes that exit:1 means it messed up, and 45s means the query was expensive, naturally making it smarter about resource usage.
To make this work without breaking Unix pipes, you need two layers: Layer 1 (pure Unix execution) and Layer 2 (LLM presentation). And the production horror stories prove why:
cat. 182KB of raw PNG bytes were fed into the tokenizer, generating pure garbage tokens. The agent lost its mind and hallucinated 20 retries before crashing. Fix: Binary guards.stderr if stdout had any content. The agent failed to pip install a package, couldn't see the command not found error, and blindly guessed 10 different package managers like an idiot. Fix: stderr is the holy grail. Never drop it.grep on this temp file to find what you need."The thread is a goldmine of devs having "aha" moments:
spaceman_ pointed out that Hugging Face's Smolagents did something very similar but restricted the agent to purely writing Python code.johnbbab noted the irony: "The most powerful agent framework might end up looking exactly like the shell."raucousbasilisk nailed it: "JIT natural language to sed awk regex was the true superpower all along."Sometimes, as devs, we love over-engineering things. We build massive, bloated JSON schemas for our AI agents to consume, completely forgetting that the bearded Unix wizards from the 70s already solved the "chaining small tools together via text" problem.
If you're building an agentic workflow, give this CLI approach a shot. You can even grab a Free $300 to test VPS on Vultr to spin up a sandbox environment and let your LLM go wild with bash commands.