A readable Zig shell, a native Windows terminal host, and a local AI sidecar — sharing themes, events, and approval semantics.
Platform status — read this first. The native graphical desktop runs on Windows and macOS. Windows (verified 2026-05-17): Win32/ConPTY host with split panes, search, AgentD panel. macOS (verified 2026-06-09): native Cocoa window via
ZIGGYZAG_NATIVE_WINDOW=1— CoreText grid renderer, dynamic resize, mouse-wheel scrollback, Cmd+V paste, application-cursor, Ctrl+Space AgentD overlay. Linux: shell + launcher only for now.
git clone https://github.com/PascalAI2024/ZiggyZag
cd ZiggyZag
zig build
./zig-out/bin/ziggyzagNeed Zig 0.16.0. Prebuilt zips for Windows, Linux, and macOS live on the releases page — install scripts are at scripts/install.sh and scripts/install.ps1.
A live landing page is at docs/index.html (open it locally or once GitHub Pages is enabled).
ZiggyZag is one workspace and four binaries that act like a single product:
apps/shell— the shell itself. REPL, parser, completion, history, jobs, prompt themes. About 5,600 lines of Zig you can step through.apps/desktop— the native terminal host. Windows-native Win32/ConPTY with split panes, search, palette, mouse-wheel scrollback, themes, AgentD panel.apps/agentd— a slim JSON-lines AI sidecar. Approval-aware for any mutation. Sandboxed file reads with realpath containment. Ollama and OpenAI-compatible providers.apps/launcher— the cross-platform entry point used by release zips.
The shell is the source of truth. The desktop is a host. The agent asks before it acts.
Pick a theme in the desktop with Ctrl+Shift+T. The terminal palette AND the shell prompt accent move together. Same trick in any external terminal — export ZIGGYZAG_THEME=tokyo-night and the prompt follows.
20 themes ship today: ziggy, catppuccin-mocha, catppuccin-frappe, catppuccin-macchiato, catppuccin-latte, tokyo-night, tokyo-night-storm, dracula, nord, rose-pine, gruvbox-dark, everforest-dark, kanagawa-wave, solarized-dark, solarized-light, one-dark, ayu-dark, paper, github-light, ember. Spec is in docs/reference/theme-protocol.md. Accessibility audit (WCAG AA contrast across every theme) lives at docs/reference/accessibility.md. Try theme list once running.
| Zig lines | 18,850 |
| Unit tests | 213 (some skip on non-target platforms) |
| Binaries | 4 |
| Cross-built targets | 5 (windows-x86_64, linux-x86_64, linux-aarch64, macos-x86_64, macos-aarch64) |
| Third-party deps | 0 |
@panic calls |
0 |
| First commit to alpha | 3 days |
- Windows desktop: alpha. Native Win32 + ConPTY host. Split panes, palette (
Ctrl+Shift+P), search (Ctrl+Shift+F), quick-select (Ctrl+Shift+O), AgentD panel (Ctrl+Shift+A), live theme cycle (Ctrl+Shift+T), settings overlay (Ctrl+,). I/O bridge bugs fixed 2026-05-17 — host is empirically drivable. - macOS desktop: alpha. Native Cocoa window (NSWindow + NSView + CoreText/CoreGraphics). Activate with
ZIGGYZAG_NATIVE_WINDOW=1 ./zig-out/bin/ziggyzag-desktop. Features: CoreText grid renderer, dynamic resize, mouse-wheel scrollback, Cmd+V paste, application-cursor arrows, Ctrl+Space AgentD overlay with [H]health / [T]tools / [Esc]close. - Linux desktop: launcher only. POSIX PTY relay; native window in the next wave.
- Shell: alpha-ready. 40+ builtins, native simple pipelines (
/bin/shfallback for complex), prompt themes (classic,smart,compact,dev,dashboard), abbreviations, autosuggestions, fuzzy Ctrl-R, history with metadata, project-aware tasks. - AgentD: alpha. Local-only by default. Tool list with approval policies, sandboxed reads, redacted output. Falls back gracefully when no provider is configured.
The full alpha-readiness picture is in docs/vision/alpha-tasks.md. The strategic direction is in docs/vision/masterplan.md.
| Want to | Read |
|---|---|
| Build, run, theme, friend-test | Quick Start |
| Understand the project's north star | Masterplan |
| See what's missing and why | Alpha Tasks |
| Read what we lifted from other tools | References |
| Read the unified theme spec | Theme Protocol |
| Read the release plan | Waves |
| Style something with our tokens | Brand |
| Look at the system shape | Architecture |
| Contribute | Contributing · Tour |
| Report a security issue | SECURITY.md |
| See what changed | CHANGELOG.md |
| Read an external review | docs/reviews/2026-05-17-baseline.md |
App-specific docs: shell · desktop · agentd.
flowchart LR
user["You"] --> term["ziggyzag-desktop\n(Win32+ConPTY · Cocoa/CoreText)"]
term -- "PTY bytes" --> shell["ziggyzag\n(parser + builtins + jobs)"]
shell -- "OSC 7777 events" --> term
term -- "stdio JSON-lines" --> agent["ziggyzag-agentd\n(tools + sandbox)"]
term -. "ZIGGYZAG_THEME" .-> shell
agent --> tools[("local tools:\nfile.read · rg.search\ngit.diff · project.info")]
agent --> approval{{"host approval"}}
approval --> term
Three processes, one product. The shell does parsing/execution. The desktop owns the window/grid/palette. The agent suggests and asks. Nothing in the diagram is mocked or aspirational — every arrow runs today on both Windows and macOS.
flowchart LR
w1["W1: Dogfood"] --> w2["W2: Unified theme + brand"]
w2 --> w3["W3: Native macOS/Linux\nAgentD universal input"]
w3 --> w4["W4: SQLite history\nStreaming pipelines"]
w4 --> w5["W5: Tabs + session restore\nKeybindings"]
w5 --> w6["W6: 1.0\nSigned releases\n5 friend testers @ 2wk"]
style w3 stroke:#9be28f,stroke-width:2px
Wave 2 is complete (tagged v0.1.0-alpha.3). Wave 3 is the current target. Full gates in docs/vision/waves.md.
Built by PascalAI2024 while finishing the CodeCrafters Shell challenge, then extended into a learning-first open-source project.
References lifted from with respect: Warp, Ghostty, WezTerm, fish, Starship, and Atuin. The full study is at docs/vision/references.md.
MIT. See LICENSE.