Turn your GitHub stars into a searchable local library. Starboard helps you rediscover a project when you remember what it does but have forgotten its name. It searches repository descriptions, full READMEs, and metadata in a browser interface, with everything stored on your own computer.
- Find projects by language, topic, dependencies, activity, and more.
- Search with plain text, fuzzy matching, patterns, or a visual filter builder.
- Read cached READMEs, bookmark projects for later, and hide results you no longer want to see. These choices stay local and do not change your GitHub stars.
- Explore your collection with read-only SQL and export results as JSON.
- Keep browsing offline after syncing. Cache README media too when you need it.
No repositories are cloned, and searches do not use a hosted search or language model service. Starboard is a local Python/Dash application backed by SQLite.
Install uv and just 1.31+, then open a terminal in this project's directory. macOS and Linux are supported; uv manages Python 3.15.
just setup # install locked dependencies and create your local .envEdit the new .env with your GitHub username and a personal access token that
can read the repositories you want to search:
GITHUB_USER=your-github-username
GITHUB_PAT_TOKEN=your_token_hereThen import your stars and start the app:
just sync
just web startOpen http://127.0.0.1:8050 and submit a search. The first sync downloads metadata and README content, so it can take a while for large collections. Later incremental syncs focus on newly starred repositories.
Setup preserves an existing .env; keep your token there and out of Git.
See installation and configuration for prerequisites, token
aliases, settings, and troubleshooting.
Run just to see all available commands.
| Command | What it does |
|---|---|
just setup |
Install dependencies and create .env if it is missing. |
just web start |
Start the app in the background. |
just web stop |
Stop the background server. |
just web status |
Check whether the server is running. |
just sync |
Import new stars and enrich their metadata. |
just sync --full |
Scan all stars, detect removals, and refresh changed or expired metadata. |
just sync --media |
Import new stars and cache README media across the collection. |
just enrich |
Fill pending or expired metadata for already cached repositories. |
just enrich --retry-only |
Retry metadata fields that previously failed. |
just enrich --pending-only |
Fetch missing or failed metadata without refreshing expired fields. |
just prime |
Precompute common searches using the local cache. |
just test |
Run the regression suite with mocked GitHub responses. |
just enrichment is an alias for just enrich. To update one repository, add
--repo owner/name to just sync or just enrich.
Sync runs only when you request it. Starting the app, refreshing the browser,
and searching do not sync GitHub data. README media can download on demand;
run just sync --media while connected to prepare it for offline reading.
Type a query and press Enter or click Search. Try these in the default Substring mode:
vector database
language=Python && stars>=1000
topic=database && !archived=true
for_later=true
Use + Add filter to build conditions without learning the query syntax. Click a repository to read its README and metadata. The bookmark icon saves it for later; the Exclude icon hides it from ordinary searches. Switch between light and dark themes with the sun/moon button.
Choose Fuzzy mode when you only remember an approximate name or phrase. SQL mode lets you ask questions about your collection, such as which languages appear most often. The search guide covers matching modes, filters, keyboard shortcuts, bookmarks, exclusions, and SQL examples.
- Installation and configuration
- Searching, filters, and SQL
- Sync, enrichment, and offline media
- Metadata fields and provenance
- Architecture and source layout
- Development, tests, and benchmarks
Project code is available under the MIT License. Bundled fonts, icons, and emoji images retain their third-party notices.
