cd /news/ai-agents/i-built-giverny-a-native-terminal-fo… · home › topics › ai-agents › article
[ARTICLE · art-153704] src=github.com ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

I built Giverny – a native terminal for Cluade Code and Codex

Developer y0av released Giverny, a native GPU-rendered terminal written in Rust on alacritty_terminal that runs Claude Code and Codex sessions side by side across multiple accounts on Linux, macOS and Windows. Giverny assigns a separate Claude account per category via CLAUDE_CONFIG_DIR, shows each account's usage limits and reset times, and tracks per-tab agent state through Claude Code hooks with a zero-config fallback to Claude's session registry and Codex observer hooks installed from Settings. The tool never contacts Anthropic or OpenAI directly and never reads credential files, drawing Claude usage from the .claude.json cache and Codex usage from the local codex app-server helper, with its only network request being a daily update check that sends nothing but a User-Agent.

read3 min views3 publishedOct 20, 2026
I built Giverny – a native terminal for Cluade Code and Codex
Image: Michielbdejong (auto-discovered)

A native terminal for running Claude Code and Codex sessions side by side, across several accounts at once. Tabs sit in categories on a left rail and show what each agent is doing. Each category can run on its own Claude account, and the rail shows every account's limits with reset times.

Written in Rust on alacritty_terminal and rendered on the GPU, with no web engine. Runs on Linux, macOS and Windows.

  • Multiple accounts. EachCLAUDE_CONFIG_DIR and Codex home is an account, discovered automatically. Claude accounts can be assigned per category, so work and personal projects draw from different plans. The rail shows each account's limits with reset times.
  • Agent state per tab. A spinner while Claude or Codex works, a flag and desktop notification when it needs input, a ✓ when a background tab finishes. Claude uses Claude Code hooks, with a zero-config fallback to its session registry. Codex uses observer hooks installed from Settings → codex and trusted with/hooks (setup ).
  • Background agents. Forked andrun_in_background Claude sessions appear in the rail. Click one to attach a tab.
  • Persistent sessions. Tabs, categories, working directories and scrollback survive restarts. Claude and Codex conversations resume in the right directory and account. Monitors on therestore_apps list (btop, k9s, lazygit) restart; other commands are never re-run.
  • Right-to-left text. Hebrew and Arabic render in reading order. Cascadia Mono Hebrew is bundled.
  • Rail views. Group tabs by your own categories or by git repository.
  • Terminal support. Kitty keyboard protocol (Shift+Enter works in Claude without/terminal-setup ), kitty graphics, synchronized output, OSC 7 and 52, sanitized bracketed paste, SGR mouse, file drag-and-drop.
  • Plain config.~/.config/giverny/config.toml hot-reloads. TheCtrl+, settings screen writes back to it with comments preserved. Seeall options .
  • giverny doctor prints Claude and Codex accounts, hook status, usage freshness and live sessions.

Linux / macOS:

curl -fsSL https://github.com/y0av/giverny/releases/latest/download/install.sh | sh

Windows:

irm https://github.com/y0av/giverny/releases/latest/download/install.ps1 | iex

From source (Rust 1.90+):

git clone https://github.com/y0av/giverny && cd giverny
cargo install --path crates/app
giverny install-desktop

install-desktop adds the launcher entry and icons. On Linux it also sets OOMPolicy=continue on Giverny's systemd scope, so an out-of-memory kill in one tab doesn't close the rest. The install scripts run it for you.

Giverny checks GitHub daily for a new release and offers a one-click update; giverny update does the same from a shell. Disable the check with [update] check = false or GIVERNY_NO_UPDATE=1.

Giverny runs on Linux (Wayland and X11), macOS and Windows.

Giverny itself never contacts Anthropic or OpenAI and never reads credential files. Claude usage comes from the .claude.json cache Claude Code writes; session state comes from hooks and Claude's session registry. Codex usage comes from the official local codex app-server helper, which contacts OpenAI using Codex's own sign-in; it never runs if Codex is disabled in Settings. Giverny's only direct network request is the update check, which sends nothing but a User-Agent.

Hook installation shows what it adds, keeps your existing hooks and writes a .giverny-bak backup. Pasted text is stripped of escape bytes, and the in-band control channel is nonce-authenticated so terminal output can't fake agent states. Details in Claude Code integration and Codex integration.

Chord Action
Ctrl+Shift+T /Ctrl+Shift+W New tab / close tab
Ctrl+Shift+A Next tab where an agent needs you
Ctrl+Shift+P Tab palette
Ctrl+Shift+F Search scrollback
Ctrl+Shift+E Label paths and URLs on screen for quick open
Ctrl+Tab Recently used tabs
F2 Rename tab
Ctrl+, Settings
F1 Full key list

Architecture · Options · Claude Code integration · Codex integration · Changelog

MIT OR Apache-2.0, at your option.

The bundled Cascadia Mono fonts in crates/term/fonts are © Microsoft, licensed under the SIL Open Font License 1.1 (CascadiaMono-OFL.txt).

── more in #ai-agents 4 stories · sorted by recency
── more on @giverny 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-built-giverny-a-na…] indexed:0 read:3min 2026-10-20 · —