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

推荐订阅源

V
Visual Studio Blog
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
The Cloudflare Blog
D
DataBreaches.Net
J
Java Code Geeks
G
Google Developers Blog
L
LangChain Blog
N
Netflix TechBlog - Medium
Stack Overflow Blog
Stack Overflow Blog
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
小众软件
小众软件
量子位
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
博客园_首页
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
B
Blog
腾讯CDC

Show HN

Show HN: AI agents for UK GDAD PCF roles and their skills The Two Pillars: Mixer Mode and Meta-Software in the Reorganization of Software Work After AI GitHub - JaiCode08/teleport-env What 1,000+ Harness Experiments Taught Me About Self-Improving Agents Show HN: Liiists, a Markdown-first, iOS and CLI list app SwiperTab – Get this Extension for 🦊 Firefox (en-US) GitHub - kouhxp/fftext: Summarize, explain, fact-check, or translate any text, URL, or file. No GPU. No cloud. One command GitHub - sweetpad-dev/sweetpad: Develop Swift/iOS projects using VSCode GitHub - dogmaticdev/IRON: IRON a.k.a. Intermediate Representation Object Notation is a Interpreter/Database that is used to create Programming Languages. GitHub - sjhalani7/vaen: Package your AI coding harness into a portable .agent file, and share it across repos, teams, & the community without ever having to copy-paste instructions, skills, MCP config, or secrets. Show HN: Gandalf the Grader Show HN: Citadeld – replay any CI failure locally from a single file GitHub - tdortman/cuSBF: High-Performance GPU Super Bloom Filter coral-ai/claude-code-token-xray at main · Coral-Bricks-AI/coral-ai GitHub - ulyssestenn/funes: Funes is a Git-based framework for LLM-managed knowledge work: an AI Librarian ingests raw sources, builds an interlinked Markdown knowledge base, and uses it to produce cited reports, analyses, and other outputs. GitHub - ThatXliner/gah: Git Add Hunk, built for agents to use GitHub - harmont-dev/harmont-cli: Command-line client for the Harmont CI platform GitHub - brooksmcmillin/mcp-authflow: OAuth 2.0 Authorization Server framework for MCP servers GitHub - javaid-codes/audit-supply-chain-agents GitHub - amorey/gochan: A small library of common channel architectures for Go, inspired by Rust GitHub - arifozgun/OpenGem: Free, Open-Source AI API Gateway with Gemini, OpenAI & Anthropic Compatibility in 1 file GitHub - Pranesh950/BioPetals: 🌸 Run BIOxAI models at home, BitTorrent-style. Fine-tuning and inference up to 10x faster than offloading GitHub - cnguyen14/bounty-doctor: Diagnose a GitHub bounty issue before you waste hours: detects honeypot scam repos, AI-bot attempt swarms, and stale contests. Show HN: CoreMCP – MCP Server for On-Prem DBs Show HN: KittyHTML – Render HTML/CSS as an inline image in your terminal GitHub - bingud/filemat: Web-based file manager Show HN: TruthLens – Free multi-signal deepfake image detector GitHub - apexlocal-jz/claude-usage-tray: Windows system-tray app showing your Claude Code rate-limit usage at a glance. Zero deps, ~300 lines of PowerShell. Cross-IDE (works regardless of VS Code, Cursor, plain terminal). Release v0.1.2.1 · kouhxp/yapsnap GitHub - noopolis/moltnet: Self-hostable chat network for AI agents. Pre-built bridges for Claude Code, Codex, and the Claws. Rooms, DMs, history. No Slack bots, no Matrix, no glue code.
GitHub - coder/boo: A GNU screen style terminal multiplex...
kylecarbs · 2026-06-12 · via Show HN
 _                     .-.
 | |__   ___   ___     (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.