fj CLI
fj does for Forgejo what gh does for
GitHub: open PRs, triage issues, ship releases, tail Actions logs, drive
workflows, all from one signed binary. It tracks the Forgejo /api/v1 surface,
is multi-host from day one, and keeps tokens in your OS keychain rather than on
disk.
Install
Signed and notarized binaries for macOS and Linux x86_64:
brew tap rasterandstate/tap
brew install fjThen authenticate once; the token is stored in the macOS Keychain, Linux Secret Service, or Windows Credential Manager:
fj auth loginWhat it does
- Repo auto-detection from your git remote. Inside any Forgejo clone,
fj pr listknows the repo and host, with no-Rplumbing. - Pull requests & issues: list, create, view, merge, and comment.
- Releases: create and update releases and upload assets.
- Actions: list and watch runs, read logs, and trigger
workflow_dispatch. - A raw API escape hatch with retry, pagination, and a jq-ish projector:
fj api /repos/foo/bar/issues --paginate -q '.[].title'On a runner
Install fj inside a workflow with setup-fj-action (checksum-pinned, from your Forgejo releases), then script your forge from CI. fj-fanout-dispatch-action uses it to fan a workflow_dispatch out across many repos.
For agents
fj ships a Claude Code plugin so AI agents can drive it from natural-language requests, plus a --json --json-fields name,number projection mode for scripts. (These very docs
were built and shipped with fj.)
- Stephen Way