{"id":"github-integration","repo":"alysnnix/paseo-github-integration","url":"https://github.com/alysnnix/paseo-github-integration","name":"github-integration","description":"GitHub inside [Paseo](https://paseo.sh): the issues and pull requests you are attached to, the ones waiting on your review, your Projects boards, and the review actions that finish a pull request — without leaving the app, and with one click to hand any of them to a coding agent.","categories":["github","productivity","monitoring"],"platforms":[],"caveats":["Requires gh installed and authenticated on the daemon machine, not the device running the app","Sweeps review requests, mentions, assignments and authorship, plus any owner you add to the watched list","Approving, merging and editing labels need a gh login with the matching access to the repository","GitHub Projects needs the read:project scope, which gh auth login does not grant by default","Shows open work only: the board is a state:open search, so closed and merged items leave it","Images hosted outside GitHub are shown as links rather than loaded, so a comment cannot report your IP address"],"images":["https://raw.githubusercontent.com/alysnnix/paseo-github-integration/d6f7184a4db16fb1be930700d1e960872caf8c2e/images/board.png","https://raw.githubusercontent.com/alysnnix/paseo-github-integration/d6f7184a4db16fb1be930700d1e960872caf8c2e/images/detail-panel.png"],"health":{"manifestValid":true,"hasReadme":true,"hasLicense":true,"hasTests":true,"hasTypecheckScript":true,"updatedRecently":true},"scannedAt":"2026-09-14T08:28:45.018Z","addedAt":"2026-09-14T04:22:52Z","version":"1.0.1","security":{"status":"passed","blockingFindings":0,"advisoryFindings":0,"scannedAt":"2026-09-14T08:27:38.731Z","commit":"d6f7184a4db16fb1be930700d1e960872caf8c2e"},"license":"MIT","paseoVersionRequirement":">=0.8.0","manifest":{"id":"github-integration","requirements":{"paseo":">=0.8.0"}},"repoMeta":{"stars":0,"defaultBranch":"main","pushedAt":"2026-09-14T02:27:53Z"},"owner":{"login":"alysnnix","avatarUrl":"https://avatars.githubusercontent.com/u/26152669?v=4"},"installNotesHtml":"<p>Requires Paseo <strong>0.8.0 or newer</strong> on the daemon <em>and</em> on the app, plus the\n<a href=\"https://cli.github.com/\"><code>gh</code> CLI</a> authenticated on the daemon machine — the plugin shells out to\nit and never handles a token itself.</p>\n<pre><code class=\"language-bash\">paseo plugin add alysnnix/paseo-github-integration\n</code></pre>\n<p>Then enable plugins on the daemon (Settings → Plugins) if they are not already on, and open\n<strong>GitHub</strong> in the sidebar.</p>\n<p>For Projects:</p>\n<pre><code class=\"language-bash\">gh auth refresh -h github.com -s read:project\n</code></pre>\n<h3>With Nix</h3>\n<p>The flake packages the plugin as a source-only derivation, which pairs with a <code>directory</code> plugin\nsource so the installed version is pinned by your lock file rather than a branch that moves:</p>\n<pre><code class=\"language-nix\">inputs.paseo-github.url = \"github:alysnnix/paseo-github-integration\";\n</code></pre>","limitationsNotesHtml":"<ul>\n<li><strong>The <code>gh</code> CLI does the talking.</strong> Every query is a <code>gh api graphql</code> subprocess on the daemon\nmachine, so <code>gh</code> has to be installed and authenticated there. The plugin never handles a token\nitself and cannot log you in.</li>\n<li><strong>Projects needs a scope <code>gh auth login</code> does not grant.</strong> Without <code>read:project</code> the Projects\ntab shows the command to run instead of your boards.</li>\n<li><strong>The board is a <code>state:open</code> search.</strong> Closed issues and merged pull requests leave it; there is\nno archive view, and nothing here searches history.</li>\n<li><strong>GitHub search backs the sweep</strong>, so its rules apply: results are capped per query, and a\nwatched owner with thousands of open items shows the most recently updated slice rather than all\nof them.</li>\n<li><strong>One GitHub account at a time</strong>, the one <code>gh</code> is authenticated as. There is no account switcher.</li>\n<li><strong>Images hosted outside GitHub are not loaded</strong>, deliberately: they would report your IP address\nto whoever wrote the comment. They render as a link you can open yourself.</li>\n</ul>","readmeText":"# paseo-github-integration\n\nGitHub inside [Paseo](https://paseo.sh): the issues and pull requests you are attached to, the ones\nwaiting on your review, your Projects boards, and the review actions that finish a pull request —\nwithout leaving the app, and with one click to hand any of them to a coding agent.\n\n![The GitHub surface: the Pull requests / Issues / Discussions / Projects switcher, the relation\nchips with their counts, the owner and repository pickers, the search box, and the list of pull\nrequests.](images/board.png)\n\n## What it does\n\n**Sweeps everything you are attached to, not just what you wrote.** The server runs one GitHub\nsearch per relationship — review requested, mentioned, assigned, authored — plus one per watched\nowner, and unions the results. A pull request someone else opened and asked you to review is on the\nboard; so is everything open under an organisation you watch.\n\n**Filters it back down on the client.** Each card carries every relationship it matched, so the\nchips (`Needs my review`, `Mentions me`, `Assigned to me`, `Mine`, `Other`) narrow the list with no\nnew request. Owner and repository pickers narrow it further, and both filter their own list, so a\nlong list of repositories is typed at rather than scrolled.\n\n**Search with sigils.** A plain word matches a title, a repository or a number. `/name` restricts to\nrepositories, `#123` to numbers, `@login` to authors, and several terms are ANDed: `@dependabot\n/trunk` is \"opened by dependabot, in a trunk repository\". Separators are ignored on both sides, so\n`checkout frontend` finds `owner/checkout-frontend`.\n\n**Three orderings.** Recently updated, recently created, and last commit — the last one being the\ndate that answers \"what has actually moved\". Each card reports the date the list is sorted on.\n\n**Read and act without leaving.** Opening a card shows the body, the comments and the checks\nrendered from Markdown, with images proxied through the daemon. From there: approve, merge with any\nmethod the repository allows, edit labels, open on GitHub — or **send to chat**, which starts a\nPaseo agent with a prompt template of your choosing, in a workspace of your choosing, with the\nissue or pull request pinned to the top of the conversation.\n\n![One pull request open in the detail panel: title, author, branches, checks, the Approve, Merge,\nSend to chat and Open on GitHub actions, and the rendered body.](images/detail-panel.png)\n\n**Projects.** The Projects v2 boards you and your watched owners own, grouped by their Status\ncolumn. Projects need a scope `gh auth login` does not grant, so a token without it gets the\ncommand to run and a button to copy it, rather than an error.\n\n## Install\n\nRequires Paseo **0.8.0 or newer** on the daemon *and* on the app, plus the\n[`gh` CLI](https://cli.github.com/) authenticated on the daemon machine — the plugin shells out to\nit and never handles a token itself.\n\n```bash\npaseo plugin add alysnnix/paseo-github-integration\n```\n\nThen enable plugins on the daemon (Settings → Plugins) if they are not already on, and open\n**GitHub** in the sidebar.\n\nFor Projects:\n\n```bash\ngh auth refresh -h github.com -s read:project\n```\n\n### With Nix\n\nThe flake packages the plugin as a source-only derivation, which pairs with a `directory` plugin\nsource so the installed version is pinned by your lock file rather than a branch that moves:\n\n```nix\ninputs.paseo-github.url = \"github:alysnnix/paseo-github-integration\";\n# services.paseo.settings.plugins.github-integration = {\n#   source = \"directory\";\n#   path = \"${pkgs.paseo-github-integration}\";\n#   enabled = true;\n# };\n```\n\n## Limitations\n\n- **The `gh` CLI does the talking.** Every query is a `gh api graphql` subprocess on the daemon\n  machine, so `gh` has to be installed and authenticated there. The plugin never handles a token\n  itself and cannot log you in.\n- **Projects needs a scope `gh auth login` does not grant.** Without `read:project` the Projects\n  tab shows the command to run instead of your boards.\n- **The board is a `state:open` search.** Closed issues and merged pull requests leave it; there is\n  no archive view, and nothing here searches history.\n- **GitHub search backs the sweep**, so its rules apply: results are capped per query, and a\n  watched owner with thousands of open items shows the most recently updated slice rather than all\n  of them.\n- **One GitHub account at a time**, the one `gh` is authenticated as. There is no account switcher.\n- **Images hosted outside GitHub are not loaded**, deliberately: they would report your IP address\n  to whoever wrote the comment. They render as a link you can open yourself.\n\n## Trust\n\nPlugin code is **trusted and unsandboxed**: the server half runs beside the daemon with your files,\nprocesses and credentials, including whatever `gh` is logged in as, and the client half runs inside\nthe Paseo app. That is true of every Paseo plugin, this one included. Read the code before you\ninstall it.\n\nReleases are verifiable: every release tag is signed, the published tarball ships with\n`SHA256SUMS`, and the artifact carries GitHub build provenance.\n\n```bash\ngit verify-tag v1.0.1\nsha256sum -c SHA256SUMS\ngh attestation verify paseo-github-integration-1.0.1.tar.gz --repo alysnnix/paseo-github-integration\n```\n\n## Development\n\nThe repository *is* the plugin: its root holds `paseo-plugin.json` and the two runtime entries.\n\n```bash\nnpm install\nnpm run typecheck\nnpm run lint\nnpm test\npaseo plugin install \"$PWD\" --id github-integration-dev\npaseo plugin reload github-integration-dev   # after every source change\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for the module layout and the rules the linter enforces.\n\n## Credits\n\nThis started as a fork of [gpambrozio/paseo-plugins](https://github.com/gpambrozio/paseo-plugins),\nwhose `github-board` plugin is the origin of this one and the source of much of the code that\nremains. The fork has since diverged: the relation sweep, the filters and search, the orderings,\nreview and merge, the Projects tab, the cache rewrite and the module layout are this repository's,\nand the other plugins that lived beside it there are not carried here. Thanks to Gustavo for the\nstarting point and for the MIT licence that made it possible.\n\nLicensed under the MIT licence — see [LICENSE](LICENSE).\n"}