Browse, filter, star, unstar, and search GitHub repositories — all without leaving your terminal. Stela provides an interactive TUI with fuzzy selection, language filtering, and clipboard/browser integration, backed by a local cache for fast repeated queries.
- Interactive list — paginated fuzzy picker with multi-select; open in browser or copy URL directly
- Star & unstar — star any
owner/repoor GitHub URL; bulk-unstar from the interactive list - Search — query GitHub with full search syntax, filter by language, and star results interactively
- Caching — JSON cache with configurable TTL so repeated
listcalls are instant - Language breakdown — color-coded language stats using GitHub Linguist colors
- i18n — English and Japanese UI (
config set lang ja) - No token storage — authentication delegates to the
ghCLI; no credentials ever written to disk
- Node.js 20+
ghCLI installed and authenticated (gh auth login)
npm install -g @tukuyomil032/stela# Browse your starred repos interactively
stela list
# Filter by language
stela list --lang typescript
# Search GitHub and star results
stela search "awesome cli tools" --lang goBrowse your starred repositories in an interactive picker.
stela list [options]
Options:
--lang <language> Filter by programming language
--sort <field> Sort by: stars | updated (default: stars)
--refresh Bypass cache and fetch from GitHub API
--no-interactive Print as a plain table (useful for scripts)
From the interactive picker you can:
- Open a repository in your browser
- Copy the URL to clipboard
- Unstar one or more repositories
Star a repository by owner/repo slug or GitHub URL.
stela star cli/cli
stela star https://github.com/cli/cliRemove a star from a repository.
stela unstar cli/cli # prompts for confirmation
stela unstar cli/cli -y # skip confirmationSearch GitHub and interactively star results.
stela search [query] [options]
Options:
--lang <language> Filter results by language
--sort <field> Sort by: stars | forks | updated (default: stars)
--limit <n> Number of results (max 100, default 30)
--no-interactive Print table only; no starring via pipes
stela search "react state management" --lang typescript --limit 10
stela search --no-interactive "rust cli" | head -5Inspect or clear the local starred-repo cache.
stela cache status # show timestamp, TTL remaining, and repo count
stela cache clear # delete the cache fileView and edit persistent settings.
stela config show
stela config set <key> <value>| Key | Type | Default | Description |
|---|---|---|---|
cacheTTL |
number (minutes) | 30 |
How long the cache is considered fresh |
pageSize |
number | 30 |
Items shown per page in interactive mode |
defaultLanguageFilter |
string[] | [] |
Language pre-filter applied to list |
lang |
en | ja |
en |
UI language |
stela config set cacheTTL 60
stela config set lang ja
stela config set pageSize 50All commands that produce output support --no-interactive for use in scripts or pipes. In this mode no prompts are shown and no side effects (starring/unstarring) are performed.
stela list --no-interactive --lang rust | grep "tokio"--no-interactive Output as plain table
--no-color Disable colored output (also respects NO_COLOR env var)
--version Show version number
--help Show help
# Install dependencies
bun install
# Run in development mode
bun run dev
# Type-check
bun run typecheck
# Lint and format
bun run biome:fix
# Build
bun run buildNote
The gh CLI must be authenticated for development. Run gh auth login if you haven't already.
Stela uses the GitHub REST API via native fetch — no Octokit or other GitHub SDK. Authentication is handled dynamically by calling gh auth token at runtime, so no credentials are stored on disk. Starred repositories are cached at ~/.stela/cache/starred.json with a configurable TTL (default 30 minutes).
MIT