用 Cargo 安装需 cargo 1.90+;新增订阅源目前只能通过 CLI 的 bulletty add 命令;Windows 上构建需处理 openssl 依赖,可能需安装 Strawberry Perl 并设置 OPENSSL_SRC_PERL

bulletty
crocidbMIT活跃维护一款用 Rust 写的终端 RSS 阅读器,界面清爽,把订阅文章直接存成 Markdown 文件,方便本地管理和二次编辑。
bulletty is a pretty feed reader for the terminal that stores the articles as Markdown
pacman -S bulletty
brew install bulletty
cargo install bullettyREADME 未说明硬件要求;需使用 Kitty、Ghostty、Alacritty、WezTerm 等现代终端并安装 NerdFont 字体
终端里的 RSS/Atom 阅读器,把订阅文章存成本地 Markdown 文件,数据完全归你
一款用 Rust 写的终端 RSS 阅读器,界面清爽,把订阅文章直接存成 Markdown 文件,方便本地管理和二次编辑。
核心能力
- 订阅 RSS 与 Atom 两类源并自动下载新条目
- 所有源与文章以 Markdown 存于 ~/.local/share/bulletty/
- 内置终端 Markdown 阅读器,支持 Read Later 分类
- 支持 OPML 导入导出订阅列表
- 可配置打开前后执行的 hooks 用于同步或打开链接
容易踩的坑
- v0.3.0最新正式版2026-08-06 · 2026-08-06 23:55 UTC
🎉 bulletty v0.3.0 is finally out!
This is the most packed release ever! With parallel requests, updating the feeds is fast. A library with 50+ feeds can be updated in a matter of a couple seconds now. So many improvements to the general navigation in the TUI, especially from caching the Library, made the TUI feel as fluid as it can get. The interface also got an indication of unread articles per feed and a feed source status bar can give more context of your library. The reader now has support for code highlighting, as well as other improvements to markdown rendering. bulletty now supports user themes, defined in the library, opening possibilities for future procedural theming like matugen. Also, catpuccin was introduced in two flavors: Latte and Mocha. Although not yet a first-class citizen, but now mouse scroll work when running bulletty from
tmux. We introducedhooksto bulletty, just points in the app where the user can hook their own tools, something essential to automate a library backup, as I explained here. Many issues with requests, rendering and interaction were also fixed.This work couldn't be possible without the help of all our contributors. Thanks for making bulletty a better piece of software.
🆕 What's Changed
- refactor: html parsing by @jlledo in https://github.com/crocidb/bulletty/pull/145
- feat: add support for modern CLI base directories by @jlledo in https://github.com/crocidb/bulletty/pull/156
- feature: bulletty hooks! integrate bulletty better with your process! by @crocidb in https://github.com/crocidb/bulletty/pull/164
- feat: feed library caching by @crocidb in https://github.com/crocidb/bulletty/pull/175
- Add NetBSD by @0323pin in https://github.com/crocidb/bulletty/pull/186
- feat: Add
tui_auto_updateconfig file option to disable auto update on TUI launch by @gyozanoid in https://github.com/crocidb/bulletty/pull/187 - fix: Opening in browser should fork the process by @gyozanoid in https://github.com/crocidb/bulletty/pull/189
- feat: add an update keybind to the tui by @willshuttleworth in https://github.com/crocidb/bulletty/pull/185
- feat: Load user themes from file at runtime by @gyozanoid in https://github.com/crocidb/bulletty/pull/191
- feat: add Catppuccin Mocha and Latte to built-in themes by @gyozanoid in https://github.com/crocidb/bulletty/pull/197
- fix: sluggish list scrolling, possible crash when using mouse wheel by @gyozanoid in https://github.com/crocidb/bulletty/pull/195
- feat: highlighted code blocks! by @crocidb in https://github.com/crocidb/bulletty/pull/199
- feat: fetch feed updates in parallel by @willshuttleworth in https://github.com/crocidb/bulletty/pull/209
- feat: conditional feed updates by @willshuttleworth in https://github.com/crocidb/bulletty/pull/220
New Contributors
- @0323pin made their first contribution in https://github.com/crocidb/bulletty/pull/186
- @gyozanoid made their first contribution in https://github.com/crocidb/bulletty/pull/187
- @willshuttleworth made their first contribution in https://github.com/crocidb/bulletty/pull/185
Gallery
Install with Cargo
cargo install bullettyInstall prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/crocidb/bulletty/releases/download/v0.3.0/bulletty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Byp - v0.2.22026-02-28 · 2026-02-28 16:54 UTC
查看更新说明
🎉 bulletty v0.2.2 is released with new features and bug fixes. We have a new theme (by @NikolaM-Dev); a notification system that gives feedback on some operations (such as adding or removing article to the Read Later category); adding feeds from their home-pages, that means bulletty will find the feed within an HTML page (by @jlledo); the screens are now rendered even without any input from the user, so the update progress bar will nicely move (by @jlledo); better layout distribution in the statusbar; and a nice welcome dialog explaining how to add feeds to your library, when the library is empty.
Thanks @NikolaM-Dev and @jlledo for their contributions to bulletty v0.2.2. 🎊
🆕 What's Changed
- feat: GitHub Dark Dimmed theme by @NikolaM-Dev in https://github.com/CrociDB/bulletty/pull/140
- fix: main thread block by @jlledo in https://github.com/CrociDB/bulletty/pull/138
- docs: Theme reference by @NikolaM-Dev in https://github.com/CrociDB/bulletty/pull/141
- chore: Address clippy warning by @jlledo in https://github.com/CrociDB/bulletty/pull/144
- feat: parse html metadata for feed links by @jlledo in https://github.com/CrociDB/bulletty/pull/143
- fix: updater was breaking after the first fail by @CrociDB
- fix: OPML categories might use text or title attributes by @CrociDB
Crates Updated
- chore(deps): bump toml from 0.9.10+spec-1.1.0 to 0.9.11+spec-1.1.0 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/125
- chore(deps): bump chrono from 0.4.42 to 0.4.43 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/124
- chore(deps): bump url from 2.5.7 to 2.5.8 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/123
- chore(deps): bump clap from 4.5.53 to 4.5.54 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/122
- chore(deps): bump clap from 4.5.54 to 4.5.57 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/136
- chore(deps): bump regex from 1.12.2 to 1.12.3 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/133
- chore(deps): bump unicode-width from 0.2.0 to 0.2.2 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/134
- chore(deps): bump tempfile from 3.24.0 to 3.25.0 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/137
- chore(deps): bump reqwest from 0.12.24 to 0.13.2 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/135
New Contributors
- @NikolaM-Dev made their first contribution in https://github.com/CrociDB/bulletty/pull/140
- @jlledo made their first contribution in https://github.com/CrociDB/bulletty/pull/138
Full Changelog: https://github.com/CrociDB/bulletty/compare/v0.2.1...v0.2.2
Install
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/CrociDB/bulletty/releases/download/v0.2.2/bulletty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/CrociDB/bulletty/releases/download/v0.2.2/bulletty-installer.ps1 | iex"Download bulletty 0.2.2
File Platform Checksum bulletty-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum bulletty-x86_64-apple-darwin.tar.xz Intel macOS checksum [bulletty-x86_64-pc-windows-msvc.zip](https://gith - v0.2.12026-01-15 · 2026-01-15 14:35 UTC
查看更新说明
🎉 Happy New Year!
This is the first official release of bulletty in 2026! It's mostly bug fixes, but at least one important thing has been changed: the article's metadata are now separated by
+++rather than---. That's because the former is more commonly used to indicate the metadata is in TOML, not YAML, as the latter. The reader is still capable to read old files still separated with---, though, so nothing is gonna be broken.We fixed YouTube video links. If you subscribed to YouTube channels, you might have noticed that the URL is not what you expected it to be, what made it pretty much impossible to open the video on the browser. The fetching is fixed, but old feed entries with the wrong URLs will continue to be wrong. If you want that to be fixed, delete all the entries straight in the subscription path in your local library, once you start bulletty, it will automatically re-fetch those items with the correct URL.
Windows and Mac can now finally generate logs. The version for Windows was crashing displaying the directories (
bulletty dirs) due to the log directory we were using was invalid. Throughout the execution, however, it was just simply not logging. Now both platforms should generate their own logs.🆕 What's Changed
- feat: markdown toml metadata should be separated by +++ by @CrociDB in https://github.com/CrociDB/bulletty/pull/100
- fix: youtube channel url was not getting fetched correctly by @CrociDB in https://github.com/CrociDB/bulletty/pull/108
- readme: fix some typos by @tshepang in https://github.com/CrociDB/bulletty/pull/101
- Show theme picker in help by @mchernigin in https://github.com/CrociDB/bulletty/pull/102
- bug: podcast download link not available by @CrociDB in https://github.com/CrociDB/bulletty/pull/109
- fix: log being generated in Windows and Mac by @DeveloperPaul123 in https://github.com/CrociDB/bulletty/pull/114
Crates updated
- chore(deps): bump document-features from 0.2.11 to 0.2.12 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/93
- chore(deps): bump indoc from 2.0.6 to 2.0.7 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/92
- chore(deps): bump openssl from 0.10.74 to 0.10.75 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/91
- chore(deps): bump syntect from 5.2.0 to 5.3.0 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/90
- chore(deps): bump clap from 4.5.50 to 4.5.51 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/85
- chore(deps): bump open from 5.3.2 to 5.3.3 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/96
- chore(deps): bump clap from 4.5.51 to 4.5.52 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/95
- chore(deps): bump clap from 4.5.52 to 4.5.53 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/99
- chore(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/98
- chore(deps): bump tracing-appender from 0.2.3 to 0.2.4 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/103
- chore(deps): bump tracing-subscriber from 0.3.20 to 0.3.22 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/104
- chore(deps): bump tracing from 0.1.41 to 0.1.43 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/105
- chore(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/110
- chore(deps): bump actions/download-artifact from 6 to 7 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/111
- chore(deps): bump toml from 0.9.8 to 0.9.10+spec-1.1.0 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/115
- chore(deps): bump tracing from 0.1.43 to 0.1.44 by @dependabot[bot] in https://gith
- v0.2.02025-11-07 · 2025-11-07 13:52 UTC
查看更新说明
bulletty v0.2.0 released! 🎉
One of the biggest releases yet! New stuff:
- Read Later: you can now add articles to that category by pressing
Land access that at the end of the feed tree. - Customizable Feed Tree width: change the width of the feed tree by pressing
<or> - Customizable Reader Width: change the width of the reader also with
<and> - Many improvements to the reader: many issues with newlines; images representation; code blocks; etc.
- Themes: support for themes was added along with many beautiful ones. Press
tto select the theme that suits you best - New logo: now bulletty officially has a logo. It's a mix of the RSS logo with some
>>to indicate a prompt. Share you thoughts on it
Install
You can install that from the built binaries in this page, or with cargo (1.90+):
cargo install bullettyChangelog
- bumping rust/cargo to 1.90 by @CrociDB in https://github.com/CrociDB/bulletty/pull/67
- Bump regex from 1.11.3 to 1.12.2 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/72
- Bump reqwest from 0.12.23 to 0.12.24 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/71
- Bump roxmltree from 0.21.0 to 0.21.1 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/70
- Bump clap from 4.5.48 to 4.5.49 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/69
- Bump toml from 0.9.7 to 0.9.8 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/68
- Feature: Read Later by @alfaarghya in https://github.com/CrociDB/bulletty/pull/73
- refactor: some minor refactoring on read later by @CrociDB in https://github.com/CrociDB/bulletty/pull/76
- Bump clap from 4.5.49 to 4.5.50 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/74
- Bump openssl from 0.10.73 to 0.10.74 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/75
- fix: Content Line Breaks by @CrociDB in https://github.com/CrociDB/bulletty/pull/77
- feature: improved HTTP requests by @CrociDB in https://github.com/CrociDB/bulletty/pull/78
- feature: Theming! by @CrociDB in https://github.com/CrociDB/bulletty/pull/79
- chore(deps): bump actions/download-artifact from 5 to 6 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/80
- chore(deps): bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in https://github.com/CrociDB/bulletty/pull/81
- feat: themes for markdown reader by @CrociDB in https://github.com/CrociDB/bulletty/pull/88
Full Changelog: https://github.com/CrociDB/bulletty/compare/v0.1.9...v0.2.0
- Read Later: you can now add articles to that category by pressing
- v0.1.92025-10-11 · 2025-10-11 15:17 UTC
查看更新说明
What's Changed
- feature: add new 'dirs' command to display important directories by @alfaarghya in https://github.com/CrociDB/bulletty/pull/57
- chore: bumped dependencies
- feature: import/export feed subscriptions to opml by @CrociDB in https://github.com/CrociDB/bulletty/pull/64
- feature: delete feed subscription cli command by @tanmayc07 in https://github.com/CrociDB/bulletty/pull/61
- general improvements and bug fixes
Contributors
- @alfaarghya
- @tanmayc07
- @CrociDB
Full Changelog: https://github.com/CrociDB/bulletty/compare/v0.1.8...v0.1.9
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
bulletty is a TUI feed reader and aggregator (RSS and Atom). Read your subscriptions directly in your terminal. It downloads the entries for offline reading so all the data is local and yours: your subscriptions, highlights, comments, etc. All in a universal format: Markdown. Back up and sync your data directory your own way.
It's in active development.
🔨 Features
- Subscribe to RSS and Atom feed types
- All your feed sources and entries are stored in Markdown in one place:
$HOME/.local/share/bulletty/ - Automatically download new entries
- Add articles to the Read Later category
- Read articles with the embedded cozy Markdown reader
- Import/export OPML feed list
- Supports multiple beautiful colorful themes
- Hooks: you can set hooks to sync your feed library before bulletty opens and after it closes; or tell it how to open links
🚀 Install
Download bulletty pre-built binaries
🐧 Arch Linux (and derivatives like Manjaro, Parabola)
pacman -S bulletty
🍺 Homebrew (macOS / Linux)
brew install bulletty
❄️ Nix
nix profile install nixpkgs#bulletty
Or using the traditional command:
nix-env -iA nixpkgs.bulletty
🚩 NetBSD
pkgin install bulletty
📦 Snap
sudo snap install bulletty
🚚 Through Cargo
It requires cargo 1.90+:
cargo install bulletty
To install the latest version in the repository:
cargo install --git https://github.com/CrociDB/bulletty.git
☂️ Pre-requisites
bulletty runs in most platforms, however there are some pre-requisites to have it run the best way possible:
- Use a modern terminal emulator such as Kitty, Ghostty, Alacritty, WezTerm, Windows Terminal, etc. They provide modern features and true color support, and are usually very fast and hardware-rendered
- Use a NerdFont. They are patched versions of common coding fonts with several icons
🚄 Usage
🗞️ Adding new feed sources
For now, you can only add new feed sources via the CLI:
bulletty add https://crocidb.com/index.xml [Category]
If no category is passed, the feed source will be added to the General category. bulletty will synchronize all your sources when you open the TUI, by just invoking bulletty.
More on the CLI commands with:
bulletty help
🧩 TUI
On any screen, you can press question mark ? and it will show you the available commands for that screen. Also, on the bottom right, it shows the most important commands for that context.
In general, it supports j/k/up/down to select items, navigate and scroll, as well as g/G/Home/End to go to the beginning/end of a list or file and Enter and q/Esc to navigate into and out of Categories and Entries. In order to open an Entry externally, press o.
💌 Don't know what to subscribe to?
HN Personal Websites is a good repository of blogs that constantly show up on Hacker News. Subscribing to all of them is simple:
wget https://hnpwd.github.io/hnpwd.opml
bulletty import hnpwd.opml
🏫 Philosophy
The whole idea is to help bring back the decentralized internet. You subscribe to the sources you like the most and you get their content whenever it's available. When you get it, it's local, it's yours. bulletty will generate a Markdown file of each entry from each source. You can read through the embedded reader, directly in your terminal, or using any text editor.
All your feed data will be at $HOME/.local/share/bulletty/, in this structure:
[~/.local/share/bulletty]$ tree
.
└── categories
├── Programming
│ ├── bruno-croci
│ │ ├── .feed.toml
│ │ ├── about.md
│ │ ├── demystifying-the-shebang-kernel-adventures.md
│ │ ├── from-ides-to-the-terminal.md
│ │ ├── i-wrote-a-webserver-in-haskell.md
│ │ ├── ...
├── General
│ ├── another-website
│ │ ├── .feed.toml
│ │ ├── some-post.md
│ │ ├── ...
All that needs to be done is to synchronize the bulletty directory to save your data, similar to an Obsidian vault.
✂️ Third Party Tools
One of the nice things about this open data structure is that people can build external tools that interact with the bulletty feed library.
- convert_bulletty_to_pdf.py: a python script that exports bulletty's Read Later articles into PDF, by @thefranke
📜 Feature Roadmap
- Highlight
- Notes
- Web view
- Mouse support
- Image support
- PDF/Epub article export
💻 Build
git clone https://github.com/CrociDB/bulletty.git
cd bulletty
cargo build --release
Build with nix is also possible with:
nix run .#release
Notes on building on Windows
bulletty requires the openssl crate to build, but it's known to be a little complicated to build on Windows. If it fails on a regular build, it's probably because whatever perl version it's trying to use is not suitable to build it. In that case, try installing Strawberry Perl and make sure that openssl uses the one you just install to build:
$env:OPENSSL_SRC_PERL = "C:\Strawberry\perl\bin\perl.exe"
Then cargo build should work normally.
👩💻 Contributing to bulletty
I am very open to contributions to help make bulletty the best feed reader out there. For more information on how to contribute, refer to the CONTRIBUTING.md.
📃 License
Copyright (c) Bruno Croci
This project is licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT)