{"slug": "show-hn-lazychat-a-lazygit-style-tui-for-running-claude-code-and-codex", "title": "Show HN: Lazychat – A lazygit-style TUI for running Claude Code and Codex", "summary": "Perpeer released Lazychat, a lazygit-style terminal UI that runs Claude Code and Codex coding-agent sessions side by side on macOS 12 or newer, installable via `brew install perpeer/tap/lazychat` or a source `./install.sh` script. Lazychat shows per-session status, prompt duration, token counts and API cost, and draws each prompt's tool-call flow like `git log --graph` alongside a context view modeled on Claude Code's `/context`. The tool is distributed through Perpeer's own Homebrew tap until it reaches 225 GitHub stars, at which point it moves into Homebrew's main list as `brew install lazychat`.", "body_md": "**One terminal for all your AI coding agents.**\n\n  Run Claude Code and Codex sessions side by side, see at a glance which one needs you,\n\n  and keep Git and a shell for every project one key away.\n\n[Website](https://perpeer.github.io/lazychat/) ·\n  [Install](#install) ·\n  [Quick start](#quick-start) ·\n  [Features](#features) ·\n  [Sponsor Lazy ♥](#sponsor-lazy) ·\n  [Contributing](#contributing)\n\nYou need a Mac (Apple silicon or Intel, macOS 12 or newer) and an AI coding\nagent you are logged in to: [Claude Code](https://code.claude.com/docs) or\n[Codex](https://github.com/openai/codex).\n\n```\nbrew install perpeer/tap/lazychat\n```\n\nHomebrew builds lazychat on your Mac, along with Lazy's menu bar app, so\nmacOS opens both without a warning. Then run `lazychat`; `lazychat doctor`\nsays what else is ready. Lazy starts with lazychat; `brew services start lazychat` keeps it in the menu bar from every login. `brew upgrade lazychat` takes a new release; lazychat tells you in green, beside its\nversion, when one is out.\n\nlazychat comes from our own tap for now. Homebrew's own list takes it at\n225 stars, and then it is just `brew install lazychat`. If it saves you a\nfew tabs, [star it](https://github.com/perpeer/lazychat/stargazers): every\nstar helps lazychat reach more people.\n\n```\ngit clone https://github.com/perpeer/lazychat\ncd lazychat\n./install.sh\n```\n\nThe script checks your Mac first and tells you what is missing and how to\nget it; `./install.sh --check` does only that. It installs Go with Homebrew\nif you don't have it (an older Go fetches the one lazychat needs by\nitself), builds `~/.local/bin/lazychat` and adds Lazy's menu bar app to\nApplications.\n\nTo remove lazychat, run `brew uninstall lazychat`, or `./uninstall.sh` for\na source install. Your settings and workspaces stay (`./uninstall.sh --purge` takes them too); your projects and the agents' own files are\nnever touched.\n\n1. Run `lazychat` and name a workspace, the set of projects you work on.\n2. Press `o` and pick a project folder.\n3. Press `n` to start Claude Code or Codex in it,`Enter` to type to it,\nand`ctrl+q` to come back.\n4. `Tab` moves between the tabs, and`?` lists every key where you are.\n\n`lazychat doctor` tells you which agents are ready, and why not.\n\nEvery session sits under its project with its terminal next to it. You can\nsee which one works, which one waits for you and how long the last prompt\ntook. `n` starts one, `r` resumes an old one, and `w` lets you draft the\nnext prompt while the agent is still busy. `i`, or\na click on Lazy while several wait, opens the inbox: the sessions asking\nyou something or finished, Enter opens one. Press `3` for the details. At\nthe top is the prompt's flow, drawn like `git log --graph`: each tool it\ncalled in order with the file it touched or the command it ran, a\nsubagent as a branch that forks off and joins back when it returns, a\nquestion to you, and what each step added to the context. Beside it is the session's context, drawn like Claude\nCode's `/context`: how full the window is, what fills it, which tool's\nresults took the most, and how many more prompts fit at this pace. At the\nbottom are your last ten prompts as a table with their state, duration,\ntokens and API cost. Lazy says hello when lazychat opens, and plays a\nsound when a session starts on a prompt, asks you something, finishes or\nfails; you can turn the sounds off in Settings.\n\n```\n┌ [1] projects ──────────┐┌ [2] session │ [3] details ───────────┐\n│ garden-shed            ││ ❯ paint the shed blue                │\n│ main                   ││                                      │\n│   │                    ││ ● Starting with the north wall.      │\n│   ├─ ● ivy             ││   Reading paint.go…                  │\n│   │    claude · 42s    ││                                      │\n│   │                    ││ > ▌                                  │\n│   └─ ○ oak             ││                                      │\n│        codex · 3m 18s  ││                                      │\n└────────────────────────┘└──────────────────────────────────────┘\nsession: (enter) continue · (n) new · (r) resume · (w) draft · (?) help\n```\n\nChanges as a folder tree, a diff you can walk line by line with the code\nin its language's colours — `v` selects lines, `space` stages just\nthose — your last commits and the repository's worktrees. `Suggest` asks the agent for a\ncommit message written from what you staged.\n\n```\n┌ [1] projects ──┐┌ [2] Unstaged · 1 ────┐┌ [5] diff ──────────────────┐\n│ garden-shed    ││ M paint.go           ││ @@ -3,2 +3,2 @@            │\n│ main ↑1        │└──────────────────────┘│ - color := \"red\"           │\n│                │┌ [3] Staged · 1 ──────┐│ + color := \"blue\"          │\n│ blue-door      ││ + door.go            ││                            │\n│ worktree       │└──────────────────────┘└────────────────────────────┘\n│                │┌ [4] commits ─────────┐┌ [6] commit ────────────────┐\n│                ││ ↑ a1b2c3d first coat ││ Paint the door blue        │\n│                ││   9f8e7d6 sand it    ││────────────────────────────│\n│                ││                      ││      [ Suggest ] [ Commit ]│\n│                ││                      ││                            │\n└────────────────┘└──────────────────────┘└────────────────────────────┘\nbranch: (c) commit · (p) pull · (shift+p) push · (b) branches · (w) worktrees\n```\n\nPlain shells in your projects' folders, for the things the agents don't do.\n\n```\n┌ [1] projects ──────┐┌ [2] sh 1 ──────────────────────────────┐\n│ garden-shed        ││ $ go test ./...                        │\n│ main               ││ ok   shed/paint   0.4s                 │\n│   │                ││ $ ▌                                    │\n│  ├─ ● sh 1         ││                                        │\n│  │                 ││                                        │\n│  └─ ○ server       ││                                        │\n└────────────────────┘└────────────────────────────────────────┘\nterminal: (enter) continue · (n) new · (e) rename · (v) copy · (d) close\n```\n\nSettings holds the theme, which tabs show and which agent writes your\ncommit messages. Every key and screen is in the\n[reference](https://github.com/Perpeer/lazychat/blob/main/docs/REFERENCE.md).\n\nLazy watches your agents all day and has never asked for anything. lazychat is free and stays free; if it saves you time, keep Lazy going:\n\n  ☕ **$3** a coffee · 🍩 **$10** a snack · 🛋️ **$50** a comfy cushion · 🚀 **$100+** super sponsor\n\nlazychat follows [lazygit](https://github.com/jesseduffield/lazygit) and\n[lazydocker](https://github.com/jesseduffield/lazydocker) by Jesse\nDuffield: terminal UIs where everything is one key away. lazychat does the\nsame for AI coding agents.\n\nAGPL-3.0, see `LICENSE`. lazychat is free to use, change and share; a\nchanged copy that is shipped, sold or run as a service has to stay open\nsource too, and keeps the credit in `NOTICE`.\n\nBug reports, ideas and pull requests are welcome: open an\n[issue](https://github.com/perpeer/lazychat/issues) and tell us which agent\nlazychat should support next. [CONTRIBUTING.md](https://github.com/Perpeer/lazychat/blob/main/CONTRIBUTING.md) explains\nhow the code fits together and how it is tested.", "url": "https://wpnews.pro/news/show-hn-lazychat-a-lazygit-style-tui-for-running-claude-code-and-codex", "canonical_source": "https://github.com/Perpeer/lazychat", "published_at": "2026-10-05 11:56:57+00:00", "updated_at": "2026-10-05 12:20:05.120386+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Lazychat", "Perpeer", "Claude Code", "Codex", "Homebrew", "GitHub", "macOS", "Go"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-lazychat-a-lazygit-style-tui-for-running-claude-code-and-codex", "markdown": "https://wpnews.pro/news/show-hn-lazychat-a-lazygit-style-tui-for-running-claude-code-and-codex.md", "text": "https://wpnews.pro/news/show-hn-lazychat-a-lazygit-style-tui-for-running-claude-code-and-codex.txt", "jsonld": "https://wpnews.pro/news/show-hn-lazychat-a-lazygit-style-tui-for-running-claude-code-and-codex.jsonld"}}