LastHelp
A self-hosted feedback portal that speaks to your forge — bugs and ideas from anybody, without an account, turned into issues on GitHub, GitLab, Gitea or Forgejo.

Run it
One command, with Docker or on Linux. Releases are signed, and the install guide is in the documentation.
$docker pull git.codigosh.com/codigosh/lasthelp:latest$curl -fsSL https://git.codigosh.com/CodigoSH/LastHelp/raw/branch/main/install.sh | sudo shScreenshots
Click one to enlarge




Features
14 in all
Reporting without an account
Anybody can send a bug or an idea from one short form. What they get back is a secret link to their own report — the only way back to it, and the reason no sign-up is needed at all.
Bugs and ideas, two journeys
A bug is asked which version and how to see it happen, and is not voted: agreement does not make something crash harder. An idea is one sentence, gathers votes and ranks by them.
Similar reports while typing
As somebody writes a title, the reports that already say the same thing appear under it, so the tenth person with the same crash adds a vote or a comment instead of a duplicate.
A roadmap nobody maintains
Three columns built from the state of each report, so the public roadmap cannot go out of date — when an issue closes on your forge, the report moves on its own.
One screen for the team
Every repository you work on in one list, with the report beside it: publish, reject or spam with a key each, edit its words, change its status, reply, edit or delete comments, merge a duplicate, or open an issue. The same screen is the archive of every report ever sent.
A bridge to your forge
GitHub, GitLab, Gitea and Forgejo, including instances on your own network. A triaged report becomes an issue or is attached to one that already exists, and follows it when it closes or reopens.
All 14 features
Nothing is published without a person
Every report and every visitor's comment waits for the team. Your own replies do not — you are the person.
Anti-abuse without a third party
A signed single-use form token, a timing window, a honeypot, rate limits by address and network block, duplicate and link heuristics, your own word list, and a breaker that closes a board for a while. No captcha service, no reputation API, no model.
A front page you compose
Bands of modules — the repositories, the most voted ideas, what was resolved, statistics, links, and your own words and images — arranged on a grid in the page itself, under your name, logo and colour.
Two levels of trust
A lead runs an organisation, its forge token and its repositories; a collaborator triages the repositories they are given and never sees the token.
Notifications both ways
The team hears about new reports through ntfy, Gotify, a webhook or mail, per repository. Reporters follow an Atom feed that needs no account, or leave an email that is deleted when their report closes.
Twenty languages, right-to-left included
Hand-translated into twenty languages, with full right-to-left layout for Arabic, Persian and Urdu, applied on the server for the first paint.
Signed, verified updates
Releases are signed with Ed25519. The updater in the panel checks the signature and the checksum, makes the new binary prove it runs, refuses one older than the database and takes a backup before it swaps anything.
One binary, one file
A static Go binary or a Docker image for amd64 and arm64, and one SQLite file beside it. No database server, no runtime, no telemetry, and a browser wizard instead of a configuration file.
Use cases
What people run it for
A front door for a self-hosted forge
Registration on your Forgejo or Gitea is closed, as it should be — and that closed the only way outsiders had to tell you something broke. LastHelp is the door you open instead, without giving strangers accounts on your forge.
An open-source project with more users than contributors
The people who use your software will never open an issue tracker. Give them one form, keep the tracker for work you have accepted, and attach ten reports of the same crash to the one issue that already exists.
Ideas ranked by the people who asked
Collect feature requests with votes, answer them in public, and let the roadmap show what is planned and shipped without anybody maintaining it by hand.
A small team's support inbox
Several repositories, a couple of people triaging, one list of what arrived. Collaborators work the repositories they are given; the forge token stays with whoever runs the organisation.
Feedback that stays on your server
No third-party widget, no hosted board, no analytics. What people write reaches one database on your machine and goes nowhere else.
A self-hosted alternative to Canny, UserVoice and Fider
Hosted feedback boards such as Canny or UserVoice keep your users' words on somebody else's servers and charge per board or per seat. Open-source boards such as Fider can run on your own server. LastHelp is self-hosted and free too, and it is built around the forge: a triaged report becomes a real issue on GitHub, GitLab, Gitea or Forgejo, follows that issue when it closes, and keeps the public roadmap in step with it. It ships as one binary with one SQLite file, so trying it costs a single command.
Frequently asked questions
Is LastHelp free and open source?
Yes. LastHelp is free and open source under the Apache License 2.0. You can read, run, fork and self-host it; the licence reserves only the names and logos. There is no paid tier.
Do people need an account to report something?
No. Anybody can send a bug or an idea from the public form. They get a secret link back to their own report, which is how they follow it without signing up.
Which forges does it work with?
GitHub (including Enterprise Server), GitLab (hosted or self-managed), Gitea and Forgejo, including instances on your own network with self-signed certificates. It also runs without any forge — everything except creating issues works.
What happens when an issue is closed on my forge?
The report follows it. A forge webhook tells LastHelp the issue closed or reopened, the report changes state, and the public roadmap moves with it.
How does it keep spam out?
Nothing is published until a person approves it. Before that, a signed single-use form token, a timing window, a honeypot, rate limits by address and network block, duplicate and link checks, your own word list and a per-board breaker refuse most automated submissions — all without calling a third-party service.
How do I install it?
Run the one-line installer on Linux (amd64 or arm64), which verifies the release signature and sets up a hardened systemd service, or use the Docker image. The first run is a three-step wizard in the browser; there is no configuration file to write.
How much does it need to run?
Very little: one static Go binary with SQLite compiled in, no CGO and no runtime dependencies. A backup is a copy of one file, or a button in the panel.
Does LastHelp send any data anywhere?
No. There is no telemetry, no analytics and no AI. It talks only to the forge and the notification channels you configure, and it can be told to make no outbound connection at all.
Can a team work on it together?
Yes. The administrator creates accounts. A lead runs an organisation, its forge connection and its repositories; a collaborator triages the repositories they are given and never sees the forge token.
How do updates work?
An administrator can update from the panel: LastHelp checks the Ed25519 signature and the checksum, makes the new binary prove it runs, refuses one older than the database, takes a backup and only then swaps, showing each step. Running the installer again or pulling a new image works too.
What languages is it available in?
Twenty, all hand-translated: Arabic, Bengali, Chinese, Dutch, English, Farsi, French, German, Greek, Hindi, Indonesian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Spanish, Turkish and Urdu — with full right-to-left layout for Arabic, Farsi and Urdu.
LastHelp release history
Releases
Try LastHelp
Free, open source and yours to run. No account, nothing reporting back.