{"id":29376394,"url":"https://github.com/crocidb/bulletty","last_synced_at":"2026-01-17T19:20:07.958Z","repository":{"id":302472459,"uuid":"992862231","full_name":"CrociDB/bulletty","owner":"CrociDB","description":"bulletty is a pretty feed reader for the terminal that stores the articles as Markdown","archived":false,"fork":false,"pushed_at":"2026-01-10T16:28:56.000Z","size":31907,"stargazers_count":307,"open_issues_count":13,"forks_count":17,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-11T05:03:59.258Z","etag":null,"topics":["feed","feed-aggregator","feed-reader","markdown","podcast","ratatui","rss","rss-aggregator","rss-reader","rust","tui"],"latest_commit_sha":null,"homepage":"http://bulletty.croci.dev/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CrociDB.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-29T20:41:13.000Z","updated_at":"2026-01-10T16:28:59.000Z","dependencies_parsed_at":"2025-12-16T22:04:13.718Z","dependency_job_id":null,"html_url":"https://github.com/CrociDB/bulletty","commit_stats":null,"previous_names":["crocidb/bulletty"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/CrociDB/bulletty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fbulletty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fbulletty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fbulletty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fbulletty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CrociDB","download_url":"https://codeload.github.com/CrociDB/bulletty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CrociDB%2Fbulletty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28516751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T18:55:29.170Z","status":"ssl_error","status_checked_at":"2026-01-17T18:55:03.375Z","response_time":85,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["feed","feed-aggregator","feed-reader","markdown","podcast","ratatui","rss","rss-aggregator","rss-reader","rust","tui"],"created_at":"2025-07-09T22:05:24.619Z","updated_at":"2026-01-17T19:20:07.921Z","avatar_url":"https://github.com/CrociDB.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/bulletty.png\" alt=\"bulletty\" /\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003ebulletty\u003c/h1\u003e\n\u003cp align=\"center\"\u003eThe TUI RSS/Atom feed reader that lets you decide where to store your data.\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/screenshot.gif\" alt=\"bulletty\" /\u003e\n\u003c/p\u003e\n\n**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. \n\nIt's in active development.\n\n## 🔨 Features\n\n - Subscribe to **RSS** and **Atom** feed types\n - All your feed sources and entries are stored in Markdown in one place: `$HOME/.local/share/bulletty/`\n - Automatically download new entries\n - Add articles to the **Read Later** category\n - Read articles with the embedded cozy Markdown reader\n - Import/export **OPML** feed list\n - Supports multiple beautiful colorful **themes**\n\n## 🚀 Install\n\n[Download bulletty pre-built binaries](https://github.com/CrociDB/bulletty/releases)\n\n### 🚚 Through Cargo\n\nIt requires **cargo 1.90+**:\n\n```shell\ncargo install bulletty\n```\n\n### ☂️ Pre-requisites\n\n**bulletty** runs in most platforms, however there are some pre-requisites to have it run the best way possible:\n\n- 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\n- Use a [NerdFont](http://nerdfonts.com/). They are patched versions of common coding fonts with several icons\n\n## 🚄 Usage\n\n### 🗞️ Adding new feed sources\n\nFor now, you can only add new feed sources via the CLI:\n\n```shell\nbulletty add https://crocidb.com/index.xml [Category]\n```\n\nIf 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`.\n\nMore on the CLI commands with:\n\n```shell\nbulletty help\n```\n\n### 🧩 TUI\n\nOn 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.\n\nIn 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`.\n\n## 💌 Don't know what to subscribe to?\n\n[HN Personal Websites](https://hnpwd.github.io/) is a good repository of blogs that constantly show up on [Hacker News](https://news.ycombinator.com/). Subscribing to all of them is simple:\n\n```shell\nwget https://hnpwd.github.io/pwd.opml\nbulletty import pwd.opml\n```\n\n## 🏫 Philosophy\n\nThe 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.\n\nAll your feed data will be at `$HOME/.local/share/bulletty/`, in this structure:\n\n```shell\n[~/.local/share/bulletty]$ tree\n.\n└── categories\n    ├── Programming\n    │   ├── bruno-croci\n    │   │   ├── .feed.toml\n    │   │   ├── about.md\n    │   │   ├── demystifying-the-shebang-kernel-adventures.md\n    │   │   ├── from-ides-to-the-terminal.md\n    │   │   ├── i-wrote-a-webserver-in-haskell.md\n    │   │   ├── ...\n    ├── General\n    │   ├── another-website\n    │   │   ├── .feed.toml\n    │   │   ├── some-post.md\n    │   │   ├── ...\n\n```\n\nAll that needs to be done is to synchronize the `bulletty` directory to save your data, similar to an Obsidian vault.\n\n## ✂️ Third Party Tools\n\nOne of the nice things about this open data structure is that people can build external tools that interact with the bulletty feed library.\n\n - [**convert_bulletty_to_pdf.py**](https://gist.github.com/thefranke/e7b80eca835275f355fd2f0dbe080e7b): a python script that exports bulletty's _Read Later_ articles into PDF, by @thefranke\n\n\n## 📜 Feature Roadmap\n\n - Highlight\n - Notes\n - Web view\n - Mouse support\n - Image support\n - PDF/Epub article export\n\n\n## 💻 Build\n\n```shell\ngit clone https://github.com/CrociDB/bulletty.git\ncd bulletty\ncargo build --release\n```\n\n### Notes on building on Windows\n\nbulletty 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](https://strawberryperl.com/) and make sure that `openssl` uses the one you just install to build:\n\n```powershell\n$env:OPENSSL_SRC_PERL = \"C:\\Strawberry\\perl\\bin\\perl.exe\"\n```\n\nThen `cargo build` should work normally.\n\n## 👩‍💻 Contributing to bulletty\n\nI 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**.\n\n## 📃 License\n\nCopyright (c) Bruno Croci\n\nThis project is licensed under the MIT license ([LICENSE] or \u003chttp://opensource.org/licenses/MIT\u003e)\n\n[LICENSE]: ./LICENSE\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrocidb%2Fbulletty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrocidb%2Fbulletty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrocidb%2Fbulletty/lists"}