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.
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 claudeAn 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 | iexThen 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
⇧⌘Etoggle 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/docsSigned-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
BirdNest Tech Talk
Author of the rpcx microservice framework, original book author, and chair of Baidu's Go CMC committee.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
