{"id":50901591,"url":"https://github.com/takoyaro/gitvoyager","last_synced_at":"2026-06-16T03:04:31.215Z","repository":{"id":349884581,"uuid":"1203483176","full_name":"takoyaro/gitvoyager","owner":"takoyaro","description":"Terminal-native GitHub discovery TUI — surface underdogs, track rising stars, and build taste profiles without leaving the terminal","archived":false,"fork":false,"pushed_at":"2026-04-08T01:58:41.000Z","size":146,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-08T02:15:46.285Z","etag":null,"topics":["bubbletea","claude-code","cli","developer-tools","github","github-search","go","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","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/takoyaro.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,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-07T04:40:20.000Z","updated_at":"2026-04-08T01:58:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/takoyaro/gitvoyager","commit_stats":null,"previous_names":["takoyaro/gitvoyager"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/takoyaro/gitvoyager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takoyaro%2Fgitvoyager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takoyaro%2Fgitvoyager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takoyaro%2Fgitvoyager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takoyaro%2Fgitvoyager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/takoyaro","download_url":"https://codeload.github.com/takoyaro/gitvoyager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/takoyaro%2Fgitvoyager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34388678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["bubbletea","claude-code","cli","developer-tools","github","github-search","go","terminal","tui"],"created_at":"2026-06-16T03:04:29.958Z","updated_at":"2026-06-16T03:04:31.203Z","avatar_url":"https://github.com/takoyaro.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# gitvoyager\n\n**Discover GitHub's hidden gems without leaving your terminal.**\n\nA keyboard-driven TUI that finds underdog repos, tracks rising stars,\nand learns what you like — powered by `gh` CLI and local SQLite.\n\n[Install](#install) · [Usage](#usage) · [Keys](#keys) · [Config](#config)\n\n\u003c/div\u003e\n\n---\n\n## Why\n\nGitHub search is noisy. Trending lists reward fame over signal.\nGitVoyager flips the model: multi-signal scoring surfaces repos that are\n*active, young, and under-appreciated* — the projects you'd find if you had\ninfinite time to browse.\n\n- **9 discovery presets + Hot Space** — Underdogs, Zero-Day Gems, Fresh Signal, Hidden Gems, Craft, Rising Stars, Agent-Ready, Contributor Magnets, Trending — plus a dynamic Hot Space preset fueled by live topic acceleration data\n- **Signal Board** — see which topics are accelerating right now, before you even search\n- **Quality grades** — A/B/C/D letter grades from intrinsic signals (README quality, CI, license, project structure) scored without cloning\n- **Watchlist with star velocity** — track repos over time, see who's growing\n- **AI-powered summaries** — optional Claude integration for README digests and trend analysis\n- **Taste profile \u0026 surprise picks** — learns your preferred languages and topics, serves personalized discoveries\n- **Zero browser required** — search, read READMEs, clone, compare — all in the terminal\n\n## Install\n\nRequires **Go 1.25+** and an authenticated **[`gh` CLI](https://cli.github.com)**.\nOptional: **[`claude` CLI](https://docs.anthropic.com/en/docs/claude-code)** for AI features (auto-detected on startup).\n\n```bash\ngit clone https://github.com/takoyaro/gitvoyager.git\ncd gitvoyager\nmake install\n```\n\nBinary lands in `$GOPATH/bin` — make sure that's on your `PATH`.\n\n## Usage\n\n```bash\ngitvoyager                    # interactive search prompt\ngitvoyager -q \"mcp server\"   # jump straight into results\ngitvoyager rust web framework # positional args work too\ngitvoyager data stats         # aggregate discovery stats (JSON)\ngitvoyager data repos --table # browse stored repos in a table\n```\n\nOn first launch you'll land on the discovery home screen. The Signal Board\nshows accelerating topics, and your Surprise Pick is waiting. Type a query or\npress \u003ckbd\u003e1\u003c/kbd\u003e–\u003ckbd\u003e9\u003c/kbd\u003e to fire a preset (\u003ckbd\u003e0\u003c/kbd\u003e for Hot Space).\nPress \u003ckbd\u003eS\u003c/kbd\u003e for a new surprise pick based on your taste profile.\n\n## Keys\n\n### Browsing\n\n| Key | Action | | Key | Action |\n|-----|--------|-|-----|--------|\n| \u003ckbd\u003ej\u003c/kbd\u003e / \u003ckbd\u003ek\u003c/kbd\u003e | Navigate | | \u003ckbd\u003eo\u003c/kbd\u003e | Open in browser |\n| \u003ckbd\u003eEnter\u003c/kbd\u003e / \u003ckbd\u003el\u003c/kbd\u003e | Select | | \u003ckbd\u003ec\u003c/kbd\u003e | Clone repo |\n| \u003ckbd\u003eh\u003c/kbd\u003e / \u003ckbd\u003eEsc\u003c/kbd\u003e | Back | | \u003ckbd\u003ew\u003c/kbd\u003e | Watch / unwatch |\n| \u003ckbd\u003eTab\u003c/kbd\u003e | Switch pane | | \u003ckbd\u003eW\u003c/kbd\u003e | Open watchlist |\n| \u003ckbd\u003eSpace\u003c/kbd\u003e | Peek overlay | | \u003ckbd\u003es\u003c/kbd\u003e | Cycle sort mode |\n| \u003ckbd\u003e/\u003c/kbd\u003e | Search | | \u003ckbd\u003ef\u003c/kbd\u003e | Filter results |\n| \u003ckbd\u003ea\u003c/kbd\u003e | Advanced search | | \u003ckbd\u003ex\u003c/kbd\u003e | Exclude repo |\n| \u003ckbd\u003ey\u003c/kbd\u003e / \u003ckbd\u003eY\u003c/kbd\u003e | Yank URL / clone cmd | | \u003ckbd\u003eC\u003c/kbd\u003e | Compare repos |\n| \u003ckbd\u003eX\u003c/kbd\u003e | Exclusion manager | | \u003ckbd\u003e\u0026larr;\u003c/kbd\u003e / \u003ckbd\u003e\u0026rarr;\u003c/kbd\u003e | Cycle language filter |\n| \u003ckbd\u003e?\u003c/kbd\u003e | Help | | \u003ckbd\u003eq\u003c/kbd\u003e | Quit |\n\n### AI (requires [`claude` CLI](https://docs.anthropic.com/en/docs/claude-code))\n\n| Key | Action |\n|-----|--------|\n| \u003ckbd\u003eA\u003c/kbd\u003e | Summarize README |\n| \u003ckbd\u003en\u003c/kbd\u003e | Natural language search |\n| \u003ckbd\u003et\u003c/kbd\u003e | \"Why is this trending?\" |\n\n## Scoring\n\nEvery result gets scored client-side across multiple dimensions:\n\n| Score | What it rewards |\n|-------|-----------------|\n| **Discovery** | Stars + forks + issues + recency, normalized by repo age — young active repos rank higher |\n| **Underdog** | Fork-to-star and issue-to-star ratio — finds repos with disproportionate community engagement |\n| **Freshness** | Quality signals (description, license, language) + push recency + youth — gates the Fresh Signal preset |\n| **Intrinsic** | README quality, CI presence, license, CONTRIBUTING guide, project structure — 0–10 score from GraphQL probes, no clone needed |\n| **Topic Heat** | Acceleration ratio of a repo's topics over time — boosts repos in fast-growing problem spaces |\n\n## Config\n\nOptional. Defaults are sane. Lives at `$XDG_CONFIG_HOME/gitvoyager/config.toml`.\n\n```toml\n[search]\ndefault_limit = 30\ndefault_sort  = \"stars\"\n\n[clone]\ndefault_directory = \"\"       # empty = cwd\nprotocol          = \"ssh\"    # or \"https\"\n\n[claude]\nenabled = true\nmodel   = \"haiku\"            # haiku | sonnet | opus\n\n[exclusions]\nkeywords = [\"awesome-list\"]  # hide repos matching name/description\ntopics   = [\"hacktoberfest\"] # -topic: qualifiers in GitHub search\nowners   = []                # -user: qualifiers in GitHub search\n\n[local]\nenabled    = false\nscan_paths = [\"~/Projects\"]  # detect deps → map to GitHub repos\n```\n\nSee [`internal/config/config.go`](internal/config/config.go) for all options.\n\n## Data\n\nAll data follows XDG conventions:\n\n| Path | Contents |\n|------|----------|\n| `$XDG_CONFIG_HOME/gitvoyager/` | `config.toml` |\n| `$XDG_DATA_HOME/gitvoyager/` | `gitvoyager.db` (SQLite, WAL mode) |\n\nNo telemetry. Network calls go through `gh` CLI and, when AI features are enabled, the `claude` CLI.\n\n## Building\n\n```bash\nmake build      # → bin/gitvoyager\nmake test       # go test ./... -v -race\nmake clean      # rm -rf bin/\n```\n\nOr with [Task](https://taskfile.dev): `task build`, `task test`, etc.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakoyaro%2Fgitvoyager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftakoyaro%2Fgitvoyager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftakoyaro%2Fgitvoyager/lists"}