ZYVOPMulti-Platform Sync
SeriesAI NewsWhy ZyVOPJoin Discord
LoginGet Started
ZYVOPMulti-Platform Sync

The Developer Publishing Hub. Write once, publish everywhere, and make your work citation-ready with built-in SEO, AEO, and GEO discovery support. Zero reader paywalls.

Content

  • Categories
  • Tags
  • Badges
  • Leaderboard
  • Write Article
  • Newsletter

Company

  • About Us
  • Why ZyVOP
  • Developer API & CLI
  • Write for Us
  • Contact

Connect

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • DMCA Policy
  • Code of Conduct

© 2026 ZyVOP. Developer Publishing Hub.

Zero paywalls · Full content ownership
All systems operational
HomeMeet octoscope — your GitHub profile, at a glance, in your terminal

Meet octoscope — your GitHub profile, at a glance, in your terminal

Giovambattista Fazioli
Giovambattista Fazioli
Senior Full-stack Engineer, Lead DeveloperSupport
September 4, 2026
5 min read
Meet octoscope — your GitHub profile, at a glance, in your terminal
#GitHub#git#terminal

The problem

If you work on GitHub every day, you probably know the dance. You're deep in a coding session, you want to glance at "how many PRs are open on my repos right now", or "did that follower count tick up after the release post", or "which of my repos did I last push to". So you tab over to the browser, wait for the page to load, click through to a sub-view, squint at the numbers, and tab back. Thirty seconds later you've lost your place in the code.

The data itself is trivial. It's the context switch that's expensive.

The solution

Octoscope

octoscope is a terminal dashboard for your GitHub account — profile, repos, pull requests, issues, contribution activity — pulled from the GitHub GraphQL API in a single round-trip and kept on screen, auto-refreshed every 60 seconds. You run it once in a background terminal tab and it's always there when you need it.

Single binary. Cross-platform (macOS, Linux, Windows). No runtime dependencies. No config file. If you have a shell, you can run octoscope.

octoscope

Enter fullscreen mode Exit fullscreen mode

That's it. If you have a GitHub token in your environment, it detects it and renders your own dashboard. If not, you can pass any public username as an argument:

octoscope torvalds

Enter fullscreen mode Exit fullscreen mode

What it shows

The UI is split into five tabs, navigable with number keys 1–5 or tab / shift+tab. The profile header stays pinned at the top; only the body swaps.

Overview — the landing page

The classic dashboard: profile info (name, login, pronouns, bio, company, location, website, years on GitHub), a Social section (followers, following, stars received), an Activity section (lifetime PRs authored and merged, issues opened, commits in the last 12 months, plus a languages bar coloured with the same hex GitHub uses on the site), an Operational section (public repos, forks received, open issues, open PRs), and a Network section (organisations you're in, verified social accounts).

Repos — every repository in one list

Repos

Every owned, non-fork repository as a sortable, searchable table. Columns: name, primary language, stars, forks, open issues, open PRs, last push. Press s to cycle sort by any column, / to filter by substring. The viewport scrolls, so even a 100-repo account stays navigable.

PRs — every pull request you've opened

Prs

Every open pull request you've authored, across every repo you've ever touched — not just your own. Number, title, repo, state (draft / ready-to-merge / conflicting) and last-update time. Same sort & search idioms as Repos.

Issues — every open issue you've opened

Issues

Same shape as PRs, minus the state column. Every open issue you've authored, wherever it lives. The whole backlog in one keystroke.

Activity — your year, shaded

Activity

A 52-week contribution heatmap rendered on an accent-pink gradient, with month labels above and a summary line below: total contributions, current streak, longest streak, busiest day with its date. The gradient adapts to your own distribution, so the busiest day always hits the full neon pink regardless of your absolute volume.

The details that matter

Rate-limit awareness, live in the footer

GitHub's GraphQL API has a 5,000-points-per-hour ceiling on authenticated calls. octoscope surfaces your remaining budget live in the footer:

Updated 12s ago  ·  rate 4872/5000  ·  reset 23m  ·  auto 60s

Enter fullscreen mode Exit fullscreen mode

The chip is muted at normal levels, warn-yellow under 20% remaining, and error-red under 5%. No surprises when you're close to the ceiling. If you do hit it, the auto-refresh backs off until the reset time instead of hammering every 60s and making it worse.

Fetch errors that tell you what to do

When a refresh fails, the footer says why in plain English:

  • rate-limited · retry at 14:23 — bucket exhausted, here's when it refills

  • token rejected · check $GITHUB_TOKEN — auth problem, actionable

  • offline · retrying — network blip

  • github errored · retrying — 5xx from GitHub, wait it out

You know whether to wait, fix auth, or check the network — instead of staring at an opaque error indicator.

Live change feedback

When a value changes between two refreshes — a new star, a new follower, a PR merging — the affected card's border flashes accent-pink for two seconds. No diffing numbers with your eyes.

And on top of that, changes to Stars and Followers trigger a native system notification and a short audio beep. You notice passive attention even when octoscope is in a background tab. macOS, Linux and Windows — no configuration needed.

Screenshot-safe by default when you want it

If you manage private repositories (work, internal projects, drafts) and you're about to share a screenshot of your dashboard, one flag scrubs the output:

octoscope --public-only

Enter fullscreen mode Exit fullscreen mode

Private repos, PRs and issues are filtered from the Repos / PRs / Issues tabs. Global counters (PRs Authored, Merged, Issues Authored) stay complete since they're aggregate numbers, not titles. What gets hidden are repo names and PR/issue titles — the parts that actually leak context.

Authentication that just works

octoscope resolves a GitHub token in this order:

  1. $GITHUB_TOKEN environment variable

  2. gh auth token — if the GitHub CLI is installed and logged in

  3. No token — unauthenticated fallback (60 req/h, public profiles only)

Viewing your own account needs a token. Viewing anyone else's public profile works either way.

Getting started

Homebrew (macOS & Linux)

brew install gfazioli/tap/octoscope

Enter fullscreen mode Exit fullscreen mode

From source (Go 1.25+)

go install github.com/gfazioli/octoscope@latest

Enter fullscreen mode Exit fullscreen mode

Pre-built binaries

Grab the right archive for your platform from the latest release and drop the octoscope binary anywhere on your $PATH.

Key bindings

Key

Action

1–5

Jump to tab (Overview, Repos, PRs, Issues, Activity)

tab / shift+tab

Cycle tabs forward / backward

↑ / ↓, j / k

Move cursor in list tabs

g / G

Jump to top / bottom

s

Cycle sort column

/

Filter by substring

r

Refresh now

q

Quit

What octoscope won't show

A note on honesty: some things you see on your GitHub profile page are not exposed by GitHub's public API, so octoscope doesn't show them either. Achievements (Pull Shark, Starstruck, YOLO and friends), highlight badges like PRO, and the local time next to your location field all require scraping the profile HTML. octoscope stays API-only, so those are absent by design.

Built with BubbleTea

octoscope is a terminal UI built with BubbleTea — the ELM-inspired TUI framework from Charm — and styled with Lipgloss. The network layer uses shurcooL/githubv4 against the GitHub GraphQL API, one round-trip per refresh.

The whole thing is open source under the MIT license.

Links

  • 🌐 Landing: https://gfazioli.github.io/octoscope/

  • 📦 GitHub: https://github.com/gfazioli/octoscope

  • 📋 Releases: https://github.com/gfazioli/octoscope/releases

  • 🐛 Issues & ideas: https://github.com/gfazioli/octoscope/issues

If you live in the terminal and you're on GitHub every day, give it a spin. Feedback, bug reports and feature asks are genuinely shaping the roadmap — every issue ticket has been read.

Comments (0)

Login to post a comment.

Giovambattista Fazioli
Giovambattista Fazioli

Senior Full-stack Engineer, Lead Developer

Italian Senior Full-stack Engineer and Lead Developer on the Cloud team at Namecheap. I build developer tools, React/Mantine UI components and native macOS apps — mostly open source. I work across TypeScript, Next.js, Go and SwiftUI, and I've been coding since the Commodore/Assembly days. Creator of WP Bones and 25+ Mantine extensions, and maintainer of the Undolog open-source studio.

Support
Subscribe to Giovambattista Fazioli's Newsletter

More from Giovambattista Fazioli

View profile

FinderGit 0.29.0 — open a commit like a folder

There’s a moment, reading a commit list, where you want to know one small thing: which files did that one touch?

3 minSep 4

Netfox 0.18.0 — is it my connection, or the internet?

There is a question that comes up every time something feels slow, and until now Netfox could not...

3 minSep 4

Mantine Book — Grab Any Edge, Turn Any Page

A realistic iBooks-style book for React built on Mantine: stack two-sided pages and turn them by...

5 minSep 4

Netfox — The macOS app that never loses track of your network

I built Netfox because every existing answer to "what's actually on my network?" annoyed me. The...

5 minSep 4

Audio That Sees Itself

A Mantine-native audio player for React with waveform visualisation and a live spectrum analyser,...

5 minSep 4