Kero: Native Terminal Built for AI Agent Orchestration

This article analyzes Kero, a Go-based cross-platform terminal that uses a persistent kerod daemon to manage AI agent sessions, detailing its agent-driven CLI, session state tracking, remote host support, and the author's fork adding UI enhancements like a frog sprite, transparency controls, session history, and directory browsing.

BirdNest Tech Talk
BirdNest Tech Talk
BirdNest Tech Talk
Kero: Native Terminal Built for AI Agent Orchestration

Overview

Kero is a cross-platform native terminal application written in Go, optimized for AI agents. Its official tagline is "A cross-platform native terminal app optimized for agents." The terminal component wraps libghostty, and the UI uses the MyGo native framework. The author (smallnest) maintains a fork at github.com/smallnest/kero with additional features not yet merged upstream.

Core Architecture: kerod Daemon

Kero decouples sessions from windows via a resident background daemon called kerod. Sessions run inside kerod, so closing the Kero window leaves sessions and their programs running. Reopening restores every pane with its scroll history intact. This design enables the "session outlives window" guarantee.

Session State Visibility

Each pane reports one of five states, surfaced in the sidebar:

working – agent is active; no action needed.

waiting – agent needs input or confirmation; press ⌘J to jump there.

idle – shell ready; dispatch work on demand.

error – something failed; inspect.

exited – program terminated; review results or end session.

The author's fork adds a frog sprite (Kero the frog) on the window's top edge that animates per state: jumps when attention is needed, watches while agent works, dozes when idle.

Project-Based Grouping & Remote Hosts

Sessions are grouped by project in the sidebar, avoiding tab-title hunting. Remote sessions on Linux servers, cloud VMs, Mac, Windows, or WSL connect via SSH or Tailscale and appear in the same sidebar. Closing the laptop does not stop remote sessions.

Agent-Driven CLI: The Key Differentiator

The kero command line lets AI agents create and control terminals themselves. Commands work for any program running inside Kero, including Claude Code. Examples:

kero status --json                 # current session state & directory<br/>kero report working --progress 40  # push progress to sidebar<br/>kero report done                   # mark completion<br/>kero ls                            # list all sessions & panes<br/>kero split <session> --down -- npm run dev  # create downward pane running dev server<br/>kero send <pane> "npm test" --enter        # send keystrokes + Enter<br/>kero prompt <pane> "run the tests"         # send + Enter + wait + return screen<br/>kero wait <pane> --exit                # wait for command exit, propagate exit code<br/>kero read <pane> -n 40                 # read last 40 lines of screen<br/>kero new -n review -- claude           # spawn new named session running claude

An agent can act as a foreman: split panes, start tests, wait for results, read output — all programmatically.

Installation & macOS Signing

Two distribution channels exist:

Official (egoist/kero) : Homebrew brew install --cask kero. Signed with Apple Developer ID, hardened runtime, notarized. Gatekeeper allows direct launch. Uninstall with brew uninstall --cask --zap kero (removes ~/.config/kero and ~/Library/Application Support/kero).

Fork (smallnest/kero) : Download from GitHub Releases. Ad-hoc signed, not notarized. First launch requires right-click → Open, or run xattr -d com.apple.quarantine /Applications/Kero.app.

Do not mix installations; they do not auto-update across channels.

Command-Line Tool & Remote Server Setup

Homebrew installs the kero CLI automatically. Manual installs use Kero › Install Command Line Tool… to link into PATH.

To run sessions on other machines, install the server component:

# Linux/macOS<br/>curl -fsSL https://github.com/smallnest/kero/releases/latest/download/install-server.sh | sh<br/># Windows PowerShell<br/>irm https://github.com/smallnest/kero/releases/latest/download/install-server.ps1 | iex

Then add the host in Settings › Hosts .

Fork Enhancements (smallnest/kero)

Frog Sprite

Animated status indicator on window top edge; click to open window; toggle in Settings › Appearance or via shortcut.

Transparency Controls

Adjustable opacity; option to disable blur (otherwise transparency effect is subtle).

Left Panel Improvements

Added project/session hierarchy with icons; fixed bug where collapsing a project still showed the active session.

Session History

Ended agent conversations (Claude Code, Codex, Pi, OpenCode) appear under Ended in sidebar. Click to resume in original folder. Archive to Archived . Retains last 50 per host, includes remote sessions with hostname. Merged from upstream PR #240.

Directory Browsing

Files view in side panel browses session folder; click file to open in file pane with syntax highlighting. Configurable click action: preview, open in file pane, or open in host editor.

Panel Shortcuts

⇧⌘E

toggle side panel (restore last view); ⌥⌘F jump to Files view. Windows/Linux: Ctrl+Shift+E, Ctrl+Alt+F.

Quit Behavior

New setting quit-ends-sessions = true: exiting Kero (close button, ⌘Q, menu) ends all local sessions and stops kerod; remote sessions continue.

Confirmation Dialog Fix

Cancel button now works; Enter key no longer triggers confirmation (prevents accidental capture by running program). Must click or press Esc.

Frog Color Consistency

Sprite colors match Kero app icon.

Why a Native Terminal?

The author compares Kero to alternatives (Rex, Herdr, Paseo) and highlights three deliberate choices:

Not an agent framework – runs Claude Code, Codex, Pi, OpenCode, shell directly; only handles "container" and "management".

Native rendering via libghostty – not web-based; scrolling, fonts, colors match Ghostty fidelity.

Resident daemon – session/window decoupling enables "close and reopen, everything persists".

Known rough edges: sidebar compresses when window narrows. Direction is clear: the terminal is the agent's workbench, not a box that traps the agent.

Getting Started Checklist

In a project directory, start a Claude Code session.

Switch to another session while it runs; observe sidebar state change.

Press ⌘J to jump back to the session needing input.

Close and reopen Kero; verify session persists.

Official site: https://kero.sh | Fork: https://github.com/smallnest/kero | Docs:

https://github.com/smallnest/kero/tree/dev/docs
Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

CLIcross-platformAI agentsGodeveloper toolsSession ManagementterminallibghosttyKerokerod
BirdNest Tech Talk
Written by

BirdNest Tech Talk

Author of the rpcx microservice framework, original book author, and chair of Baidu's Go CMC committee.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.