惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CERT Recently Published Vulnerability Notes
S
Security @ Cisco Blogs
S
Security Affairs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
Lohrmann on Cybersecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
Forbes - Security
Forbes - Security
H
Heimdal Security Blog
A
Arctic Wolf
NISL@THU
NISL@THU
P
Proofpoint News Feed
W
WeLiveSecurity
S
Schneier on Security
AI
AI
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
L
LINUX DO - 最新话题
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Know Your Adversary
Know Your Adversary
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
I
Intezer
S
Securelist
Help Net Security
Help Net Security
Microsoft Security Blog
Microsoft Security Blog
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
小众软件
小众软件
Last Week in AI
Last Week in AI
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
WordPress大学
WordPress大学
罗磊的独立博客
月光博客
月光博客
雷峰网
雷峰网
A
About on SuperTechFans
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
博客园 - 司徒正美
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events

Hacker News

Introducing Claude Opus 4.7 Qwen Studio The Future of Everything is Lies, I Guess: Where Do We Go From Here? GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Unexpected €54k billing spike in 13 hours: Firebase browser key without API restrictions used for Gemini requests Retrofitting JIT Compilers into C Interpreters IPv6 – Google The Accursèd Alphabetical Clock Cybersecurity Looks Like Proof of Work Now Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent When moving fast, talking is the first thing to break Too much Discussion of the XOR swap trick – Heather Cafe Introduction to Spherical Harmonics for Graphics Programmers The Grand Line Building a Z-Machine in the worst possible language High-Level Rust: Getting 80% of the Benefits with 20% of the Pain GitHub - duguyue100/midnight-captain: Inspired by Midnight Commander, tailored to my taste. How to build a `git diff` driver · Jamie Tanna | Software Engineer Center for Responsible, Decentralized Intelligence at Berkeley The Local Universe’s Expansion Rate Is Clearer Than Ever, but Still Doesn’t Add Up - A new synthesis of astronomical measurements confirms a persistent mismatch that could point to physics beyond current models The air throughout our homes is infused with microplastics. But there are things you can do to breathe less of them The disturbing white paper Red Hat is trying to erase from the internet – OSnews The Future of Everything is Lies, I Guess: Annoyances ‘Abhorrent’: the inside story of the Polymarket gamblers betting millions on war Productive procrastination — Max van IJsselmuiden maps, territory and LMs 447 Terabytes per Square Centimetre at Zero Retention Energy: Non-Volatile Memory at the Atomic Scale on Fluorographane Show HN: Pardonned.com – A searchable database of US Pardons 20 Years on AWS and Never Not My Job The Seasons are Wrong Artemis II crew splashes down near San Diego after historic moon mission We gave an AI a 3 year retail lease in SF and asked it to make a profit | Andon Labs How a dancer with ALS used brainwaves to perform live On filing the corners off my MacBooks Installing every* Firefox extension OpenClaw’s memory is unreliable, and you don’t know when it will break Steve Blank Nowhere Is Safe Chimpanzees in Uganda locked in vicious 'civil war', say researchers watgo - a WebAssembly Toolkit for Go linux/Documentation/process/coding-assistants.rst at master · torvalds/linux GitHub - callumlocke/json-formatter: Makes JSON easy to read. Founding Product Engineer at Bild AI | Y Combinator A compelling title that is cryptic enough to get you to take action on it GitHub - Keychron/Keychron-Keyboards-Hardware-Design: Industrial design files for Keychron keyboards and mice. 100+ models with CAD assets in STEP, DXF, DWG, and PDF. Source-available, with commercial use allowed for original compatible accessories within the license terms. [ANNOUNCE] WireGuardNT v0.11 and WireGuard for Windows v0.6 Released 1D-Chess Helium Is Hard to Replace Cooperative Vectors Introduction | Evolve Keeping a Postgres queue healthy — PlanetScale Our response to the Axios developer tool compromise Do Americans read print books, e-books or audiobooks more? The Zettelkasten Method in Obsidian: A Practical Setup Guide Artemis II Is Competency Porn and We Are Starving For It WeakC4 Flight Viz — Cockpit View A Mexican surveillance giant you’ve never heard of is now watching the U.S. border Surelock: Deadlock-Free Mutexes for Rust RISC-V 101 – what is it and what does it mean for Canonical? | Ubuntu The Problem That Built an Industry How Much Linear Memory Access Is Enough? | Solidean Investigating Split Locks on x86-64 Simplest hash functions Sybilproof reputation mechanisms (2005) [pdf] What is a property? How Complex is my Code? Static code analysis in Kotlin — tools overview Toffoli gates are all you need PGLite evangelism dcmake: a new CMake debugger UI Clojure on Fennel part one: Persistent Data Structures Fragments: April 2 Python Release Python install manager 26.1 The Life and Death of the Book Review - Liberties Introducing Database Traffic Control — PlanetScale Bitcoin miners are losing $19,000 on every BTC produced as difficulty drops 7.8% God sleeps in the minerals Building slogbox Apple Silicon and Virtual Machines: Beating the 2 VM Limit Who was “Not Even Wrong” first? Pokemon Evolution Vs Darwinian Evolution The APL Programming Language Source Code
GitHub - coder/boo: A GNU screen style terminal multiplexer built on libghostty.
kylecarbs · 2026-06-12 · via Hacker News
 _                     .-.
 | |__   ___   ___     (o o)
 | '_ \ / _ \ / _ \    | O \
  | |_) | (_) | (_) |    \   \
   |_.__/ \___/ \___/      `~~~'

Sessions that haunt your terminal.

Install | Usage | Automation | Why | Architecture

ci release license discord

A GNU screen style terminal multiplexer built on libghostty (libghostty-vt), written in Zig.

Every session's output is parsed through Ghostty's terminal emulation core, so boo always knows the exact screen state of every session: contents, styles, cursor, scrollback, and terminal modes. That state is used to rehydrate your terminal on attach, to answer terminal queries for detached sessions, and to let scripts and AI agents read the screen exactly as a human would see it.

Features

  • Sessions that survive disconnects: detach with Ctrl-A d, reattach with boo attach.
  • A full-screen session manager: boo ui lists sessions in a sidebar.
  • Faithful redraws from libghostty terminal state, including SGR styles, cursor position, scrolling regions, window title, and terminal modes.
  • Agent-friendly automation primitives: send, peek, wait, and --json output, all usable without a TTY.
demo.mp4

Install

For Linux and macOS:

curl -fsSL https://raw.githubusercontent.com/coder/boo/main/install.sh | sh

Pre-built binaries are published on the releases page. Set BOO_VERSION to pin a release and BOO_INSTALL_DIR to change the install location (default: /usr/local/bin when writable, otherwise ~/.local/bin).

Usage

boo new                    # new session running $SHELL, attached
boo new work               # named session
boo new work -d -- make    # create detached, running a command
boo ui                     # manage sessions in a full-screen UI (alias: i)
boo ls                     # list sessions
boo attach work            # reattach (alias: at, a)
boo rename work api        # rename a session
boo kill work              # end a session
boo kill --all             # end every session

With no name, boo new names the session after the current directory, falling back to the process id when that name is taken or unusable.

Run boo help for the full overview, boo help <command> for flags and examples, and boo help --all to print every help page at once.

Key bindings (prefix Ctrl-a)

Bindings follow GNU screen's defaults, including the C-x variants (C-a C-d detaches just like C-a d).

Keys Action
C-a d, C-a C-d detach
C-a l, C-a C-l redraw
C-a a send a literal C-a

boo ui adds additional keybinds for switching, resizing and hiding the sidebar, creating sessions, and killing them.

Automation

Everything except attach works without a terminal, which makes boo a natural sandbox for scripts and AI agents driving interactive programs. The canonical loop:

boo new build -d -- bash               # 1. headless session
boo send build --text 'make' --enter   # 2. type into it
boo wait build --idle                  # 3. let output settle
boo peek build --scrollback            # 4. read the screen
boo kill build                         # 5. clean up
  • Reading state: peek prints the rendered screen reconstructed from terminal state, not a raw byte log: ordered, fully redrawn, and stable. --scrollback includes history; --json adds size, cursor, and title.
  • Waiting: wait --text <text> blocks until the screen contains the text; wait --idle until output has been quiet for 2 seconds; --timeout <dur> exits 4 instead of hanging forever (durations: 500ms, 2s, 1m, 4h, 1d). No more sleep-and-poll loops.
  • Sending input: send --text is literal: no escape processing, no implicit newline, no quoting layer to fight. --enter submits, --key Enter,C-c,Up names control keys, and stdin mode is binary safe.
  • Machine-readable output: ls --json and peek --json.
  • Exit codes: 0 success, 1 error, 2 usage error, 3 no such session, 4 wait timed out.

See boo help automation for the full page.

Why boo?

GNU screen works the same way boo does, 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 are answered while detached so TUIs don't hang unattended.

Scripting is the other win: send, peek --json, and wait --text/--idle instead of -X stuff, hardcopy files, and sleep loops.

tmux is great, it just solves a different problem. boo keeps screen's model by design: sessions, a prefix key, and nothing else to learn. One session per task, with boo ui to juggle them.

Contributing

Requires Zig 0.15.2.

zig build                       # binary in zig-out/bin/boo
zig build test                  # unit tests
zig build test-integration     # end-to-end tests on a real PTY
zig build test-all             # everything

The libghostty dependency is fetched and built from source automatically (pinned in build.zig.zon).

With Nix, nix develop opens a shell with the right Zig version, and nix build builds the package to ./result/bin/boo.

Architecture

your terminal <-(raw tty)-> boo client <-(unix socket)-> session daemon
                                                         `- PTY + ghostty-vt Terminal
  • The client puts your TTY in raw mode and shuttles bytes over a framed Unix-socket protocol (src/protocol.zig).
  • The daemon (forked on session creation) owns the session's command: a PTY-attached child whose output feeds a persistent ghostty-vt TerminalStream (src/window.zig).
  • While attached, output is passed through to your terminal byte for byte. On attach the daemon sanitizes your terminal and replays the screen from libghostty state using its VT TerminalFormatter.
  • Terminal queries (DSR, DA, XTWINOPS, ...) while detached are answered by libghostty's stream handler; while attached your real terminal answers, avoiding double replies.

Caveats

This is a young project, not a drop-in GNU screen replacement:

  • One attached client per session (attaching steals); no -x sharing.
  • One window per session: no splits or tabs inside a session. Run one session per task and juggle them with boo ui.
  • The C-a prefix is not yet configurable, and pasted bytes containing 0x01 are interpreted as the prefix (GNU screen has the same quirk; boo ui is immune thanks to bracketed paste).
  • Sessions run with TERM=xterm-256color.

Support

Feel free to open an issue if you have questions, run into bugs, or have a feature request.

License

MIT. Ghostty itself is MIT licensed.