Skip to content

Commit f996e78

Browse files
committed
Copy update
1 parent 16c27ee commit f996e78

10 files changed

Lines changed: 100 additions & 114 deletions

File tree

src/content/blog/building-attyx.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: "Building Attyx: A GPU-Accelerated Terminal in Zig, from Scratch"
3-
description: "How a weekend experiment turned into a sub-1MB terminal environment with Metal and OpenGL rendering, a zero-allocation VT parser, and a deterministic architecture that's fully testable without a GPU."
3+
description: "How a weekend experiment turned into a sub-1MB terminal with Metal and OpenGL rendering, a zero-allocation VT parser, and a deterministic architecture that's fully testable without a GPU."
44
date: 2026-02-27
55
tags: ["attyx", "zig", "terminal", "gpu", "semos"]
66
cover: "/images/building-attyx.webp"

src/content/docs/docs/attyx/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
title: Attyx
3-
description: A deterministic, VT-compatible terminal environment written in Zig.
3+
description: A fast, GPU-accelerated terminal environment with built-in sessions, splits, and more.
44
sidebar:
55
label: Overview
66
order: 1
77
---
88

9-
Attyx is a deterministic, VT-compatible terminal environment written in **Zig**. It features GPU-accelerated rendering with Metal on macOS and OpenGL on Linux — fast, correct, and configurable.
9+
Attyx is a fast, GPU-accelerated terminal environment written in **Zig**. Persistent sessions, splits, tabs, popups, and GPU rendering — everything you need in a single binary.
1010

1111
## Install
1212

src/content/docs/docs/index.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ title: Introduction
33
description: Welcome to Semos — a family of terminal apps and tools.
44
---
55

6-
Semos Labs builds modern terminal applications and libraries. We believe the command line is not a limitation — it's a canvas.
6+
Semos Labs is where I build terminal applications and libraries. The command line is not a limitation — it's a canvas.
77

88
## The Ecosystem
99

10-
Our ecosystem includes a React-based terminal renderer, TUI apps built on it, and a standalone terminal environment:
10+
The ecosystem includes a React-based terminal renderer, TUI apps built on it, and a standalone terminal:
1111

1212
| Project | What it does |
1313
|---------|-------------|
1414
| **Glyph** | React renderer for terminal UIs |
1515
| **Aion** | Calendar TUI client (Google Calendar & CalDAV) |
1616
| **Epist** | Email TUI client (Gmail & IMAP/SMTP) |
17-
| **Attyx** | Deterministic terminal environment (alpha) |
17+
| **Attyx** | GPU-accelerated terminal environment (alpha) |
1818

1919
## Philosophy
2020

21-
- **Terminal-first.** We live in the terminal. Our tools are built for developers who think in keystrokes, not clicks.
21+
- **Terminal-first.** I live in the terminal. These tools are built for people who think in keystrokes, not clicks.
2222
- **React-powered.** Declarative components meet terminal rendering. Build TUIs the same way you build web apps.
2323
- **One ecosystem.** Glyph powers everything. Aion, Epist, and your next app — all share the same foundation.
2424

@@ -29,4 +29,4 @@ Pick a product to dive in:
2929
- [Glyph](/docs/glyph/) — if you want to build your own TUI apps
3030
- [Aion](/docs/aion/) — if you want your calendar in the terminal (Google Calendar & CalDAV)
3131
- [Epist](/docs/epist/) — if you want email in the terminal (Gmail & IMAP/SMTP)
32-
- [Attyx](/docs/attyx/)a deterministic terminal environment (alpha)
32+
- [Attyx](/docs/attyx/)GPU-accelerated terminal with sessions, splits, and more (alpha)

src/pages/aion.astro

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const jsonLd = {
55
"@context": "https://schema.org",
66
"@type": "SoftwareApplication",
77
name: "Aion",
8-
description: "A terminal calendar client with Google Calendar and CalDAV support. Vim-style keybindings, visual timeline, recurring events, and natural language input.",
8+
description: "Terminal calendar client. Google Calendar and CalDAV, vim keybindings, visual timeline, recurring events, natural language input.",
99
url: "https://semos.sh/aion",
1010
downloadUrl: "https://github.com/semos-labs/aion/releases",
1111
operatingSystem: ["macOS", "Linux"],
@@ -24,7 +24,7 @@ const jsonLd = {
2424
};
2525
---
2626

27-
<Layout title="Aion — Terminal Calendar with Vim-Style Keybindings" description="A terminal calendar client with Google Calendar and CalDAV support. Beautiful, fast, keyboard-driven. Vim keybindings, visual timeline, and natural language event creation." image="/images/aion.webp" jsonLd={jsonLd}>
27+
<Layout title="Aion — Terminal Calendar with Vim-Style Keybindings" description="Terminal calendar client. Google Calendar and CalDAV with vim keybindings, visual timeline, and natural language event creation." image="/images/aion.webp" jsonLd={jsonLd}>
2828
<!-- Hero -->
2929
<section class="min-h-dvh flex flex-col md:flex-row items-center justify-center pt-20 md:pt-32 pb-6 md:pb-16 px-6 md:px-8 gap-2 md:gap-16 max-w-content mx-auto text-center md:text-left">
3030
<div class="flex-1 max-w-full md:max-w-[520px]">
@@ -37,7 +37,7 @@ const jsonLd = {
3737
<span class="text-gray-200 italic">in your terminal</span>
3838
</h1>
3939
<p class="text-body-lg text-gray-300 leading-copy mb-6 md:mb-10 max-w-full md:max-w-[460px]">
40-
A full-featured calendar client with vim-style keybindings. Google Calendar and CalDAVview, create, and manage events without leaving the command line.
40+
Google Calendar and CalDAV in your terminal. View, create, edit eventsall with vim keybindings. Syncs in the background, works offline.
4141
</p>
4242
<div class="flex gap-4 flex-wrap justify-center md:justify-start">
4343
<a href="/docs/aion/" class="btn-primary" data-ph-cta="aion_hero_docs">Documentation</a>
@@ -103,7 +103,7 @@ const jsonLd = {
103103
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
104104
<span class="block text-title-md mb-3">⌨️</span>
105105
<h3 class="font-hand text-title mb-2">Vim Keybindings</h3>
106-
<p class="text-small text-gray-400 leading-body">Navigate with j/k, gg/G, h/l — feels like home for terminal users.</p>
106+
<p class="text-small text-gray-400 leading-body">j/k, gg/G, h/l — the usual. If you use vim, you already know the drill.</p>
107107
</div>
108108
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
109109
<span class="block text-title-md mb-3">📅</span>
@@ -113,12 +113,12 @@ const jsonLd = {
113113
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
114114
<span class="block text-title-md mb-3">🔗</span>
115115
<h3 class="font-hand text-title mb-2">Calendar Sync</h3>
116-
<p class="text-small text-gray-400 leading-body">Google Calendar (OAuth) and CalDAV (iCloud, Fastmail, Nextcloud, and more). Background sync every 30 seconds.</p>
116+
<p class="text-small text-gray-400 leading-body">Google Calendar via OAuth, CalDAV for iCloud, Fastmail, Nextcloud, etc. Syncs every 30s in the background.</p>
117117
</div>
118118
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
119119
<span class="block text-title-md mb-3">👥</span>
120120
<h3 class="font-hand text-title mb-2">Meet With</h3>
121-
<p class="text-small text-gray-400 leading-body">Find free slots across multiple people's calendars instantly.</p>
121+
<p class="text-small text-gray-400 leading-body">Overlay multiple calendars and find free slots. No more back-and-forth.</p>
122122
</div>
123123
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
124124
<span class="block text-title-md mb-3">📹</span>

src/pages/attyx.astro

Lines changed: 36 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const jsonLd = {
55
"@context": "https://schema.org",
66
"@type": "SoftwareApplication",
77
name: "Attyx",
8-
description: "A deterministic, VT-compatible terminal environment written in Zig. GPU-accelerated rendering with Metal on macOS and OpenGL on Linux.",
8+
description: "GPU-accelerated terminal environment. Sessions, splits, tabs, popups, command palette, status bar — all built in. Written in Zig, under 5MB.",
99
url: "https://semos.sh/attyx",
1010
operatingSystem: ["macOS", "Linux"],
1111
applicationCategory: "DeveloperApplication",
@@ -23,7 +23,7 @@ const jsonLd = {
2323
};
2424
---
2525

26-
<Layout title="Attyx — Deterministic Terminal Environment" description="A VT-compatible terminal environment written in Zig. GPU-accelerated rendering with Metal and OpenGL. Deterministic engine, full color support, and TOML configuration." image="/images/attyx.webp" jsonLd={jsonLd}>
26+
<Layout title="Attyx — Fast, GPU-Accelerated Terminal" description="GPU-accelerated terminal environment. Sessions, splits, tabs, popups, command palette, status bar — the stuff you'd usually need tmux for, built in. Written in Zig, under 5MB." image="/images/attyx.webp" jsonLd={jsonLd}>
2727
<!-- Hero -->
2828
<section class="min-h-dvh flex flex-col md:flex-row items-center justify-center pt-20 md:pt-32 pb-6 md:pb-16 px-6 md:px-8 gap-2 md:gap-16 max-w-content mx-auto text-center md:text-left">
2929
<div class="flex-1 max-w-full md:max-w-[520px]">
@@ -37,7 +37,7 @@ const jsonLd = {
3737
<span class="text-gray-200 italic">more terminal</span>
3838
</h1>
3939
<p class="text-body-lg text-gray-300 leading-copy mb-6 md:mb-10 max-w-full md:max-w-[460px]">
40-
A deterministic, VT-compatible terminal environment written in Zig. GPU-accelerated rendering with Metal on macOS and OpenGL on Linux. Fast, correct, and configurable.
40+
Sessions, splits, tabs, popups, a status bar, command palette — the stuff you'd usually need tmux and a bunch of config for, just works out of the box. GPU-accelerated, written in Zig, under 5MB.
4141
</p>
4242
<div class="flex gap-4 flex-wrap justify-center md:justify-start">
4343
<a href="/docs/attyx/" class="btn-primary" data-ph-cta="attyx_hero_docs">Documentation</a>
@@ -98,7 +98,7 @@ const jsonLd = {
9898
<span class="w-3 h-3 rounded-full bg-[#28c840]"></span>
9999
<span class="ml-3 text-[0.7rem] text-gray-400 font-mono">attyx</span>
100100
</div>
101-
<img src="/images/attyx.webp" alt="Attyx — Terminal environment" class="w-full block" fetchpriority="high" />
101+
<img src="/images/attyx.webp" alt="Attyx — GPU-accelerated terminal environment" class="w-full block" fetchpriority="high" />
102102
</div>
103103
</div>
104104
</section>
@@ -108,75 +108,65 @@ const jsonLd = {
108108
<div class="max-w-content mx-auto">
109109
<h2 class="heading-section-lg text-center mb-14">Features</h2>
110110
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
111-
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
112-
<span class="block text-title-md mb-3">&#9881;&#65039;</span>
113-
<h3 class="font-hand text-title mb-2">Deterministic Engine</h3>
114-
<p class="text-small text-gray-400 leading-body">Predictable, reproducible terminal behavior. Every input produces the same output, every time.</p>
115-
</div>
116111
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
117112
<span class="block text-title-md mb-3">&#9889;</span>
118113
<h3 class="font-hand text-title mb-2">GPU Rendering</h3>
119-
<p class="text-small text-gray-400 leading-body">Hardware-accelerated rendering with Metal on macOS and OpenGL on Linux. Smooth and fast.</p>
114+
<p class="text-small text-gray-400 leading-body">Metal on macOS, OpenGL on Linux. Smooth scrolling, no tearing — stays fast even when you `cat` a huge file.</p>
115+
</div>
116+
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
117+
<span class="block text-title-md mb-3">&#128193;</span>
118+
<h3 class="font-hand text-title mb-2">Sessions</h3>
119+
<p class="text-small text-gray-400 leading-body">Persistent workspaces backed by a daemon. Close the window, open it later — everything's still there.</p>
120120
</div>
121121
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
122-
<span class="block text-title-md mb-3">&#128396;&#65039;</span>
123-
<h3 class="font-hand text-title mb-2">VT Compatible</h3>
124-
<p class="text-small text-gray-400 leading-body">Full VT sequence support. Works with every CLI tool, shell, and TUI application you already use.</p>
122+
<span class="block text-title-md mb-3">&#9638;</span>
123+
<h3 class="font-hand text-title mb-2">Splits & Tabs</h3>
124+
<p class="text-small text-gray-400 leading-body">Horizontal and vertical splits, tabs, and floating popups. All built in.</p>
125125
</div>
126126
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
127127
<span class="block text-title-md mb-3">&#127912;</span>
128-
<h3 class="font-hand text-title mb-2">Full Color</h3>
129-
<p class="text-small text-gray-400 leading-body">Complete SGR support — 16, 256, and 24-bit true color. Your terminal, in full color.</p>
128+
<h3 class="font-hand text-title mb-2">Themes & Config</h3>
129+
<p class="text-small text-gray-400 leading-body">22 built-in themes and TOML config with hot reload. Edit, save, done.</p>
130130
</div>
131131
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
132-
<span class="block text-title-md mb-3">&#128433;</span>
133-
<h3 class="font-hand text-title mb-2">Scrollback Buffer</h3>
134-
<p class="text-small text-gray-400 leading-body">Configurable scrollback with efficient memory usage. Scroll through your terminal history.</p>
132+
<span class="block text-title-md mb-3">&#128269;</span>
133+
<h3 class="font-hand text-title mb-2">Search</h3>
134+
<p class="text-small text-gray-400 leading-body">Search through output and scrollback. Regex, smart-case, incremental — finds stuff as you type.</p>
135135
</div>
136136
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
137-
<span class="block text-title-md mb-3">&#128433;</span>
138-
<h3 class="font-hand text-title mb-2">Mouse Support</h3>
139-
<p class="text-small text-gray-400 leading-body">X10 and SGR mouse encoding. Click, scroll, and select text with full mouse input support.</p>
137+
<span class="block text-title-md mb-3">&#128221;</span>
138+
<h3 class="font-hand text-title mb-2">Visual Mode</h3>
139+
<p class="text-small text-gray-400 leading-body">Select text with the keyboard, vim-style. Character, line, and block modes. Yank to clipboard.</p>
140140
</div>
141141
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
142-
<span class="block text-title-md mb-3">&#128269;</span>
143-
<h3 class="font-hand text-title mb-2">In-Terminal Search</h3>
144-
<p class="text-small text-gray-400 leading-body">Search through terminal output without leaving the terminal. Find what you need instantly.</p>
142+
<span class="block text-title-md mb-3">&#128187;</span>
143+
<h3 class="font-hand text-title mb-2">Command Palette</h3>
144+
<p class="text-small text-gray-400 leading-body">Cmd+Shift+P — searchable list of every action. Forgot a shortcut? Just look it up.</p>
145145
</div>
146146
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
147-
<span class="block text-title-md mb-3">&#9881;&#65039;</span>
148-
<h3 class="font-hand text-title mb-2">TOML Config</h3>
149-
<p class="text-small text-gray-400 leading-body">TOML and CLI configuration with hot reload. Change settings without restarting.</p>
147+
<span class="block text-title-md mb-3">&#128736;</span>
148+
<h3 class="font-hand text-title mb-2">Status Bar</h3>
149+
<p class="text-small text-gray-400 leading-body">Git branch, working directory, clock, or your own scripts. Shows what you need, stays out of the way.</p>
150150
</div>
151151
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
152-
<span class="block text-title-md mb-3">&#127760;</span>
153-
<h3 class="font-hand text-title mb-2">Cross-Platform</h3>
154-
<p class="text-small text-gray-400 leading-body">Native support for macOS and Linux. Same experience across platforms.</p>
152+
<span class="block text-title-md mb-3">&#128444;&#65039;</span>
153+
<h3 class="font-hand text-title mb-2">Inline Images</h3>
154+
<p class="text-small text-gray-400 leading-body">Kitty graphics protocol. Show images, plots, whatever — right in the terminal.</p>
155155
</div>
156156
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
157157
<span class="block text-title-md mb-3">&#128172;</span>
158158
<h3 class="font-hand text-title mb-2">Unicode & IME</h3>
159-
<p class="text-small text-gray-400 leading-body">Full Unicode support with proper wide-character handling. IME input for CJK and other languages.</p>
159+
<p class="text-small text-gray-400 leading-body">Wide characters, combining marks, CJK input methods. Handles the weird stuff correctly.</p>
160160
</div>
161161
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
162162
<span class="block text-title-md mb-3">&#128279;</span>
163-
<h3 class="font-hand text-title mb-2">Hyperlinks</h3>
164-
<p class="text-small text-gray-400 leading-body">OSC 8 hyperlink support. Clickable URLs right in your terminal output.</p>
165-
</div>
166-
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
167-
<span class="block text-title-md mb-3">&#128203;</span>
168-
<h3 class="font-hand text-title mb-2">Bracketed Paste</h3>
169-
<p class="text-small text-gray-400 leading-body">Bracketed paste mode for safe pasting. Your shell knows when you're pasting, not typing.</p>
163+
<h3 class="font-hand text-title mb-2">Clickable Links</h3>
164+
<p class="text-small text-gray-400 leading-body">URLs in terminal output are clickable. Click or use a shortcut to open them.</p>
170165
</div>
171166
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
172-
<span class="block text-title-md mb-3">&#128444;&#65039;</span>
173-
<h3 class="font-hand text-title mb-2">Kitty Graphics</h3>
174-
<p class="text-small text-gray-400 leading-body">Kitty graphics protocol support. Display images, plots, and rich visual content directly in the terminal.</p>
175-
</div>
176-
<div class="p-7 border border-gray-800 rounded-xl transition-colors hover:border-gray-600">
177-
<span class="block text-title-md mb-3">&#9000;&#65039;</span>
178-
<h3 class="font-hand text-title mb-2">Kitty Keyboard</h3>
179-
<p class="text-small text-gray-400 leading-body">Kitty keyboard protocol for unambiguous key reporting. Modifier keys, key release events, and full disambiguation.</p>
167+
<span class="block text-title-md mb-3">&#127760;</span>
168+
<h3 class="font-hand text-title mb-2">macOS & Linux</h3>
169+
<p class="text-small text-gray-400 leading-body">Native on both. Metal + Core Text on macOS, OpenGL + FreeType on Linux. Same app, different backends.</p>
180170
</div>
181171
</div>
182172
</div>

src/pages/attyx/privacy.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ What is **never** sent to AI providers:
3434
- Environment variables, credentials, passwords, or SSH keys
3535
- Data from terminal sessions where AI features are not actively used
3636

37-
AI features are optional. You can use Attyx as a standard terminal environment without enabling any AI functionality. When AI features are enabled, data is transmitted only when you explicitly invoke them.
37+
AI features are optional. You can use Attyx as a standard terminal without enabling any AI functionality. When AI features are enabled, data is transmitted only when you explicitly invoke them.
3838

3939
Third-party AI providers process data according to their own privacy policies:
4040

0 commit comments

Comments
 (0)