The open source Canny alternative

Users post and vote. Your agents read the top requests, move the roadmap and draft the changelog. Self-host in one command, or use the cloud.

Works withClaude CodeCursorCodexChatGPTGemini CLI
feedback.acme.com
The openheard public board: a list of feature requests with vote counts

Run it through the agent you already use.

An MCP server and an HTTP API ship with it. Claude, Cursor or any agent can triage feedback, update the roadmap and draft the changelog from wherever you already work.

Ask in plain English
“What are the top five requests from paying users this month?”
Act, not just read
Move a post to Planned, merge duplicates, reply to a voter.
Draft the changelog
Closed posts become a ready-to-edit entry. Voters get told on publish.
Your keys, your scope
API keys are per workspace, hashed, shown once. Revoke any time.
claude — openheard-mcp
● I'll pull this week's shipped posts, draft an entry and show it before publishing.
● Draft: “Dark mode for the widget, merge without losing votes, Slack status alerts.”
└ openheard.publishChangelog → published, 128 voters notified
● Done. Live at acme.openheard.com/changelog/this-week

Post. Vote. Ship. Tell them.

Four screens. Each one does its job and stays out of the way.

A board users actually use.

Post, vote, comment. Duplicates merge without losing votes. Keyboard first, one accent colour, no clutter.

  • Public or private boards
  • One vote per user, anonymous voting optional
  • Tags, search, trending and top sorts
Public feedback board showing feature requests ranked by votes

A roadmap that stays honest.

Statuses are data. Drag a card in the dashboard and the public roadmap, the board and the changelog all agree.

  • Columns come from your statuses
  • Vote counts on every card
  • Hide it until you are ready
Dashboard roadmap view with kanban columns for Planned, In Progress and Shipped

Close the loop.

Write what shipped, link the posts, publish. Everyone who voted gets an email. RSS for the rest.

  • Entries link back to the requests
  • Voters notified on publish
  • RSS feed, version tags, drafts
Changelog page with published entries linked to shipped requests

An inbox, not a CRM.

Every post in one list with status, board, tags and votes. Filter, pin, merge, add an internal note, move on.

  • Quick filters by status, board and tag
  • Internal notes and reactions
  • CSV import and export
Dashboard inbox showing all posts with status filters and vote counts

Small tool. Whole loop.

Four things a feedback board has to get right. Nothing else.

Dark mode for the embedded widget
In progress · Mara Lindqvist · 2d

Votes that rank the inbox

One vote per user, no anonymous pile-ons unless you allow it. The board sorts itself.

This week: widget dark mode, merge, Slack alerts

Three shipped requests, 268 votes between them. Linked below.

Dark modeMergeSlack
Published · 128 voters notified

Close the loop

Publish what shipped, link the posts, and every voter gets told. That is the whole point.

Planned
Slack notifications
133
CSV export
70
In progress
Merge duplicates
112
Shipped
Dark mode widget
112

A roadmap that stays honest

Statuses are data. Drag a card and the board, the roadmap and the changelog agree.

claude
● 1. Dark mode for the widget · 128
● 2. Merge duplicates · 86
● 3. Slack status alerts · 54

Ask it from Claude or Cursor

API keys, an HTTP API and an MCP server. Your agent reads the top requests before you plan a sprint.

Feedback tools go quiet after collection.

A user writes an idea, it lands in a dashboard, and that is the last they hear. openheard treats every post as the start of a loop, not the end of one.

When someone votes, they hear about it. When it moves to Planned, they hear about it. When it ships, they get the changelog entry that says so, with their request linked.

None of it is configured. Turn the board on and the loop runs the same day.

01

Post

Submission acknowledged. The author gets a link to follow.

02

Vote

Status changes reach every voter, not just the author.

03

Ship

The changelog entry links the request. Voters are told.

04

Return

Weekly digest of new ideas brings them back to vote again.

Self-host is not a trial. It is the full product, forever.

zsh — ~/openheard
✓ Worker openheard-acme created
✓ D1 database migrated (7 tables)
✓ First sign-up becomes admin

Unlimited users. Every plan.

Charging per seat for a feedback tool is backwards. Pay for hosting, never for people.

Free

$0/month

Everything you need to start collecting feedback.


Included

  • Unlimited users and votes
  • 2 boards, public roadmap and changelog
  • 3 admins
  • openheard.com subdomain
  • CSV import and export

ProPopular

$19/month

For teams that ship every week.


Everything in Free, plus

  • Unlimited boards and admins
  • Custom domain
  • Email notifications to voters
  • API keys and MCP server
  • Image uploads
  • Priority support

Self-hosting is free forever, no tier, no limits. AGPL-3. Deploy on your own Cloudflare account.

Frequently asked, plainly answered.

Everything else is in the docs and the README.

Yes. AGPL-3 means the code is free to use, modify and deploy. Running it on your own infrastructure for your own users is always free. The licence only asks that you publish changes if you distribute a modified version.

Your users have opinions.

Start for freeOr self-host in one command