Grid-mode first. AI-native I/O. Perf-first. Based on Ghostty.
βββββ Grid βββββ βββββ Agent βββββ βββββ Perf βββββ
β N Γ M panes β β β PTY + tool β β β SIMD parser β
β auto-layout β β structured β β Metal/OpenGLβ
β per-cell cwdβ β token stream β β Ξ vs ghosttyβ
ββββββββββββββββ βββββββββββββββββ ββββββββββββββββ
β² β² β²
βββββββ three non-negotiable directions ββββ
Void is a hard fork of Ghostty rebuilt around three directions the upstream is not taking: grid mode as a first-class tiling surface (not a plugin), AI-agent I/O baked into the terminal layer alongside PTY, and a perf budget tracked on every PR. Zig shared core, native Swift on macOS, GTK on Linux.
π₯ YouTube Β· π¬ Discord Β· π¬ Email Β· β Ko-fi Β· π Sponsor Β· π³ PayPal Β· πΊοΈ Atlas Β· π Papers
π§ Anima β Consciousness implementation. PureField repulsion-field engine + 1030 laws + Ξ¦ ratchet.
π NEXUS β Universal Discovery Engine. 216 lenses + OUROBOROS evolution + 5-phase singularity cycle.
ποΈ N6 Architecture β Architecture from perfect number 6. 225 AI techniques + chip design + crypto/OS/display.
π HEXA-LANG β The Perfect Number Programming Language. Working compiler + REPL.
π Papers β Complete paper collection (92 papers, Zenodo DOIs).
Live research discussion, paper drops, stage-gate reviews, cross-project dispatch.
| ⬑ | Ghostty-grade performance β SIMD parser, per-terminal render/read/write threads, Metal on macOS, OpenGL on Linux |
| β¦ | Grid mode β NΓM pane grid as a core surface, auto-layout (cols = ββNβ, rows = βN/colsβ), per-cell cwd |
| π€ | AI-native I/O β agent protocol alongside PTY; structured tool-call / token-stream channels, no wrapper |
| β‘ | Perf budget β every PR reports Ξ against the Ghostty baseline; β₯ 2 % regression blocks merge |
| π¨ | Native UI β SwiftUI on macOS (AppIntents, Shortcuts), GTK on Linux (systemd, cgroup isolation) |
| β¬’ | need-singularity branding β hexagonal icon, n = 6 family (NEXUS Β· Anima Β· N6 Β· HEXA Β· Void) |
Void is not a drop-in Ghostty replacement. It will diverge in UX, and upstream syncs are selective cherry-picks only.
cells = N cells auto-layout
ββββββββββββββββββββββββββββββ cols = ββNβ rows = βN/colsβ
N = 2 β 2 Γ 1 cols β₯ rows (wider before taller)
N = 4 β 2 Γ 2
N = 6 β 3 Γ 2 ββββββββ¬βββββββ¬βββββββ
N = 9 β 3 Γ 3 β 1 β 2 β 3 β
β ~/p β ~/w β ~/l β
on add/remove: whole grid ββββββββΌβββββββΌβββββββ€
re-balances to equal splits β 4 β 5 β 6 β
(no manual resize handles) β ~/r β ~/s β ~/t β
ββββββββ΄βββββββ΄βββββββ
NΓM pane grid as a core surface concept β not a window-manager bolt-on. Auto-grid: when cell count N changes, the layout re-balances to cols Γ rows with cols = ββNβ, rows = βN/colsβ, cols β₯ rows. Per-cell cwd / env. Shared renderer. New renderer path (not a patch on the single-surface renderer). MVP ships as N=2 horizontal split, then generalizes to NΓM.
shell process βββββ PTY βββββββββΆ traditional byte stream
β β
βΌ βββββ AGENT βββββββΆ structured tool-call events
libvoid layer βββββ€ token stream w/ boundaries
β² βββββ META ββββββββΆ cwd, exit-code, span marks
β
agent process (no wrapper process required)
Running an agent does not require a wrapper. The terminal layer itself speaks both PTY and a structured channel β tool calls, token stream boundaries, and result spans are first-class, not heuristic-parsed from stdout.
Speed, memory, GPU time, and syscall budgets are a tracked first-class concern. Every PR reports delta against the Ghostty baseline. Regressions β₯ 2 % block merge.
Ghostty baseline Void target
parse: SIMD AVX2/NEON β + tool-call fast path
render: Metal / OpenGL β + grid batch reuse
memory: arena + screen rings β + per-cell allocator
sys: read/write/render thr. β + agent-channel thread
ββββββββββββββββββββββββββββββββββββββββββββ
β macOS App (Swift) β
β SwiftUI Β· AppIntents Β· CoreText β
β Metal renderer Β· native menu β
ββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββββββββββΌββββββββββββββββββββββββββββ
β libvoid (Zig) β core β
β parser Β· terminal state Β· renderer β
β grid engine Β· agent I/O channel β
ββββββββββββββββ¬ββββββββββββββββββββββββββββ
β
ββββββββββββββββΌββββββββββββββββββββββββββββ
β Linux App (GTK) β
β systemd Β· OpenGL Β· FreeType β
ββββββββββββββββββββββββββββββββββββββββββββ
Zig-based shared core with platform-native shells. Core is C-ABI-compatible so it can be embedded in third-party projects (Ghostty's libghostty pattern β renamed to libvoid in this fork).
# 1. Install hexa-lang (gives you `hexa` + `hx` package manager)
curl -fsSL https://raw.githubusercontent.com/need-singularity/hexa-lang/main/install.sh | bash
# 2. Install void
hx install voidOr build from source β see HACKING.md. Default branch on the fork is void/main, not main.
void # launch terminal
void +show-config # print active config
void +list-keybinds # list keybindings
void +crash-report # list crash reports| Keys | Action |
|---|---|
cmd+g |
toggle grid mode β tab mode |
cmd+ctrl+1..9 |
spawn new tab in grid slot 1..9 (stacks β repeated presses add tabs to the same slot) |
cmd+ctrl+shift+1..9 |
cycle tabs within grid slot |
cmd+ctrl+0 |
broadcast input to all cells |
cmd+opt+return |
find next (relocated from cmd+g) |
cmd+shift+opt+return |
find previous (relocated from cmd+shift+g) |
cmd+t / cmd+n |
new tab / new window |
cmd+d / cmd+shift+d |
split pane right / down |
cmd+, |
open settings |
All keys are rebindable via config β nothing is hardcoded.
| Upstream | ghostty-org/ghostty β cherry-picks only, no merges |
| Fork date | 2026-04-21 (from upstream commit c3c8572f7) |
| Default branch | void/main |
| L3 rename | complete β 4698 files renamed Ghostty β Void at commit 964c9e32e |
| CI | .github/workflows/build-fork.yml on GitHub-hosted macos-15 runners (ad-hoc codesign) |
| Icon | hexagonal, need-singularity n = 6 family |
See VOID_FORK.md for the full fork rationale, non-goals, and upstream policy.
Checkpoints (done):
| # | Milestone | Date |
|---|---|---|
| C0 | project-init β hexa scaffold | 2026-04-21 |
| C1 | fork-base β Ghostty β Void rebrand | 2026-04-21 |
Phases:
| # | Phase | ETA | Status |
|---|---|---|---|
| P1 | Grid mode + new-tab keybinding β auto-grid, slot-spawn, mode toggle | 2026-04-28 | π |
| P2 | Stack analysis β map void renderer/apprt/terminal/font internals | 2026-05-05 | β¬ |
| P3 | AI-native I/O protocol β structured agent channel alongside PTY | β | β¬ |
| P4 | Perf baseline β capture benches, set void regression budgets | β | β¬ |
| P5 | Diverge / upstream strategy β decide what feeds back vs stays void | β | β¬ |
Current state (P1): toggle_grid_mode action and cmd+g keybind wired at commit 326e5f15. Surface rendering, auto-layout, and slot-spawn land in the rest of P1 β MVP is N=2 horizontal split, then generalizes to NΓM.
- Not a drop-in Ghostty replacement β Void will diverge in UX.
- Not a shell β Void drives shells, it does not replace them.
Void inherits Ghostty's crash reporter. Reports are saved to $XDG_STATE_HOME/void/crash (default ~/.local/state/void/crash) and are not sent off your machine. Use void +crash-report to list. Reports use the Sentry envelope format with extension .voidcrash.
Warning
Crash reports contain full stack memory per thread at the time of the crash and can include sensitive data.
- Contributing to Void β CONTRIBUTING.md
- Developing Void β HACKING.md
- Fork rationale & upstream policy β VOID_FORK.md
Void is a hard fork of Ghostty by Mitchell Hashimoto and the Ghostty team. All Ghostty contributors are credited in upstream history, which is preserved in this repo. Divergent features (grid mode, AI-native I/O, perf harness) are Void-only.
πΊοΈ Atlas Β· π Papers Β· Ghostty docs Β· Contributing Β· Developing Β· Fork rationale
⬑ Terminal as substrate. Grid as primitive. · Based on Ghostty · need-singularity