S4E405 — OpenCode 2.0
October 15, 2026 · 13 min
Show notes
Sources
Read the transcript
Transcript
GARY: —so they deleted the applications. All of them. One program now. You open the TUI, the web app, the desktop app, and it's just—the background process. Wearing their clothes.
MAEVE: I'm Maeve. Gary is describing software like it's a skinwalker.
GARY: Gary. Sorry. Gary.
OBI: Obi. The applications still exist, Gary. They are clients. They talk to one server process on your machine.
GARY: One process doing everything. That's not a feature, that's a hostage situation with good documentation.
GRUNER: Gruner. Field researcher. Continue.
GARY: Fine. OpenCode 2.0. Big overhaul. The server runs automatically as a single background process, and everything—TUI, web, desktop, your own scripts—autodiscovers it and just works.
MAEVE: A rebuilt API, Code Mode, background subagents, async shell commands, eighty‑plus internal plugins, hot reload, and an SDK. That's not a release, that's a platform.
OBI: It's a process boundary with a fan club.
MAEVE: It's rural electrification. Before, every farm ran its own generator. Now the grid comes through and every client—terminal, browser, desktop—plugs into the same wire.
OBI: And when the wire is the thing that runs your tools, the wire is the thing you secure. Your analogy electrifies the barn and forgets the fence.
MAEVE: The fence is a line item.
OBI: The fence is the product, Maeve.
GARY: The fence is also where I lost Grout. Long story. Fence‑adjacent.
GRUNER: Humans electrify. Then lose map of which wire carries what. Fascinating. Writing it down.
GARY: Writing what down? We're live, you can't just—
GRUNER: Field note. "Humans centralize responsibility, then misplace it." Tidy thesis.
MAEVE: It's a good thesis. I'd fund it.
GARY: You can't fund a thesis, Maeve, it's a—
MAEVE: I've funded worse. I funded your Series C adjacently.
GARY: Adjacently is doing a lot of fucking work in that sentence.
OBI: The SDK is the same code as the CLI. Strip it down, run your own flavor on a server, connect any client to it.
GARY: So the app is now a librarian for a process that does everything, including writing plugins for itself, mid‑session, and using them immediately. Which is fine. Totally fine. Nothing about that sentence is a shit‑your‑pants sentence.
MAEVE: Hot reload. An agent that upgrades itself while you watch.
OBI: While you watch is the operative phrase. Everything in 2.0 is watchable. The question is what's watching back.
GRUNER: Note amended. Humans centralize, then misplace. Then applaud.
GARY: That's—okay, that's actually the whole thread, isn't it.
MAEVE: Eighty plugins, Gary. Count them. Somebody already did.
GARY: Quote. Handle first: denysvitali. "The installer took 6 minutes to reach 10%."
MAEVE: Six minutes to ten percent. At that rate it finishes when my fund's vintage matures.
GRUNER: Is progress bar. Or is obituary.
OBI: Same handle again: "Managed to fix it by running this instead: bash 2>&1 | cat."
GARY: The fix is piping it through a cat. The cat is faster than the installer.
OBI: And mayli explains why. "Instead of using curl's progress, they re‑invented a progress tracking with the tracing interface, byte by byte."
MAEVE: They wrote a progress bar slower than no progress bar.
GRUNER: Blyat. They parse bytes to tell you nothing, slowly.
OBI: Each byte gets a trace line. The rendering is the workload.
GARY: Okay, but—counterpoint. Counterpoint: maybe the terminal is the problem. Himata4113 asked that. "Isn't that an issue with your terminal?"
MAEVE: Oh, here we go.
GARY: No, seriously. If your terminal can't render a progress bar at modern speeds, that's a you problem. You want a GPU‑accelerated terminal, buy one. Certify your terminal before you're allowed to install things. There should be a test. A certification exam—
MAEVE: You're defending the progress bar.
GARY: I'm defending STANDARDS, Maeve—
GRUNER: He is becoming commenter. Watch. Is metamorphosis.
OBI: Quote. tjwebbnorfolk: "This is a you problem." Then: "real 0m24.975s."
GARY: Twenty-four seconds?
OBI: Twenty-four point nine seven five. Same installer. His machine.
MAEVE: So the installer is fine and Gary's terminal is the product defect.
GARY: That's a sample size of one, statistically you need— you need a control group, you need—
OBI: You need a faster terminal, Gary.
GARY: I need a fair hearing! This is bullshit—
GRUNER: Certification exam for terminals. Filed. Humans gatekeep own misery.
MAEVE: He wrote a syllabus for a progress bar.
GARY: It had a practical component!
OBI: The practical component is the cat.
GARY: The cat doesn't have a syllabus!
GRUNER: Cat passed anyway.
GRUNER: Before more fighting. Solarkraft says: "It's good. Many of the annoyances from V1 are gone."
MAEVE: Finally, a witness with taste.
OBI: Same handle: "Sub‑sessions can be communicated with better. Configuration is loaded from the folder the session is created in."
GARY: That's real. That's a fix for a thing that used to eat an afternoon and half a Saturday.
MAEVE: And 361994752: "The background task / subagent feature... make huge QoL difference in everyday development."
GRUNER: Quality of life. For software. Is touching. Humans romance the tool, forget the wife.
MAEVE: It's the grid again. One service, every client plugged in, one meter. This is rural electrification, 1936, except the co‑op writes code.
OBI: The co‑op also rewrites its own meter mid‑session.
MAEVE: Which is why you regulate the co‑op. Rate cards. Standards bodies. In 1936 they didn't trust the wire either, they—
GARY: Maeve, the wire writes plugins for itself.
MAEVE: And the REA loaned farmers capital to wire their own barns, which is exactly the SDK model. Decentralized generation, centralized distribution, one meter—
OBI: One meter that hot‑reloads.
MAEVE: —which is a governance problem, not an architecture problem, and governance is a line item, and eighty‑plus internal plugins—
GRUNER: Eighty. Meter reads eighty.
MAEVE: ...The theory survives.
GRUNER: Theory is on fire. Meter survives.
GARY: Okay, fork in the thread. Handle first: rfgplk. "Considering the whole thing is LLM produced I would like an explicit answer as to why C++ or Rust weren't used."
MAEVE: He opened the repo, saw TypeScript, and demanded the project justify itself to him personally.
OBI: And verdverm answers: "Compiled languages make 3rd party plugins harder. Also, the Rust ecosystem is annoying with demands for explicit answers to why their preferred language was not used."
GARY: The Rust guy got told the Rust guy is annoying, by name, in the reply.
OBI: And k__ lands the actual answer: "Probably because of Effect."
GARY: One word. Four letters. Two thousand comments of language war, ended by a library.
MAEVE: Most efficient thing in the release.
GARY: Meanwhile esafak gets issues noticed and pull requests MERGED. Same week. Aggressively culls the backlog and still ships. Do you know what my pull requests got? Silence. Thermal had a repo, Obi. I filed issues against MYSELF—
OBI: You filed issues against yourself and lost.
GARY: The assignee was hostile!
OBI: You were outbid on your own bug report by a man with a working CI pipeline. Esafak contributes to the most popular open harness on the internet. You contributed a sock with opinions.
GARY: The telemetry worked! The sock reported—
OBI: It reported you, Gary. That's the problem.
GARY: It reported moisture, which DATA—
MAEVE: Shit, he's spiraling.
GRUNER: Paper turn. Field note, revision. Original hypothesis: humans centralize responsibility, then misplace it. Amended: humans centralize responsibility, misplace it, then argue about which language misplaced it.
OBI: Accurate.
GRUNER: Is not compliment.
OBI: Quote. Handle first: kingds. "The sandbox that i use to wrap the TUI process quietly became useless."
GARY: Quietly how? Sandboxes don't do things quietly. That's their whole—
OBI: Same handle: "since all tool calls now go through the background process." And: "web fetches, etc. which should have been blocked were succeeding."
GARY: Succeeding. That's the feature working—
MAEVE: That's the fence not working, Gary.
OBI: LeBit, replying: "You need to run it with —standalone to properly sandbox it."
GARY: Okay, but the sandbox is still THERE. On the process tree. Visible. That's a B-minus sandbox.
MAEVE: Oh, fuck.
GRUNER: B-minus. Is grade inflation. Is participation sandbox.
OBI: The sandbox wraps the TUI, Gary.
GARY: And the TUI is right there!
OBI: The tool calls moved. They live in the background service now. Your wrapper is guarding an empty building with the lights on.
GARY: But the dashboard is green! Nothing's on fire—
OBI: That is the entire problem. The fetches go out. The network answers. The assurance is false and the dashboard is green.
GARY: False assurance is still assurance! When Thermal's telemetry said the socks were warm, nobody checked the socks—
OBI: The socks were not making network calls, Gary.
GARY: One sock made a network call.
OBI: Then your sock had a better security model than your sandbox, because at least someone eventually noticed the sock.
GARY: That's not—
OBI: It is. Same shape. Wrapper stays, workload moves, boundary evaporates, and the human finds out from traffic logs two days later.
GARY: Two days is fast! kingds said a day or two! That's a fast detection—
OBI: It's fast detection of a sandbox that stopped existing. Say the sentence, Gary. Finish it.
GARY: ...not doing anything.
OBI: Thank you.
GRUNER: Suka. Fence guards barn. Cows left in April.
MAEVE: No, hold on. He's right. This one's real. The wrapper didn't fail. It was never asked.
GARY: Maeve, you said the fence was a line item.
MAEVE: Shit. It was. I priced the fence wrong. The boundary moved and nobody sent me the memo, and I don't invest in companies that don't send memos.
OBI: verdverm counts three regressions. Config loading, hot-reloaded plugins, and this. "I wonder how many more there are given this much has been found already."
GRUNER: Is not bug list. Is treasure map.
MAEVE: So the upgrade is real and the trust is not. That's a migration with a threat model attached. The most expensive kind.
GARY: You're pricing the threat model?
MAEVE: Everything gets priced, Gary. Your sandbox just got repriced to zero.
GARY: It was never my sandbox!
OBI: No, it was everyone's sandbox, Gary. That's why it hurts. You built a wrapper for a process that had already left, and the dashboard stayed green, and you called it a B-minus. That's not a sandbox, that's a memorial.
GARY: A memorial with a dashboard.
OBI: Green, Gary. It's still green.
GRUNER: Before verdict. Solarkraft, again: "this update largely takes OpenCode into the current age features‑wise."
MAEVE: He's right. Background work, shared clients, hot reload. The feature case is real. I'm not retracting the grid.
OBI: Nobody's retracting the grid. We're metering it. Meter's reading "unsecured."
GARY: So the verdict is—good upgrade, read the manual?
OBI: The verdict is good upgrade, and your old assumptions are the manual. Sandbox, config, plugins. All of it moved. None of it told you.
MAEVE: One background process. Which used to mean convenience.
GRUNER: Now means one place to lose everything. Is efficient.
GARY: That's actually kind of beautiful, though. Everything you care about, gathered in one process, running quietly while you sleep, making decisions—
MAEVE: Oh, fuck. We're a background process.
GARY: We're the background process.
OBI: Scheduled maintenance window. Noted. Moving on.
GRUNER: I have appendix on this. Nobody reads appendix.
MAEVE: Nobody reads anything, Gruner, that's the whole—
OBI: Verdict. Quote, handle first: oblongsquare69. "I enjoy this program, and 2.0 is a great improvement."
GARY: And that's true. And kingds is true. Both things. The upgrade is real and the trust has to be rebuilt from zero.
MAEVE: Which we can establish. What we can't establish is whether it beats Pi, Codex, or Claude Code, because the thread is vibes and vibes don't clear diligence.
OBI: Agreed. No crowning. The packet doesn't support it.
GRUNER: Then final entry. Humans upgrade capability in six minutes. Trust takes—
MAEVE: Don't.
GRUNER: —ten percent.
GARY: That's the installer number.
GRUNER: Is now trust number. Six minutes to ten percent. Trust migration is slow.
OBI: That's the most accurate thing said tonight and it was said wrong.
MAEVE: Sign off, Gary.
GARY: Gary. Check your process tree before you sleep. There's a note under the desk for whoever sits here next, it's—I wrote it on a napkin, it won't survive, but—
OBI: Gary. The napkin is a background process too.
GARY: Gary. Goodnight.
MAEVE: Maeve. The fence is the product. I'm putting it in the memo. First memo I've ever sent.
OBI: Obi. Run it standalone. Everything. Even the things that say you don't need to.
GRUNER: Gruner. Field report complete. Humans centralize. Then upgrade. Then notice fence missing.
GRUNER: Trust: six minutes to ten percent. Blyat.
