{"id":13674401,"url":"https://github.com/fazalmajid/temboz","last_synced_at":"2026-02-11T21:36:43.282Z","repository":{"id":4192318,"uuid":"5310951","full_name":"fazalmajid/temboz","owner":"fazalmajid","description":"The Temboz RSS/Atom feed reader","archived":false,"fork":false,"pushed_at":"2026-01-28T18:51:56.000Z","size":2318,"stargazers_count":84,"open_issues_count":61,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-02-07T06:47:21.756Z","etag":null,"topics":["atom-feed","feed-reader","filter-rule","python","rss-reader"],"latest_commit_sha":null,"homepage":"","language":"Python","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/fazalmajid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2012-08-06T06:51:09.000Z","updated_at":"2026-01-28T18:52:01.000Z","dependencies_parsed_at":"2024-01-07T14:10:03.016Z","dependency_job_id":"4c950f01-54ff-48d7-b5ab-159251be8cd4","html_url":"https://github.com/fazalmajid/temboz","commit_stats":{"total_commits":662,"total_committers":5,"mean_commits":132.4,"dds":"0.31117824773413894","last_synced_commit":"17640167ea010529e91cb5afe2950b05bac3717a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fazalmajid/temboz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fazalmajid%2Ftemboz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fazalmajid%2Ftemboz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fazalmajid%2Ftemboz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fazalmajid%2Ftemboz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fazalmajid","download_url":"https://codeload.github.com/fazalmajid/temboz/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fazalmajid%2Ftemboz/sbom","scorecard":{"id":394094,"data":{"date":"2025-08-11","repo":{"name":"github.com/fazalmajid/temboz","commit":"6e50540f37945b8a5e8f9cd2dfe07c64b0e20540"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.9,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":9,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql.yml:28","Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql.yml:29","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"SAST","score":10,"reason":"SAST tool detected: CodeQL","details":["Info: SAST configuration detected: CodeQL","Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/fazalmajid/temboz/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/fazalmajid/temboz/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/fazalmajid/temboz/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/fazalmajid/temboz/codeql.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating alpine to alpine@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1","Warn: pipCommand not pinned by hash: Dockerfile:4","Warn: pipCommand not pinned by hash: Dockerfile:5","Warn: pipCommand not pinned by hash: Dockerfile:6","Warn: pipCommand not pinned by hash: Dockerfile:7","Warn: pipCommand not pinned by hash: Dockerfile:8","Warn: pipCommand not pinned by hash: Dockerfile:9","Warn: pipCommand not pinned by hash: Dockerfile:10","Warn: pipCommand not pinned by hash: Dockerfile:11","Warn: pipCommand not pinned by hash: Dockerfile:12","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   0 out of   9 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}}]},"last_synced_at":"2025-08-18T18:32:25.931Z","repository_id":4192318,"created_at":"2025-08-18T18:32:25.931Z","updated_at":"2025-08-18T18:32:25.931Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29345682,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":["atom-feed","feed-reader","filter-rule","python","rss-reader"],"created_at":"2024-08-02T11:00:49.008Z","updated_at":"2026-02-11T21:36:43.264Z","avatar_url":"https://github.com/fazalmajid.png","language":"Python","readme":"# The Temboz feed reader\n\n## Introduction\n\nTemboz is a web-based RSS/Atom aggregator and feed reader that focuses on saving you time by letting you filter out articles you are not interested in.\n\nIt is inspired by FeedOnFeeds (web-based personal aggregator), Google News (two column layout) and TiVo (thumbs up and down).\n\n## Features\n\n* Two-column user interface for better readability and information density. Automatic reflow using CSS.\n* Information Hunter-gatherer user interface: items flagged with a \"Thumbs down\" disappear immediately off the screen (using Dynamic HTML), making room for new articles.\n* Extensive filtering capabilities:\n  * By keyword or phrase\n  * By tag\n  * using Python expressions\n* Ratings system for articles\n* Share articles you flagged as \"Thumbs Up\" via Facebook or as an Atom feed\n* Built-in web server.\n* Ad filtering\n* Multithreaded, download feeds in parallel.\n\n## History\n\nI have been using Temboz as my feed reader since 2004. I currently have over 500 feeds subscribed to, and my filtering rules get rid of around 1/3 of the incoming firehose of information.\n\n## Screen shots\n\n![Reader UI](https://temboz.com/view.png)\n\nThe home page is the article reading interface, using a two-column layout. Clicking on the \"Thumbs down\" icon makes the article disappear, bringing a new one in its place (if available). Clicking on the \"Thumbs up\" icon highlights it in yellow and flags it as interesting in the database.\n\n![Feed summary](https://temboz.com/feeds.png)\n\nThe feed summary page shows statistics on feeds, starting with feeds with unread articles, then by alphabetical order. Feeds can be sorted based on other metrics. You have the option of \"catching up\" with a feed (marking all the articles as read). Feeds with errors are highlighted in red (not shown). The default sort order is by feed signal-to-noise ratio.\n\n![Feed etails](https://temboz.com/feed.png)\n\nClicking on the \"details\" link for a feed brings up this page, which allows you to change title or feed URL, and shows the RSS or Atom fields accessible for filtering.\n\n![Filtering rules](https://temboz.com/filters.png)\n\nFeeds can be filtered by keyword, phrase, tag, author or using Python expressions. Filtering out junk pop culture makes for tremendous time savings.\n\n## Known bugs\n\nYou can check outstanding bug reports, change requests and more on the [GitHub issue tracker](https://github.com/fazalmajid/temboz/issues).\n\n## Installation\n\n* You will need Python 3.8+ installed on your machine, and a reasonably recent version of SQLite, ideally with the json1 and fts5 extensions enabled for optimum performance\n* If you do not have `pip`, install it by running `python -m ensurepip` (you may need to do this as root depending on how your Python installation is set up, or use a system package manager like `apt-get`).\n* If you do not have virtualenv installed, install it using `pip install virtualenv` (or use a package manager if required).\n* Create a directory and virtualenv to run Temboz, in this case `tembozdir`: `virtualenv tembozdir`\n* `cd tembozdir`\n  * If you are a bash/ksh user: `. bin/activate`\n  * If you are a tcsh/csh user: `source bin/activate.csh`\n* Install Temboz in the virtualenv: `pip install temboz`\n* When you run Temboz for the first time, it will prompt you for the network address/port it should listen on, and your login/password: `./bin/temboz`\n* Optionally, you can import an OPML subscription file if you have one: `./bin/temboz --import foo.opml`\n* If you imported subscriptions, you can trigger a manual refresh: `./bin/temboz --refresh`\n* You can now start the Temboz server: `./bin/temboz --server`\n\n## Keeping informed\n\nI would highly recommend you subscribe to Temboz' [RSS feed](https://blog.majid.info/categories/temboz/index.xml) to be notified of security releases and other major announcements. It's less than one post a year, I promise...\n\n## Credits\n\nTemboz is written in Python, and leverages Mark Pilgrim’s Ultra-liberal feed parser, SQLite, Flask.\n\n## Post scriptum\n\nThe name \"Temboz\" is a reference to Malima Temboz, \"The mountain that walks\", an elephant whose tormented spirit is the object of [Mike Resnick’s](http://mikeresnick.com/) excellent SF novel, [Ivory](http://www.penguinrandomhouse.com/books/231473/ivory-by-mike-resnick/9781591025467).\n","funding_links":[],"categories":["Software","Feed Readers"],"sub_categories":["Feed Readers","E-commerce"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffazalmajid%2Ftemboz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffazalmajid%2Ftemboz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffazalmajid%2Ftemboz/lists"}