Skip to content

Repository files navigation

Verde

Verde

Every coding agent. One tiling window.
Local · native · keyboard-first

Website · Docs · Releases · MIT

Verde tiling workspace — Codex GUI chat, Claude Code TUI, Amp, Grok Build, and shell in one window

Codex GUI + Claude Code TUI + Amp + Grok Build — tiled or scrolled with shell. Every agent local, no hosted relay.


Why Verde

Most AI coding tools pick a lane: a chat sidebar, a terminal CLI, or a hosted web app. Verde is the workstation for the agents you already run locally.

  • One window for every agent. Codex, Claude Code, OpenCode, Cursor, Pi, FX, and Grok Build as native chat or TUI panes; Amp as a terminal TUI.
  • A real tiling workspace. Split chat, terminal, and browser — or scroll them as a Niri-style strip when you open more panes. Layouts persist.
  • Local-first. Verde drives the provider CLIs already on your machine. No Verde-hosted inference, no prompt relay, no telemetry sink.
  • Keyboard-first. Command palette (Ctrl+Shift+P), pane focus, zoom, and workspace jumps — remappable in one config file.
  • Native, not Electron. Zig + SDL3 + Palette (our in-tree GUI framework), Ghostty VT for terminals, system webview for the browser pane.
Verde tmux + CLIs Hosted agent apps IDE extension
Multi-agent tiling ~ ~
Native GUI chat + TUI ~
Embedded browser + Design Mode ~
Local-only (no relay) ~
Scriptable live control ~

✓ full · ~ partial · – not really

Supported agents

Agent GUI chat Terminal TUI How Verde talks to it
Codex Local codex CLI + codex app-server
Claude Code Claude Agent SDK against your installed Claude Code
OpenCode Local opencode CLI + opencode serve
Cursor Cursor CLI ACP (agent acp)
Pi Local pi CLI in RPC mode (pi --mode rpc) + embedded TUI
FX Local fx CLI ACP (fx acp) + embedded TUI
Grok Build Local grok CLI ACP (grok agent stdio) + embedded TUI
Amp Local amp CLI in an embedded Ghostty pane

Verde does not host models or relay prompts. Install the provider CLIs you care about; Verde drives them on your machine.

→ Setup notes: Provider docs


Install

Linux / macOS

curl -fsSL https://verdeai.dev/install.sh | sh

Windows x64 (PowerShell)

irm https://verdeai.dev/install.ps1 | iex

Or grab a package from GitHub Releases:

Platform Artifact
Linux x86_64 verde-v*-linux-x86_64.tar.gz → extract, run ./install-local.sh
macOS .dmg or .zip → move Verde.app into Applications
Windows x64 verde-v*-windows-x86_64.zip → verify .sha256, run packaged install.ps1
Arch Linux verde-bin (yay -S verde-bin)

Windows installs per-user (no admin), adds a Start Menu shortcut, and needs the WebView2 Evergreen Runtime. Linux browser support uses system WPE WebKit — the installer warns if packages are missing; set VERDE_INSTALL_BROWSER_DEPS=1 to install them.

Full install variants and platform notes: verdeai.dev/#install · Troubleshooting

macOS legacy database repair

If Verde bounces once in the Dock and does not open with a DatabaseSchemaTooOld startup error, quit Verde and run:

curl -fsSL https://raw.githubusercontent.com/JonathanRiche/verde/master/scripts/repair-legacy-database.sh | sh

The repair only updates legacy schema-version-0 databases. It creates a timestamped backup beside state.sqlite before using Verde's supported session-daemon migration path; already-migrated databases are left unchanged.


First five minutes

Verde does not ship a model. Install and authenticate at least one provider CLI first:

Provider Setup
Codex Codex CLIcodex login
Claude Code Claude Code + Node on PATH → log in
OpenCode OpenCode on PATH
Cursor Cursor CLIagent login (or CURSOR_API_KEY)
Pi pi on PATH · GUI chat + terminal TUI
FX fxfx login · GUI chat + terminal TUI
Grok Build Grok Buildgrok login · GUI chat + terminal TUI
Amp Amp on PATH · terminal TUI

Then:

verde
  1. Import a project — sidebar + or right-click the rail. Threads and agents run against that workspace root.
  2. New chat — click the workspace pencil, or enable prefix mode and press Ctrl+B, then c. Pick provider + model, set run permissions, send a prompt.
  3. Tile a browserCtrl+Shift+B (native webview: WPE / WKWebView / WebView2).
  4. New terminal tab — with prefix mode enabled, press Ctrl+B, then t. Shift+T still opens a standalone terminal pane beside the focused one. Open Codex/Claude/Grok TUIs from the palette or verde live agent open.
  5. Command paletteCtrl+Shift+P jumps to threads, panes, workspaces, and app commands.

If no GUI provider is ready, Verde shows a Connect an AI provider screen so you can finish setup without guessing.

→ Full walkthrough: Quickstart


Features

Same multi-agent layout under the Ristretto theme

Tiling workspace, not a chat box

Every pane is first-class. Split a chat beside a browser, drop a terminal next to it, zoom with Alt+Z, and rearrange with Ctrl+Shift+H/J/K/L. Layouts and per-terminal zoom persist across launches.

Scrolling pane layout (Niri-style)

With two or more tiled panes, Verde can switch to a horizontal or vertical strip — free-form wheel/touchpad panning, resizable columns, sidebar reorder, and hover-edge navigation. Settings → Workspace (or the command palette) chooses Automatic / Always / Disabled, per-workspace overrides, direction, and panes-per-view.

Command palette (Ctrl+Shift+P)

One Raycast-style launcher ranks threads, open panes, workspaces, and commands. Ctrl+Enter opens a result in a new pane. Slash commands like /stack and /process run from the composer.

Browser + Design Mode

Tile a native webview next to your agent. Point at an element or draw a region, describe the change, and route visual context into a chat or terminal TUI — without leaving the workspace.

Experimental companion + Mission Control

Opt-in under Settings → Experimental: a pane-less orchestration sidecar (Sprout, Moss, or Vireo) with durable threads, operation inspection, and Mission Control for multi-step goals. Still experimental — APIs and UI may change.

Project-scoped terminal dock

Ghostty-powered terminals under every workspace. Shell tabs, agent launch profiles, OSC titles, and zoom that stick with the layout.

Managed processes (verde.yml)

Declare dev servers and agents once; start/stop/restart from chat or CLI:

processes:
  web:
    command: "npm run dev"
    resources:
      - "port:3000"

agents:
  codex:
    provider: codex
    command: "codex"
    revive: attach_or_create
    hooks: true

Headless session daemon

Chat turns and terminal sessions live in a session daemon, not the window. The GUI, CLI, MCP bridge, and the experimental web client all attach as detached clients — agent turns keep running and land durably if the window closes, and the daemon drains and upgrades itself when a new Verde version starts. Drafts, image attachments, and transcripts persist across restarts.

Scriptable from your shell

Every running instance exposes local IPC (verde live). Inspect panes, open chats, send prompts, steer a running turn, write to terminals, open the browser — from hooks, dotfiles, or automation:

verde live status --json
verde live chat open --workspace $WS --provider codex --model gpt-5.6-sol --reasoning high
verde live chat send --pane $PANE --prompt "run the tests and fix failures"
verde live chat followup --pane $PANE --prompt "also update the changelog"  # steer the running turn
verde live terminal write --focused --text $'cargo test\r'
verde open http://localhost:3000

The same chat surface is exposed to agents over MCP (verde mcp): open panes, send prompts, read transcripts, and queue mid-turn follow-ups — daemon-direct, without stealing focus or touching your composer.

→ Full surface: CLI reference

Themes that match your rig

On Omarchy, Verde follows the active colors.toml automatically. Everywhere else, import portable themes from the site:

verde theme import https://verdeai.dev/themes/tokyo-night.json

Tokyo Night Catppuccin Gruvbox

Kanagawa Osaka Jade Matte Black

Same workspace, different skins — try them live on verdeai.dev (also Catppuccin Latte, Ristretto, Verde default).


Move around

Key Action
Ctrl+Shift+P Command palette
Ctrl+B, then c New chat tab (prefix mode)
Ctrl+B, then t New terminal tab (prefix mode)
Ctrl+B, then Shift+T New standalone terminal pane (prefix mode)
Ctrl+Shift+B Toggle browser pane
Ctrl+Arrow Focus panes; Ctrl+H/J/K/L remain available as optional verde.json bindings
Ctrl+Tab / Ctrl+Shift+Tab Next / previous pane in sidebar order
Ctrl+Shift+H/J/K/L Swap / rearrange panes
Alt+Z Zoom focused pane
Alt+1Alt+9 Jump workspaces

→ All defaults + remapping: Keybinds


Documentation

Topic Link
Quickstart docs/quickstart
Providers docs/providers
Chat, models & runs docs/chat
Panes & tiling docs/panes
Design Mode docs/design-mode
CLI (verde live, state, browser) docs/cli
Config, themes, verde.yml docs/config
Troubleshooting docs/troubleshooting

Agent-friendly crawl: llms.txt · llms-full.txt · any page as /docs/<slug>.md


Development

Source builds live in packages/desktop/. Use mise from the repo root (Zig 0.16.0 is pinned in mise.toml):

mise install
mise run setup
mise run dev-build # routine desktop development build
mise run dev      # build + run (native webview)
Task Command
Dependency check mise run setup
Dev run mise run dev
Desktop development build mise run dev-build
Full build/install mise run build
SDL_GPU Palette renderer mise run dev-sdl-gpu
Web client (Zig gateway + Solid SPA) mise run web-app / mise run web-app-run

Do not use bare zig build — the default Debug + WPE path is known to fail. Prefer mise run dev-build for desktop development or mise run dev to launch, or explicitly:

zig build dev-build --release=safe -Dbrowser-backend=native_webview

Platform notes (WebView2 SDK, WPE packages, macOS codesign, Windows MSVC): see Troubleshooting and comments in scripts/.

The UI stack is SDL3 (window/events/scale) + SDL_GPU + Palette — not web UI or ImGui. Desktop package overview: packages/desktop.


Under the hood

  • Zig 0.16 — native executable, no Electron shell
  • SDL3 + Palette — windowing, input, and in-tree Zig GUI framework
  • Headless session daemon — owns chat turns and PTYs; GUI, web gateway, CLI, and MCP are detached clients, so agent work survives window restarts
  • Ghostty / libghostty-vt — embedded terminal engine, pinned to upstream (no vendored fork)
  • Native webview — WPE WebKit · WKWebView · WebView2 (no bundled Chromium)
  • SQLite — local projects, threads, transcripts, drafts, and image attachments

The render loop is tuned for low idle cost: prompt acceptance is sub-millisecond even on long threads, daemon round-trips run off the render thread, and streaming large transcripts stays O(delta) per update.

Third-party notices and licenses for vendored components are listed under Third-party components below when redistributing.


Config cheat sheet

What Where
App state SDL pref path → state.sqlite
User config ~/.config/verde/verde.json (Unix) · %APPDATA%\Verde\verde.json (Windows) · override with VERDE_CONFIG
Project stack verde.yml / verde.yaml in the workspace root
Logs (Linux) ~/.local/share/verde/Native/logs/verde.stderr.log
Logs (any) verde state path --json then open logs/ under that directory

Example stack and full verde.json schema: Configuration & state


Third-party components

Main third-party pieces used by the desktop app:

  • @anthropic-ai/claude-agent-sdk — Claude Code provider integration
  • fff.nvim / fff-c / fff-search — file indexing/search (vendor/fff, MIT)
  • Ghostty / libghostty-vt — terminal emulation (MIT)
  • zsdl (zig-gamedev) — SDL3 bindings (MIT)
  • SDL3 — windowing, input, display, rendering
  • zqlite — SQLite access (MIT-style)
  • zig_dif / zig_markdown — chat markdown and code rendering
  • stb_image — image decoding (vendor/stb_image.h)
  • Font assets (Codicon, Nerd Fonts, Noto Sans, JetBrains Mono Nerd Font, Cal Sans) — see packages/desktop/src/assets/fonts

If you redistribute Verde, keep the relevant upstream notices with the distributed app and vendored source.


License

Verde is licensed under the MIT License.

About

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages