HN user

kylecarbs

287 karma

https://x.com/kylecarbs

Posts15
Comments39
View on HN

I want boo to be a screen replacement, not a tmux replacement. tmux gives you a whole workspace: layout, scrollback, copy mode, a status bar. screen's appeal was that it did almost none of that: sessions, a prefix key, done. boo keeps that model and swaps the emulation for libghostty so reattach actually redraws correctly.

They also compose: a boo session is just a PTY running a program, so you can run tmux inside one if you want.

Fair. Adding a section for this now.

screen actually works the same way architecturally: it parses all output through its own built-in terminal emulator and redraws from that state on reattach. But that emulator is decades old and lags far behind what modern programs emit. Whatever it doesn't understand gets dropped or mangled on redraw. boo swaps that layer for libghostty-vt, Ghostty's VT core, so the saved state matches what your terminal would actually display, and terminal queries get answered while detached so TUIs don't hang unattended.

tmux is great, it was just never the model I wanted. I really liked screen's simplicity, sessions and a prefix key and nothing else to learn, and boo keeps exactly that.

Bun has completely changed my outlook on the JS ecosystem. Prior to Bun, there was little focus on performance. Now the entire space rallies around it.

Congrats to Jarred and the team!

That would be great!

`npx @ghostty-web/demo@next` starts an HTTP server on `localhost:8080`, so you could just wrap a basic Dockerfile with NPM installed (and maybe a variety of fun Linux tooling, ala vim).

Feel free to shoot me an email: kyle@coder.com. I'll happily add it to the README.

We spent little time on performance so far, this is more of a POC that will hopefully become a drop-in replacement for xterm.js over time.

I'll swap it over to the new RenderState API and post some benchmarks!

Many kudos to y'all, we were shocked how simple it was to hack this together.

I just put an HTTP proxy in front of Claude Code.

Surprisingly, it just accesses their `/v1/messages` endpoint - nothing hidden at all.