Default Filters
What gets filtered
Section titled “What gets filtered”By default, stars applies several filters to keep the output useful. These run automatically unless you pass --no-defaults.
| Filter | Default | What it does |
|---|---|---|
| Archived repos | Excluded | Hides repos marked as archived on GitHub |
| Stale repos | Excluded if >365 days | Hides repos not pushed to in over a year |
| Language exclusions | PHP, C#, Java, Python, Ruby | Hides repos in these languages |
| Forks | Included | Forks are not excluded by default |
Bypassing filters
Section titled “Bypassing filters”To see everything in your database, unfiltered:
stars --no-defaultsThis shows all repos regardless of archive status, age, language, or fork status.
Customizing filters
Section titled “Customizing filters”Change excluded languages
Section titled “Change excluded languages”# See current exclusionsstars config get defaults.filters.exclude_languages# => [PHP, C#, Java, Python, Ruby]
# Remove all language exclusionsstars config set defaults.filters.exclude_languages []
# Only exclude PHPstars config set defaults.filters.exclude_languages [PHP]Show archived repos
Section titled “Show archived repos”stars config set defaults.filters.exclude_archived falseExclude forks
Section titled “Exclude forks”Forks are included by default. To exclude them:
stars config set defaults.filters.exclude_forks trueChange the staleness threshold
Section titled “Change the staleness threshold”The default is 365 days. To show repos not pushed in up to 2 years:
stars config set defaults.filters.min_pushed_days 730To effectively disable the staleness filter, set a very large number:
stars config set defaults.filters.min_pushed_days 99999How filters work internally
Section titled “How filters work internally”Filters are applied in mod.nu’s apply-default-filters function:
- Read filter settings from config (with hardcoded fallbacks)
- Calculate the cutoff date:
(date now) - (min_pushed_days * 1day) - For each repo, check:
archived— stored as integer (0/1) in SQLite, converted to boolfork— same integer-to-bool conversionlanguage— checked against the exclusion list (empty language always passes)pushed_at— parsed to datetime and compared against cutoff
- A repo must pass all active filters to appear in output
Pipeline-based filtering
Section titled “Pipeline-based filtering”For ad-hoc filtering beyond the defaults, use Nushell pipelines:
# Only Rust repos with 100+ starsstars --raw | where language == "Rust" | where stargazers_count > 100
# Repos pushed in the last 30 daysstars --raw | where { ($in.pushed_at | into datetime) > ((date now) - 30day) }
# Repos with specific topicsstars --raw | where { "machine-learning" in ($in.topics | from json) }