{"id":50217960,"url":"https://github.com/gfazioli/octoscope","last_synced_at":"2026-05-26T10:02:32.584Z","repository":{"id":353038507,"uuid":"1217228073","full_name":"gfazioli/octoscope","owner":"gfazioli","description":"Terminal dashboard for GitHub — followers, stars, PRs and issues at a glance, auto-refreshed","archived":false,"fork":false,"pushed_at":"2026-05-15T09:09:19.000Z","size":3926,"stargazers_count":37,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T10:52:34.803Z","etag":null,"topics":["bubbletea","cli","dashboard","github","github-api","go","lipgloss","monitoring","stats","terminal","tui"],"latest_commit_sha":null,"homepage":"https://gfazioli.github.io/octoscope","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/gfazioli.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-21T17:12:51.000Z","updated_at":"2026-05-15T09:09:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/gfazioli/octoscope","commit_stats":null,"previous_names":["gfazioli/octoscope"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/gfazioli/octoscope","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfazioli%2Foctoscope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfazioli%2Foctoscope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfazioli%2Foctoscope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfazioli%2Foctoscope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gfazioli","download_url":"https://codeload.github.com/gfazioli/octoscope/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gfazioli%2Foctoscope/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33514912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T03:12:49.672Z","status":"ssl_error","status_checked_at":"2026-05-26T03:12:47.976Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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","cli","dashboard","github","github-api","go","lipgloss","monitoring","stats","terminal","tui"],"created_at":"2026-05-26T10:02:21.882Z","updated_at":"2026-05-26T10:02:32.577Z","avatar_url":"https://github.com/gfazioli.png","language":"Go","funding_links":["https://github.com/sponsors/gfazioli?o=esc"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/logo/logo-lettering.png\" alt=\"octoscope — a terminal dashboard for GitHub, shown against a dark bokeh background\" width=\"320\" /\u003e\n\u003ch1\u003e↓\u003c/h1\u003e\n\nOCTOSCOPE is a terminal dashboard for **your GitHub account, or anyone else's public\nprofile** — profile, activity, repo health and network at a glance,\nauto-refreshed in the background.\n\n\n\n[![Latest release](https://img.shields.io/github/v/release/gfazioli/octoscope?color=E91E63\u0026label=release)](https://github.com/gfazioli/octoscope/releases/latest)\n![Go](https://img.shields.io/badge/Go-1.25-00ADD8)\n![License](https://img.shields.io/badge/license-MIT-green)\n![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey)\n\n\u003ch1\u003e↓\u003c/h1\u003e\n\n  \u003cimg src=\"docs/screenshots/screenshot.png\" alt=\"octoscope — a terminal dashboard for GitHub, shown against a dark bokeh background\"  /\u003e\n\u003c/div\u003e\n\n## Contents\n\n- [What it does](#what-it-does)\n  - [The tabs](#the-tabs)\n  - [Drill-in details](#drill-in-details)\n  - [Rate-limit awareness](#rate-limit-awareness)\n  - [Public-only mode](#public-only-mode)\n  - [Activity tab](#activity-tab)\n  - [Live feedback](#live-feedback)\n  - [What octoscope can't show](#what-octoscope-cant-show)\n- [Install](#install)\n  - [Homebrew (macOS \u0026 Linux)](#homebrew-macos--linux)\n  - [From source](#from-source)\n  - [Pre-built binary](#pre-built-binary)\n- [Usage](#usage)\n- [Themes](#themes)\n- [Configuration](#configuration)\n  - [In-app settings panel](#in-app-settings-panel)\n- [Authentication](#authentication)\n  - [Token scopes](#token-scopes)\n- [Contributing](#contributing)\n- [Sponsor](#sponsor)\n- [License](#license)\n\n## What it does\n\noctoscope is a single-binary TUI built with\n[BubbleTea](https://github.com/charmbracelet/bubbletea). It pulls a focused\nset of numbers from the GitHub GraphQL API in one round-trip and keeps them\ncurrent on screen so you can check the pulse of your GitHub life without\nswitching to a browser.\n\nThe dashboard is split into **tabs** (`Overview`, `Repos`, `PRs`, `Issues`,\n`Activity`) — jump with number keys or cycle with `tab` / `shift+tab`.\n\n### The tabs\n\n- **Overview** — the five stat sections below, the traditional dashboard\n  landing.\n- **Repos** — every owned, non-fork repository in one sortable, searchable\n  list. Columns: **CI status** (a coloured dot — green / red / yellow / dim\n  — sourced from the default-branch status-check rollup), name, primary\n  language, stars, forks, open issues, open PRs, last push, **latest\n  release** (tag + age, v0.14.0+). Press `s` to cycle sort (CI is in the\n  cycle and surfaces failures first; \"release\" sort lists the most\n  recently published first), `/` to filter by substring, `P` on a row to\n  pin a repo to a sticky section at the top — the viewport scrolls so\n  even a 100-repo account stays navigable. Add `watch_repos = [\"...\"]`\n  to the config to monitor repositories you don't own — they appear in\n  a third \"Watched\" section under your own list.\n- **PRs** — every open pull request you've authored, across every repo.\n  Number, title, repo, state (draft / ready / conflicts) and last-update\n  time. Same sort \u0026 search idioms as Repos.\n- **Issues** — every open issue you've authored, wherever it lives. Same\n  shape as PRs minus the state column.\n- **Activity** — 52-week contribution heatmap, plus total / current streak /\n  longest streak / busiest day computed from the same cells.\n\nThe **Overview** tab is organised in five sections:\n\n- **Profile** — name, login, pronouns, bio, company, location, website, and\n  how many years you've been on GitHub\n- **Social** — Followers · Following · Stars received (across your non-fork\n  repositories) · plus a 4th *Stars + Forks* card when you own forks that\n  carry stargazers, so the dashboard reconciles with counters that don't\n  filter forks out\n- **Activity** — lifetime PRs authored and merged, lifetime issues authored,\n  and commits in the last 12 months, with a takeaway line (\"X% of N PRs\n  merged · M still open\") summarising the funnel; underneath, a Languages\n  bar (byte counts across your owned repos, colour-matched to GitHub's own\n  hex palette) and a *Top repositories* column ranking your five most-starred\n  owned non-fork repos\n- **Operational** — repositories, forks received, open issues *(own)* and\n  open PRs *(own)* across your owned repositories — the *(own)* qualifier\n  disambiguates from your lifetime authored counts above\n- **Network** — the organisations you're a member of plus your verified\n  social accounts (X, LinkedIn, Bluesky, Mastodon…)\n\nThe top header also shows whether the current session is authenticated and\nhow fresh the data is. Auto-refresh runs every 60 seconds; press `r` at any\ntime for an on-demand refresh.\n\nThe banner, profile card, tab bar and footer stay pinned. The body of the\n**Overview** and **Activity** tabs scrolls vertically when the rendered\ncontent overflows a short terminal — `↑` / `↓` for line, `pgup` / `pgdn`\nfor page, `u` / `d` for half a page. A `↑/↓ scroll` hint appears in the\nfooter only when the active tab actually overflows.\n\n### Drill-in details\n\nOn any list tab (Repos, PRs, Issues), pressing **`enter`** on the\nselected row opens a rich **drill-in view** of that item; pressing\n**`space`** opens the **action menu** instead:\n\n```\n┌─ Actions for octoscope ─────────────────┐\n│  ▸ o  Open in GitHub                    │\n│    d  View details                      │\n│    c  Copy URL                          │\n│                                         │\n│   ↑/↓ select · enter confirm · esc back │\n└─────────────────────────────────────────┘\n```\n\n`enter` confirms the highlighted action; the underlined letter is a\ndirect shortcut you can press from inside the menu to skip selection.\n\n- **Open in GitHub** (`o`) — opens the repo / PR / issue in your\n  default browser. Same gesture is bound to `o` directly on the\n  list row, so the menu is just one of two paths to the same action.\n- **View details** (`d`) — replaces the tab body with a rich\n  drill-in view of the selected item, also reachable directly via\n  `enter` on the row (the canonical TUI convention, mirroring\n  lazygit / k9s / ranger). Per tab:\n  - **Repos** — description, license, languages bar, latest\n    release, recent commits with total + your-commits-in-the-last-year\n    counts, open issues / PRs preview, topics.\n  - **PRs** — title + state chip (Open / Draft / Merged / Closed),\n    glamour-rendered description, reviewers, checks summary,\n    files changed, recent commits, labels, curated timeline.\n    Press `f` to inspect the changed files: a full-screen list\n    with cursor navigation, and Enter on a file opens its\n    unified diff in a syntax-highlighted viewer (chroma `diff`\n    lexer + monokai palette). Both sub-views support `↑↓` /\n    `pgup` / `pgdn`, `o` to open on github.com, `c` to copy\n    the path, and `esc` to go back one level.\n  - **Issues** — title + state chip, glamour-rendered description,\n    assignees, recent comments, labels, linked PRs (those that\n    would close the issue when merged), curated timeline.\n\n  Each detail is fetched in a **single targeted query** for\n  that one item, so it never affects the dashboard's rate-limit\n  budget. The PR detail additionally pulls the file changeset\n  from GitHub's REST `/pulls/{n}/files` in **parallel** with the\n  GraphQL drill-in — wall-clock latency stays close to the\n  slower of the two. While in the detail view: `r` refreshes\n  the data, `o` opens the item in your browser, `c` copies its\n  URL, `esc` goes back to the list (cursor preserved).\n- **Copy URL** (`c`) — copies the row's URL to your system\n  clipboard (uses `pbcopy` on macOS, `clip` on Windows,\n  `wl-copy` / `xclip` / `xsel` on Linux). A `URL copied` toast\n  confirms in the footer.\n\n### Rate-limit awareness\n\nThe footer surfaces your GitHub GraphQL budget live:\n\n```\nUpdated 12s ago  ·  rate 4872/5000  ·  reset 23m  ·  auto 60s\n```\n\nThe chip is muted at normal levels, warn-yellow under 20% remaining, and\nerror-red under 5%. If GitHub ever tells us we're out of budget, the\nauto-refresh backs off until the reset time instead of hammering every\n60s.\n\nWhen a refresh fails, the footer says **why** — `rate-limited · retry at\n14:23`, `token rejected · check $GITHUB_TOKEN`, `offline · retrying`, or\n`github errored · retrying` — so you know whether to wait, fix auth, or\ncheck the network.\n\n### Public-only mode\n\nPass `--public-only` to hide private repositories, PRs and issues from\nthe lists — perfect for demos, screenshots and screencasts where you\ndon't want internal work leaking. Global counters (PRs Authored, PRs\nMerged, Issues Authored) stay complete; only titles and repo names get\nfiltered.\n\n### Activity tab\n\nThe **Activity** tab renders the last ~52 weeks of your public contribution\ncalendar as a heatmap, shaded on an accent-pink gradient that adapts to\nyour own distribution (the busiest day always hits the full neon pink, the\nquiet days sit on the surface grey). Underneath:\n\n- **Total contributions** for the window\n- **Current streak** (how many consecutive days you've pushed)\n- **Longest streak** in the window\n- **Busiest day** with its date, so you know when you shipped the most\n\n### Live feedback\n\n- **Change pulse** — whenever a value changes between two refreshes (e.g. a\n  new star arrives, someone follows or unfollows you, an issue gets closed),\n  the affected card's border flashes accent-pink for 2 seconds.\n- **Native notifications** — Stars and Followers changes also trigger a\n  system notification and a short audio beep, so you notice the \"passive\"\n  events even when octoscope is in a background tab. Clicking the banner\n  opens the relevant page (your profile for follower changes, the\n  starred-repos tab for star changes).\n  - **macOS**: notifications go through `terminal-notifier`, which the\n    Homebrew formula installs automatically as a dependency. If you\n    installed octoscope another way (`go install`, manual binary), run\n    `brew install terminal-notifier` once. The click-through works;\n    the **custom icon does not** — Apple deprecated `NSUserNotification`\n    in macOS 11, and the system now ignores `-appIcon` overrides for\n    notifications coming from CLI tools. The banner shows the\n    `terminal-notifier` icon instead. Cosmetic only.\n  - **Linux \u0026 Windows**: notifications carry the embedded octoscope\n    icon. Click activation depends on your DE / shell — best-effort.\n\n### What octoscope can't show\n\nSome things you can see on your GitHub profile page are **not exposed** by\nthe GitHub GraphQL or REST API, so octoscope doesn't show them:\n\n- **Achievements** (Pull Shark, Starstruck, YOLO, …)\n- **Highlights** like the PRO badge\n- The **local time** next to the location field\n\nSupporting any of these would require scraping the profile HTML, which we\ndon't do.\n\n## Install\n\n### Homebrew (macOS \u0026 Linux)\n\n```bash\nbrew install gfazioli/tap/octoscope\n```\n\n`brew upgrade gfazioli/tap/octoscope` picks up newer versions as they\nship.\n\n### From source\n\n```bash\ngo install github.com/gfazioli/octoscope@latest\n```\n\nRequires Go 1.25 or later.\n\n### Pre-built binary\n\nDownload the right platform archive from the\n[latest GitHub Release](https://github.com/gfazioli/octoscope/releases/latest),\nunpack it, and drop the `octoscope` binary anywhere on your `$PATH`.\n\n## Usage\n\n```bash\noctoscope                       # your dashboard (requires a token)\noctoscope \u003cusername\u003e            # any public profile (token optional)\noctoscope --refresh 30s         # auto-refresh every 30 seconds\noctoscope --compact             # dense card layout for narrow terminals\noctoscope --public-only         # hide private repos/PRs/issues (safe for demos)\noctoscope --theme phosphor      # 80s green CRT theme — see Themes section\n```\n\nExamples:\n\n```bash\noctoscope                # you\noctoscope torvalds       # Linus Torvalds\noctoscope gvanrossum     # Guido van Rossum\noctoscope gfazioli       # the author\noctoscope --public-only  # you, but screenshot-safe\n```\n\n## Themes\n\noctoscope ships with **seven built-in themes**. Pick one with\n`--theme NAME`, the `theme` config key, or cycle through them live\nin the in-app settings panel (`,` → arrow down to *Theme* → `←` /\n`→`).\n\n| Theme | Vibe |\n|-------|------|\n| `octoscope` | Default — pink + cyan |\n| `high-contrast` | Pure white accent, ANSI brights — maximum legibility |\n| `terminal` | Inherits from your emulator's palette (ANSI 8-15) |\n| `monochrome` | All-greys, zero chroma |\n| `stranger-things` | Crimson + Christmas-lights yellow on an \"Upside Down\" muted |\n| `phosphor` | 80s P1/P31 CRT pure green — vt100 vibe |\n| `amber` | 80s amber CRT (IBM 5151, WordStar) |\n\nThree of them, side by side:\n\n| `stranger-things` | `phosphor` | `terminal` |\n|---|---|---|\n| \u003cimg src=\"docs/themes/theme-stranger-things.png\" alt=\"stranger-things theme\" /\u003e | \u003cimg src=\"docs/themes/theme-phosphor.png\" alt=\"phosphor theme\" /\u003e | \u003cimg src=\"docs/themes/theme-terminal.png\" alt=\"terminal theme — uses the host emulator palette, here purple from the user's iTerm\" /\u003e |\n\nThe `terminal` theme is special: it picks colours from the **ANSI\nbrights of your emulator's palette**, so it follows your iTerm /\nGhostty / Alacritty colour scheme automatically. The screenshot\nabove is what `terminal` looks like with the author's iTerm palette\n— yours will differ.\n\nYou can override just the accent colour while keeping the rest of a\ntheme via the `accent_color` config key (or `--theme` plus an\n`accent_color` in the file). Any value lipgloss accepts works: hex\nlike `\"#FF0080\"` or ANSI 256 numbers like `\"201\"`.\n\n## Configuration\n\noctoscope reads `~/.config/octoscope/config.toml` on startup (honours\n`$XDG_CONFIG_HOME` when set). All keys are optional; missing keys fall\nback to defaults. CLI flags override the file. The file is **not**\ncreated automatically — write it yourself when you want to customise.\n\n```toml\n# ~/.config/octoscope/config.toml\n\n# Auto-refresh interval. Go duration syntax: \"30s\", \"1m\", \"5m\", \"1h\".\nrefresh_interval = \"1m\"\n\n# Hide private repositories, PRs and issues from the list tabs.\n# Useful if you screenshot or screencast octoscope often. Global\n# counters (PRs Authored, Issues Authored, ...) stay complete since\n# they're aggregate numbers, not titles.\npublic_only = false\n\n# Use the dense card layout in the Overview tab — smaller cards,\n# abbreviated labels. Fits more onto narrow terminals.\ncompact = false\n\n# Visual theme. Built-in: octoscope (default), high-contrast,\n# terminal, monochrome, stranger-things, phosphor, amber.\ntheme = \"octoscope\"\n\n# Optional override for just the accent slot of the active theme.\n# Hex (\"#FF0080\") or ANSI 256 (\"201\"). Leave unset to keep the\n# theme's default accent.\n# accent_color = \"#FF0080\"\n\n# Repositories pinned to the top of the Repos tab. Each entry is\n# \"owner/name\"; order is preserved exactly as listed here. Press\n# P on any repo row to add / remove it — the file is rewritten\n# atomically. Malformed entries are dropped silently at load.\n# pinned_repos = [\n#   \"gfazioli/octoscope\",\n#   \"gfazioli/Mantine-Hint\",\n# ]\n\n# External repositories to monitor in a Watched section under\n# the Repos tab (v0.14.0+). Hand-edit only — there is no\n# in-app toggle. Each entry resolves to its own GraphQL query\n# at refresh time; failures (404, private, network blip) are\n# dropped silently so a stale entry doesn't break refresh.\n# watch_repos = [\n#   \"charmbracelet/bubbletea\",\n#   \"cli/cli\",\n# ]\n```\n\nPass `--config PATH` to read a different file (handy for trying out\nconfigs without touching the default one).\n\nA malformed TOML file makes octoscope exit with an error so you\nnotice the typo straight away — there's no silent fallback to\ndefaults when the file is present but broken.\n\n### In-app settings panel\n\nYou don't have to drop to a shell to tweak settings: press `,`\n(comma) while octoscope is running and a settings panel opens.\nUse `↑` / `↓` (or `Tab`) to move between rows, `space` to flip a\ntoggle, `←` / `→` to cycle the theme picker, type to edit the\nrefresh field, `Enter` to save, `Esc` to cancel.\n\nWhat you change applies **live and instantly**: a new\n`refresh_interval` reschedules the auto-refresh tick, `compact`\nre-renders, `public_only` filters the lists on the spot, and\n`theme` rebuilds every style on save so the dashboard repaints in\nthe new palette without a restart. The panel persists changes back\nto your config file (the default path or whatever you passed to\n`--config`), so the next launch picks them up too.\n\nFor the most common toggle, you also get a single-key shortcut\noutside the panel: hit `p` from any tab and public-only flips\nstate immediately, with the file updated alongside. A yellow\n`◐ public-only` badge next to `authenticated` in the profile\ncard makes the current mode unmissable at a glance.\n\nKey bindings while running:\n\n| Key | Action |\n|-----|--------|\n| `1`-`5` | Jump to tab (Overview, Repos, PRs, Issues, Activity) |\n| `tab` / `shift+tab` | Cycle tabs forward / backward |\n| `↑` / `↓`, `j` / `k` | Move cursor in list tabs · scroll Overview / Activity when the body overflows the window |\n| `pgup` / `pgdn`, `u` / `d` | Page up / down on Overview \u0026 Activity (vertical scrolling) |\n| `space` | On Repos / PRs / Issues: open the action menu for the selected row · on Overview / Activity: page down |\n| `g` / `G` | Jump to top / bottom |\n| `s` | Cycle sort column |\n| `/` | Filter by substring |\n| `enter` | On Repos / PRs / Issues: open the drill-in detail view for the selected row · in any menu: confirm the highlighted action · in the PR files-list sub-view: open the file's diff |\n| `o` | Open the selected repo / PR / issue in your browser (or, inside the PR diff viewer, the PR's Files-changed tab on github.com) |\n| `c` | Copy the selected row's URL (or, inside the PR diff viewer / files list, the current file's path) to your system clipboard |\n| `f` | Inside the PR drill-in: inspect the changed files (full-screen list → Enter opens each file's diff with syntax highlighting) |\n| `P` | On a Repos row: toggle pin/unpin (pinned repos stick to the top of the Repos tab, ordering preserved across refreshes; writes back to config) |\n| `o` / `d` / `c` / `P` | Inside the action menu on Repos: Open in GitHub · View details · Copy URL · Pin/Unpin |\n| `esc` | Close the action menu / detail view, or clear the current filter |\n| `r` | Refresh now (or refetch the current detail view when open) |\n| `p` | Toggle public-only mode (saves to config) |\n| `,` | Open the in-app settings panel |\n| `←` / `→` | Cycle theme (when the Theme row is focused in the settings panel) |\n| `q` | Quit |\n| `ctrl+c` | Quit |\n\n(Pass `--help` for the full list of CLI flags and their defaults.)\n\n## Authentication\n\noctoscope resolves a GitHub token from, in order:\n\n1. `$GITHUB_TOKEN` environment variable\n2. `gh auth token` — if the [GitHub CLI](https://cli.github.com) is installed and logged in\n3. No token — falls back to the unauthenticated GitHub rate limit (60 req/h)\n\nRules of thumb:\n\n- **Viewing your own account** (`octoscope` with no arg) requires a token — there's no \"viewer\" to resolve without one.\n- **Viewing any other user** (`octoscope \u003cusername\u003e`) works with or without a token, but without one the unauthenticated 60 req/h limit gets burned through fast at the default 60-second refresh interval.\n\nA token is effectively required if you plan to keep the dashboard open for\nmore than a few minutes regardless of whose profile you're viewing.\n\n### Token scopes\n\noctoscope is **read-only** — it never mutates anything on your account.\nThe minimal scopes it needs depend on which kind of token you mint:\n\n**Fine-grained personal access token** (recommended). All permissions\nare read-only:\n\n- *Repository permissions*\n  - `Metadata` — Read (mandatory)\n  - `Contents` — Read\n  - `Issues` — Read\n  - `Pull requests` — Read\n- *Account permissions*\n  - `Profile` — Read\n  - `Followers` — Read\n  - `Email addresses` — Read *(only if you want the email field on the\n    profile card)*\n\nUnder *Repository access* pick **All repositories** (or just the ones\nyou want to see).\n\n**Classic personal access token:**\n\n- `read:user` — profile, followers, social accounts\n- `repo` — required to see your **private** repos / PRs / issues. Drop\n  it if you only care about public content; the dashboard still works\n  and just hides private items.\n- `read:org` — only needed if you're a member of orgs with **private**\n  membership and want them under *Network*. Public org memberships\n  show up without it.\n\n**Via `gh auth token`:** if the [GitHub CLI](https://cli.github.com) is\nalready logged in (`gh auth login`), octoscope picks up that token\nautomatically — the default `gh` scopes already cover everything.\n\noctoscope never needs `write:*`, `delete_repo`, `admin:*`, `gist`, or\nany workflow scope.\n\n## Contributing\n\nBug reports and ideas are welcome via\n[issues](https://github.com/gfazioli/octoscope/issues). Pull requests, too —\nplease open an issue first for anything non-trivial so we can agree on the\nshape before code lands.\n\n## Sponsor\n\n\u003cdiv align=\"center\"\u003e\n\n[\u003ckbd\u003e \u003cbr/\u003e ❤️ If this tool has been useful to you or your team, please consider becoming a sponsor \u003cbr/\u003e \u003c/kbd\u003e](https://github.com/sponsors/gfazioli?o=esc)\n\n\u003c/div\u003e\n\nYour support helps me:\n\n- Keep the project actively maintained with timely bug fixes and security updates\t\n- Add new features, improve performance, and refine the developer experience\t\n- Expand test coverage and documentation for smoother adoption\t\n- Ensure long-term sustainability without relying on ad hoc free time\t\n- Prioritize community requests and roadmap items that matter most\n\nOpen source thrives when those who benefit can give back—even a small monthly contribution makes a real difference. Sponsorships help cover maintenance time, infrastructure, and the countless invisible tasks that keep a project healthy.\n\nYour help truly matters.\n\n💚 [Become a sponsor](https://github.com/sponsors/gfazioli?o=esc) today and help me keep this project reliable, up-to-date, and growing for everyone.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n---\n\n[![Star History Chart](https://api.star-history.com/chart?repos=gfazioli/octoscope\u0026type=timeline\u0026legend=top-left)](https://www.star-history.com/?repos=gfazioli%2Foctoscope\u0026type=timeline\u0026legend=top-left)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgfazioli%2Foctoscope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgfazioli%2Foctoscope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgfazioli%2Foctoscope/lists"}