Claude-skill-registry libghostty-vt

libghostty-vt

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/libghostty-vt" ~/.claude/skills/majiayu000-claude-skill-registry-libghostty-vt && rm -rf "$T"
manifest: skills/data/libghostty-vt/SKILL.md
source content

libghostty-vt

Zero-dependency VT sequence parser from Ghostty. Mitchell Hashimoto's embeddable terminal core.

Status

NOT YET RELEASED (as of 2025-09) - Zig API available for testing, C API coming.

What It Is

libghostty-vt
extracts Ghostty's proven VT parsing into a standalone library:

  • Parse ANSI/VT sequences
  • Maintain terminal state
  • Zero dependencies (no libc required!)
  • SIMD-optimized (>100 MB/s plain text)

Architecture

Raw Bytes → UTF8Decoder → Parser (DFA) → Stream → Actions
                           │
                     State Machine
                     (14 states)

Parser States

StatePurpose
ground
Normal text printing
escape
ESC detected (0x1B)
csi_entry
CSI sequence start
csi_param
Parsing CSI parameters
osc_string
OSC data collection
dcs_passthrough
DCS data collection

Action Types

const Action = union(enum) {
    print: u21,              // Unicode codepoint
    execute: u8,             // C0/C1 control
    csi_dispatch: CSI,       // Control Sequence Introducer
    esc_dispatch: ESC,       // Escape sequence
    osc_dispatch: *osc.Parser,
    dcs_hook: DCS,
    dcs_put: u8,
    dcs_unhook: void,
};

Key Files (ghostty-org/ghostty)

src/terminal/Parser.zig      # State machine
src/terminal/stream.zig      # Stream wrapper + SIMD
src/terminal/osc.zig         # OSC parser
src/terminal/parse_table.zig # Compile-time transition table
src/simd/vt.zig              # SIMD acceleration

Performance

OptimizationImpact
Pre-computed state tableO(1) transitions
SIMD text processing10-100x for plain text
Fast-path CSI parsingSkips state machine
Fixed-size buffersNo allocation

Use Cases

  • Terminal emulators (tmux, zellij, Ghostty)
  • IDE terminals (VS Code, JetBrains)
  • Cloud terminals (Vercel, Render)
  • TUI frameworks
  • Terminal recording/playback

When Available

# Future installation (not yet available)
# Zig
zig fetch --save git+https://github.com/ghostty-org/libghostty-vt

# C (when released)
# pkg-config --cflags --libs libghostty-vt

Example (Future API)

const vt = @import("libghostty-vt");

var parser = vt.Parser.init();
var stream = vt.Stream(MyHandler).init(&parser, &handler);

// Process bytes
for (input) |byte| {
    if (stream.next(byte)) |action| {
        switch (action) {
            .print => |cp| handler.print(cp),
            .csi_dispatch => |csi| handler.handleCSI(csi),
            // ...
        }
    }
}

Sources

GF(3) Assignment

Trit: +1 (PLUS) - Generator/Parser
Hue: 180° (cyan - terminal green vibes)

Triads:

  • libghostty-vt (+1)
    ×
    vterm (0)
    ×
    terminfo (-1)
    = 0 ✓
  • libghostty-vt (+1)
    ×
    tmux (0)
    ×
    escape-sequence-validator (-1)
    = 0 ✓