Filter
Exclude
Time range
-
Near
Replying to @garybasin
Oh, lol. Yeah I’m going to start on FrankenCode as soon as FrankenEngine and FrankenNode are done (they’re getting closer).
1
93
Plus: 1) A next-level safe version of SQLite that natively supports multiple concurrent writers using a similar approach to what Postgres uses (this is like 2-3 days from completion already). FrankenSQLite. 2) a from-scratch, radically innovative and safe JS engine and node/bun replacement. FrankenEngine and FrankenNode. 3) next level safe rust versions of Numpy, Scipy, Pandas, NetworkX, Jax, and Pytorch. Faster, better, and all memory safe. Franken<you get the idea>. 4) Same for Redis, Whisper, and Mermaid. 5) FrankenCode (haven’t started this yet but it will merge my Rust version of Pi Agent, which is already done, with Codex and my new FrankenEngine and FrankenNode) to make the best, most extensible, and SAFEST agent harness in the world, with the best interface via my FrankenTUI library, which is the best and fastest TUI library in the world now. 6) All of this will flow into FrankenTerm, which is an unholy mixture in Rust of WezTerm, Ghostty, Rio, Zellij, and a ton of my other projects (like process_triage, storage_balast_helper, vibe_cockpit, etc) to make the very best cross-platform terminal emulator with integrated multiplexer that’s designed from the ground up to withstand the extreme demands of multi-day sessions involving hundreds of separate agents.
24
4
253
66,723
Replying to @antonioc_cl
Opencode is awful, first of all. FrankenCode will be infinitely better in every way. And FrankenTerm fills a massive gap right now, which is an integrated terminal emulator and multiplexer that doesn’t roll over and die when you do thousands of agent sessions over multiple days.
2
5
124
No, I still use Codex and Claude Code (you don't have a choice with this if you want to use Max). But also this didn't fully work until recently... As for why I made it, it was always supposed to be a building block for my FrankenCode project, which is why I made FrankenTUI.
2
9
1,643
Now it's time to create an unholy alliance of this pi_agent_rust project with OpenAI's Codex, but with a truly next-level TUI provided by my FrankenTUI project... and it will be called FrankenCode. And you'll be able to use it within my FrankenTerm project once that's done.
I finally finished my Rust version of Mario Zechner's (@badlogicgames) excellent Pi Agent, which I made with his blessing and which is called pi_agent_rust. You can get it here: github.com/Dicklesworthstone… If you're not familiar with Pi, it's a minimalist and extensible agent harness (similar to Claude Code and Codex) and, among other uses, serves as the core agent harness inside the OpenClaw project. I say my Rust "version" instead of "port" because it's really quite different in how it's implemented for it to be called a port. Arguably, the incremental functionality in the implementation was more complex than the rest of the project combined. Still, it provides the same features and functionality as the original, and is proven to be compatible with hundreds of popular extensions to Pi (the conformance harness shows 224 out of 224 extensions working perfectly). But the way it's architected has some major changes. Pi Agent relies on node or bun to provide access to the filesystem and for various other tasks, and that is also how Pi's extension system works. I decided early on that I didn't want to do things that way. Instead, I wanted to integrate that functionality directly into the binary itself; that is, to provide equivalent functionality for everything that would normally be provided by node/bun in the original. I did this for several reasons: one, it's a lot more performant in terms of footprint and latency. On realistic end-to-end large-session workloads (not toy microbenchmarks), pi_agent_rust is now: - 4.95x faster than legacy Node and 2.80x faster than legacy Bun at 1mm-token session scale - 4.32x faster than legacy Node and 2.14x faster than legacy Bun at 5mm-token session scale - ~8x to ~13x lower RSS memory footprint in those same scenarios But the other reason is security and control: by handling everything internally in an end-to-end way, we can do all sorts of clever things to harden the system against insecure or malicious extensions. Those extensions no longer have direct access to the ambient filesystem: they now need to go through pi_agent_rust, and we can analyze extensions carefully before ever running them and also block things that look suspicious at runtime. In practice that means explicit capability-gated hostcalls, with policy/risk/quota enforcement and runtime telemetry/auditability. In order to do all this, I had to effectively build the missing runtime substrate from scratch in Rust, not just translate TypeScript syntax: - define and implement a typed hostcall ABI for extension->host interactions - build native Rust connectors for tool/exec/http/session/ui/events instead of ambient Node/Bun access - implement a compatibility/shim layer so real-world Pi extensions still behave correctly - add capability policy evaluation, runtime risk scoring, per-extension quotas, and audit telemetry on the execution path - wire the whole thing through structured concurrency (asupersync) so cancellation/lifetimes are deterministic and failure handling is explicit - build a conformance benchmark harness large enough to validate behavior/perf across hundreds of extensions and realistic long-session workloads This was a full re-architecture of the execution model while preserving the Pi workflow and extension ecosystem. And indeed, this aspect of it dwarfs the entire rest of the project in size and complexity. To put hard numbers on that: the extension/runtime/security subsystem alone is now about 86.5k lines of Rust across src/extensions.rs (~48.1k), src/extensions_js.rs (~23.4k), src/extension_dispatcher.rs (~13.4k), and src/extension_index.rs (~1.7k), with roughly 2.5k callable units in just those files. For context, the original Pi coding-agent production code is about 27.4k lines total. So this one subsystem by itself is roughly 3.2x the size of the original harness, which is why calling this a “port” would seriously undersell what had to be built. And on top of that, pi_agent_rust introduces a bunch of genuinely new capabilities beyond the legacy harness, not just a faster core: - Security and enforcement are materially stronger at runtime: capability-gated hostcalls with explicit policy profiles (safe/balanced/permissive), per-extension trust lifecycle (pending -> acknowledged -> trusted -> killed), explicit kill-switch operations, and audited state transitions. - Shell execution mediation is deterministic and argument-aware: rule/feature-based risk scoring plus heredoc AST inspection (dcg_rule_hit, dcg_heredoc_hit) before spawn, instead of relying on coarse deny patterns. - Containment and forensics are first-class: tamper-evident runtime risk ledger tooling (verify/replay/calibrate), unified incident evidence bundles, and forced-compat controls that let you contain issues without disabling the whole extension system. - The extension runtime architecture is native: JS extensions run in embedded QuickJS with typed hostcall boundaries and Rust-native connectors for tool/exec/http/session/ui/events, plus compatibility shims for real-world legacy extensions. - Runtime behavior under load is explicitly engineered: deterministic hostcall reactor mesh, fast-lane vs compat-lane routing, and warm-isolate prewarm handoff for more predictable throughput and latency under contention. - Long-session reliability is upgraded: JSONL v3 sessions with indexed sidecar acceleration and optional SQLite-backed sessions, plus operational controls via --session-durability, --no-migrations, and migrate. - Provider and auth coverage are broader and more operationally explicit: native Anthropic/OpenAI (Chat Responses)/Gemini/Cohere/Azure/Bedrock/Vertex/Copilot/GitLab plus large OpenAI-compatible routing; pi --list-providers currently shows 90 providers with aliases and required auth env keys. - Auth is not just API keys: OAuth (Anthropic/OpenAI Codex/Gemini CLI/Antigravity/Kimi/Copilot/GitLab plus extension-defined OAuth), AWS credential chains (Bedrock), service-key exchange (SAP AI Core), and bearer-token flows. - Operator tooling is stronger: pi doctor supports scoped checks (config, dirs, auth, shell, sessions, extensions), machine-readable output (--format json|markdown), and safe auto-remediation (--fix). - Extension/package lifecycle workflows are built in: install, remove, update, update-index, search, info, and list. I want to thank Mario for making a great harness and for not telling me to get lost when I asked him if he was OK with me porting it to Rust. I may give him a hard time in jest about not going "full clanker," but that doesn't mean that I don't respect his work a huge amount. PS: There could still be bugs. If you find some, please let me know in GitHub Issues and I'll fix them same day. There's always a tradeoff between perfect and getting stuff out the door and I felt like it was time to release this.
14
4
92
8,862
Replying to @BowTiedWellness
Oh that is definitely happening. That’s why I created FrankenTUI and why I ported Pi Agent. It’s gonna be called FrankenCode and it’s going to be a million times better than OpenCode.
6
136
OK, my upgrade to 64 cores was well-timed. I now have a disgusting number of next-gen Codex 4.6 and Codex 5.3 clankers running across 3 machines and 9 projects. Just the Pi Agent Rust port alone has like 8 of each going at the same time. Lightspeed ahead! FrankenCode beckons.
14
1
86
4,462
I’ll probably finish the Rust Agent Mail port today, and it will be so much faster and better than the current Python version (which is already quite good). I waited to do this because I first had to port the fastmcp and sqlmodel Python libraries to Rust, which are fairly complex. And I also wanted to finish my asupersync library and FrankenTUI so I could use those for everything. But now that all those pieces are in place, it’s coming along very quickly. Then right after that will be my FrankenCode. And then I can start merging tools (I’ll always also keep them separate and modular) into one super tool, all in “alien artifact” Rust.
2
23
2,355
Replying to @darin_gordon
Yep, that’s exactly right. And going to turn it all into the very best coding harness out there shortly, FrankenCode.
2
8
227
Replying to @doodlestein
This is GREAT. cant wait for FrankenCode!
1
3
385
Starting the port of Mario Zechner's (@badlogicgames) awesome Pi Agent project to Rust (with his blessing!). I was first going to do a straight port using standard Rust libraries like Tokio and save my own homegrown libraries for FrankenCode, but decided I might as well do it:
14
5
87
5,662
Replying to @doodlestein
Okay, one more thing from my experience in Rust (but maybe for later) If you end up publishing an "embedded" version of this tool (e.g. WASM port for the SDK) Please separate your `frankencode-sdk-embedded` crate (which abstracts IO) from your `frankencode-sdk-wasm` crate which exposes frankencode via WASM - this is far easier to maintain since - `frankencode-sdk-wasm` - `frankencode-sdk-c` - `frankencode-sdk-zig` - `frankencode-sdk-jvm` - etc they can all support bespokely designed FFIs for each target host language without the tragedy of trying to bridge from C FFI -> Java like many crates do.
1
2
91
All the FrankenTUI beads have been implemented. I’m also making a demo showcase app to exhibit all the functionality and then will keep adding more tests and doing more optimization work. Then I’m going to port Pi agent to Rust. Once I have that, I’m going to try to combine the best elements of the Rust Pi agent with codex, but using FrankenTUI for console rendering and my asupersync library for all networking and file IO. I’m calling it FrankenCode, and I’m pretty excited about it. It’s going to be spectacular, like some kind of alien artifact. Which it is, in a sense. 👽🛸🧠 Hopefully will have it done within a week.
OK we've got beads now. 171 of them to be exact (I might still add a few more). That means we're basically 90% of the way there in terms of my own involvement. After this point, it's mostly machine tending and account swapping: totally mechanical and formulaic.
18
2
62
7,715
Mostly because it's pretty ghastly frankencode by now, but also because it's on a repo I use for work as well. I can send you a copy if you like though. It ought to run from start to finish.
3
94
Replying to @clcoding
This profession is about to be swarmed by bad devs who think they're good just because they can stitch together Frankencode from LLMs.
2
1
25
3,265
19 Oct 2023
Who wants to see my frankencode that scraped the LA results on election night? I’d have to edit a few things before publishing it.
4
6
1,052
18 Jul 2023
And not because of the frankencode per se. The cause of the frankencode—the culture of censorship—has brought us these horrific pieces of legislation, which will destroy whatever is left free speech on large platforms. And the high price of Twitter didn’t leave Elon $$$ to fight.
1
3
226
18 Jul 2023
Replying to @TaraBull @elonmusk
DSA may require this soon, but it’s not clear to me that Twitter would be held accountable for telling us about the effects of old frankencode that still may be lurking somewhere in there, yet undiscovered.
1
7
600
When your code is a patchwork quilt of different languages and you can't even remember what you were trying to do 🤯 #CodingConfusion #GoogleCodingGoneWrong #FrankenCode #stackoverflow #chatGPT #GoogleAI #code
1
2
46
The home team chats with Christine Ryu, Engineering Lead at fintech platform Flourish, about her journey from Goldman Sachs to startup life, the stress of writing code that trades billions of dollars, and the pitfalls of Frankencode. stackoverflow.blog/2023/03/0…
1
11
5,385