A sleek and elegant tui for browsing one of the best tech news sources.
curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh
hntui
Any modern terminal with truecolor, mouse support, and UTF-8 will work. I've tested it in Ghostty on MacOS. Linux/Windows is supported by OpenTUI but I haven't tried it (yet).
The prebuilt binaries have no dependencies. Installing through npm (or hacking on the code) needs Bun 1.2 or newer.
curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh
Installs a self-contained binary to ~/.local/bin. You can also grab a binary for your platform directly from the releases page. Binaries cover macOS (Apple Silicon) and Linux (x64, arm64) — on an Intel Mac, use the Bun install below.
bun add -g @ahmd-sh/hntui
Or run it once without installing:
bunx @ahmd-sh/hntui
hntui
Press q (or Ctrl-C) to quit.
hntui update
Checks the latest release and, for binary installs, replaces itself in place. Bun installs update with bun add -g @ahmd-sh/hntui instead (hntui update will tell you so). When a newer release exists, the status bar shows a quiet hint. hntui --version prints the installed version.
| Key | Action |
|---|---|
j / ↓, k / ↑ | Move cursor |
gg, G | Jump to first or last |
Ctrl-D, Ctrl-U, PgDown, PgUp | Scroll a half page |
c, Enter | Open the story and read its comments |
h / ←, l / → | Previous or next tab |
Tab, Shift-Tab | Cycle through tabs |
1 through 6 | Jump to a specific category |
S | Jump to the Saved list |
s | Save or unsave the highlighted post |
o | Open the story's URL in your browser |
r | Refresh the current feed |
t | Toggle theme |
q, Ctrl-C | Quit |
| Key | Action |
|---|---|
j / ↓, k / ↑ | Move the comment cursor |
gg, G | Jump to first or last comment |
Ctrl-D, Ctrl-U, PgDown, PgUp | Scroll a half page |
Space | Collapse or expand the current subtree |
Enter | Open the links popup for the current comment |
s | Save or unsave this story |
o | Open the story's URL |
Esc, Backspace, h / ← | Back to the list |
t | Toggle theme |
q | Quit |
| Key | Action |
|---|---|
j, k, ↑, ↓ | Move |
gg, G | First or last link |
o, Enter | Open the highlighted link |
Esc, Backspace | Close the popup |
| Key | Action |
|---|---|
j / ↓, k / ↑ | Move |
Enter | Activate |
Esc, Backspace | Close |
Most things you can do with the keyboard, you can do with a mouse too.
Y tile to refresh the current feed (or to exit a story back to its list).Because the app captures mouse events, your terminal's normal click-and-drag selection is intercepted. To select text the regular way:
Option while you drag, then Cmd-C.Shift while you drag, then Ctrl-Shift-C.Press t to toggle. The dark theme is mostly black with orange accents. The light theme is faithful to news.ycombinator.com: white background, orange topbar, the familiar beige row highlight, and HN's classic grey byline text.
Press s on any story to save it. Saved posts get a small star next to the title and show up in the Saved tab on the right side of the tab strip. The list persists across sessions in ~/.config/hntui/saved.json as a small JSON file. (Config from the app's hackernuis days is migrated automatically on first run.) Press s again to remove a post from the list.
S jumps straight to the Saved list from anywhere.
git clone https://github.com/ahmd-sh/hntui.git
cd hntui
bun install
bun dev # hot reload
Data comes from the public Hacker News Firebase API.
Pushing a v* tag triggers two workflows:
.github/workflows/release.yml cross-compiles standalone binaries (bun build --compile) for macOS and Linux (arm64 and x64), smoke-tests the Linux build against the live API, and attaches the tarballs to a GitHub release. This is what install.sh downloads..github/workflows/publish.yml publishes @ahmd-sh/hntui to npm via OIDC trusted publishing, with a SLSA provenance attestation linking the tarball back to the exact commit and workflow run that produced it. It skips gracefully if the version is already on npm.To release a new version:
npm version patch # or minor / major
git push --follow-tags
examples/knight-rider/utils.ts (MIT).MIT, Copyright (c) 2026 Ahmed Shaikh.
36 commits
TypeScript
98.7%
Shell
1.3%
A sleek and elegant tui for browsing one of the best tech news sources.
curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh
hntui
Any modern terminal with truecolor, mouse support, and UTF-8 will work. I've tested it in Ghostty on MacOS. Linux/Windows is supported by OpenTUI but I haven't tried it (yet).
The prebuilt binaries have no dependencies. Installing through npm (or hacking on the code) needs Bun 1.2 or newer.
curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh
Installs a self-contained binary to ~/.local/bin. You can also grab a binary for your platform directly from the releases page. Binaries cover macOS (Apple Silicon) and Linux (x64, arm64) — on an Intel Mac, use the Bun install below.
bun add -g @ahmd-sh/hntui
Or run it once without installing:
bunx @ahmd-sh/hntui
hntui
Press q (or Ctrl-C) to quit.
hntui update
Checks the latest release and, for binary installs, replaces itself in place. Bun installs update with bun add -g @ahmd-sh/hntui instead (hntui update will tell you so). When a newer release exists, the status bar shows a quiet hint. hntui --version prints the installed version.
| Key | Action |
|---|---|
j / ↓, k / ↑ | Move cursor |
gg, G | Jump to first or last |
Ctrl-D, Ctrl-U, PgDown, PgUp | Scroll a half page |
c, Enter | Open the story and read its comments |
h / ←, l / → | Previous or next tab |
Tab, Shift-Tab | Cycle through tabs |
1 through 6 | Jump to a specific category |
S | Jump to the Saved list |
s | Save or unsave the highlighted post |
o | Open the story's URL in your browser |
r | Refresh the current feed |
t | Toggle theme |
q, Ctrl-C | Quit |
| Key | Action |
|---|---|
j / ↓, k / ↑ | Move the comment cursor |
gg, G | Jump to first or last comment |
Ctrl-D, Ctrl-U, PgDown, PgUp | Scroll a half page |
Space | Collapse or expand the current subtree |
Enter | Open the links popup for the current comment |
s | Save or unsave this story |
o | Open the story's URL |
Esc, Backspace, h / ← | Back to the list |
t | Toggle theme |
q | Quit |
| Key | Action |
|---|---|
j, k, ↑, ↓ | Move |
gg, G | First or last link |
o, Enter | Open the highlighted link |
Esc, Backspace | Close the popup |
| Key | Action |
|---|---|
j / ↓, k / ↑ | Move |
Enter | Activate |
Esc, Backspace | Close |
Most things you can do with the keyboard, you can do with a mouse too.
Y tile to refresh the current feed (or to exit a story back to its list).Because the app captures mouse events, your terminal's normal click-and-drag selection is intercepted. To select text the regular way:
Option while you drag, then Cmd-C.Shift while you drag, then Ctrl-Shift-C.Press t to toggle. The dark theme is mostly black with orange accents. The light theme is faithful to news.ycombinator.com: white background, orange topbar, the familiar beige row highlight, and HN's classic grey byline text.
Press s on any story to save it. Saved posts get a small star next to the title and show up in the Saved tab on the right side of the tab strip. The list persists across sessions in ~/.config/hntui/saved.json as a small JSON file. (Config from the app's hackernuis days is migrated automatically on first run.) Press s again to remove a post from the list.
S jumps straight to the Saved list from anywhere.
git clone https://github.com/ahmd-sh/hntui.git
cd hntui
bun install
bun dev # hot reload
Data comes from the public Hacker News Firebase API.
Pushing a v* tag triggers two workflows:
.github/workflows/release.yml cross-compiles standalone binaries (bun build --compile) for macOS and Linux (arm64 and x64), smoke-tests the Linux build against the live API, and attaches the tarballs to a GitHub release. This is what install.sh downloads..github/workflows/publish.yml publishes @ahmd-sh/hntui to npm via OIDC trusted publishing, with a SLSA provenance attestation linking the tarball back to the exact commit and workflow run that produced it. It skips gracefully if the version is already on npm.To release a new version:
npm version patch # or minor / major
git push --follow-tags
examples/knight-rider/utils.ts (MIT).MIT, Copyright (c) 2026 Ahmed Shaikh.
36 commits
TypeScript
98.7%
Shell
1.3%