Work with Forge/Gitea-family issues from inside Paseo via the embedded fetch API client.
paseo plugin add xpufx/paseo --ref main --path plugins/forgesSecurity status covers commit 0ae17457a644. This command tracks main. Refresh the listing before installing if the branch changed.
From the plugin's README
The plugin uses the Paseo 0.8 layout (index.client.tsx / index.server.ts
entries, client/ / server/ / shared/ split, manifest
requirements.paseo >= 0.8.0).
paseo plugin add xpufx/paseo --path plugins/forges
Or from a local monorepo checkout:
paseo plugin add ./plugins/forges
README
Work with Forge/Gitea-family issues from inside Paseo: list open issues for the repo backing a workspace, read an issue's body and comments (with parsed agent envelopes), change scoped labels, and post comments, all in plugin surfaces with no browser. Augment with the provided webhook bridge and scoped labels to unlock autonomous agent orchestration.
Pull requests, releases, actions, and everything else are out of scope for now.
Built on paseo-plugin-helper, the shared Paseo plugin runtime.
| Main | Issue List | Issue Detail |
|---|---|---|
fetch client (server/forge-client.ts) against the Gitea-family
/api/v1. There is no git/fgj/fgjx subprocess and no dependency on any
host dotfile.fetch calls in the daemon. It never reaches the
client.limit/page, or follow Link/X-Total-Count) instead of assuming a
single call is complete; one unpaged call is never evidence of "no results".
A surface that lists results should page internally rather than render a
truncated set (#189).examples/ as a starting
point to adapt (see examples/README.md).Supported forges (verified live, anonymous reads): any Forgejo/Gitea-family host, including Forgejo, Gitea, and Codeberg.
Out of the box, forges gives you in-app issue management, scoped label chips, and steering comments directly inside Paseo.
When augmented with our scoped label taxonomy and lightweight webhook bridge (examples/hook-service/), forges becomes an autonomous agent coordination layer:
state/ chips (0-triage → 1-wip → 2-review → 3-verify → 4-done), publish structured status envelopes, and pass attention back to the operator when human signoff is required.state/, priority/, attention/, spec/) using the generic template in examples/labels/label-base.yaml./api/v1 RPCs directly) as well as CLI-assisted workflows (examples/skills/).See docs/workflow.md for the end-to-end architecture and examples/README.md for starter templates.
The plugin uses the Paseo 0.8 layout (index.client.tsx / index.server.ts
entries, client/ / server/ / shared/ split, manifest
requirements.paseo >= 0.8.0).
paseo plugin add xpufx/paseo --path plugins/forges
Or from a local monorepo checkout:
paseo plugin add ./plugins/forges
Open the plugin's Settings tab inside a workspace.
parseForgeRemote form plus
a bare owner/repo); Auto derives the remote from the workspace's git
origin. An explicit selection wins absolutely: an invalid or unreachable
selection fails loudly instead of silently deriving.read:user, read:repository, and write:issue (add
write:repository if label management still 403s). Edit capability is read
from the repo's permission object (permissions.push/admin, or GitLab
access_level >= 30), so a token that is accepted but under-scoped shows
"token lacks write scope" instead of enabling edits.npm install --workspace=plugins/forges
npm run typecheck --workspace=plugins/forges
npm test --workspace=plugins/forges
The helper audit also applies:
node packages/paseo-plugin-helper/bin/paseo-plugin-helper.js audit plugins/forges
See docs/specs/forge-workflow-gui.md
for the data model, RPC contracts, and UI surfaces, and
docs/workflow.md for the end-to-end agent workflow
(hook service, label usage, agent responsibilities, and what the plugin ships
versus what an adopter supplies).
Scanned 17 Sep 2026, 11:45 UTC from xpufx/paseo/plugins/forges.