Feature Bounties
Feature bounties that have shipped. Each was claimed by closing the issue with a merged PR.
community-portal (2)
#33 · Status dashboard pings every service /api/health and shows up/down
Portal is the front door but doesn't show service health. A simple health-check grid on the homepage makes outages visible to operators and members.
#34 · Add /bounties link to the portal's services grid
Portal links to most services but not to the new scoreboard /bounties page. Easy add.
developer-portal (1)
#39 · Add "Open Bounties" widget on the dev portal landing
Dev portal is where contributors land. Surface the top 5 open bounties prominently.
event-service (1)
#30 · RSVP confirmation email links to scoreboard for the +20 pts reveal
RSVPing earns 20 pts but the user has to discover this on their own. Confirmation email should celebrate the points and link to `/profile`.
general (1)
#48 · Migrate Planka behind Authentik SSO via Cloudflare Tunnel
Planka is currently external. Bring it under the community SSO so users don't manage a separate password.
qa-form (1)
#42 · Auto-create Task Exchange task for unanswered questions after 7 days
Per the truthmap and services diagram, QA → Task Exchange is an intended flow. When a question goes 7 days without an answer, automatically create a Task Exchange task offering the answer. Closes the loop and motivates community help.
scoreboard (4)
#51 · Fix GitLab runner: EACCES / ENOTCONN / readStream errors breaking CI deploys
The self-hosted GitLab CE runner (`H2eHrgbtW`) is randomly killing pnpm-spawned processes with three different node errors, breaking CI for at least three jobs:
#106 · Hardcoded secret / API key in repo or logs
Any production API key, JWT signing key, OIDC client secret, database credential, or webhook token committed to the repo, logged to stdout, or exposed in error responses.
#18 · Public JSON endpoint `/api/bounties` for embeddable bounty list
The `/bounties` page renders HTML server-side; other surfaces (Signal bot, Irregularpedia, community portal) need a JSON shape. Cleanly separate the data-fetcher from the renderer and expose it as a public read-only endpoint.
#100 · Resolve MR author from attrs.author_id, not body.user (avoid mis-credit)
The GitLab MR webhook at `apps/scoreboard/src/api/webhook.ts` resolves the contributor identity from `body.user.username` (and `attrs.last_commit.author.email` as fallback). Per GitLab's webhook docs, `body.user` is the **actor that triggered the event** — for a Merge Request "me…
search-mcp (1)
#46 · Add `bounties_open` MCP tool
MCP-aware AI agents (Claude Code, Claude Desktop) should be able to query open bounties. Adds another tool alongside `search_community`, `ask_irregularchat`, etc.
searxng (1)
#49 · Pin SearXNG image to specific tag in compose.yml
Currently uses `searxng/searxng:latest` (or unpinned) — a breaking upstream release will silently break community search. Pin to a date-tagged release and document the upgrade workflow.
signal-bot (8)
#124 · Redirect !wikiadd from archived repo to monorepo MR-based flow
`!wikiadd` is the Signal-bot command that lets a member quote a message (or `-n N` for the last N messages) and have AI extract wiki-worthy content, decide which page to update or create, and commit + push to the wiki repo. Cloudflare Pages auto-deploys to https://irregularpedia.…
#116 · SSRF: DNS rebind hardening + Tailscale CGNAT block
`packages/shared-utils/src/bot-utils/url-scraper.ts:178` validates URLs by checking the literal hostname string against an allowlist + `isInternalHost` check, then `axios.get(url)` re-resolves DNS independently. An attacker domain returning `203.0.113.5` on the first lookup and `…
#123 · Rollup retention + outline_url NULL semantics
Two related cleanup items from the onboarding feature's team-review:
#115 · Prompt injection: wrap user messages in untrusted-content delimiters
`handleSummarize` (apps/signal-bot/src/src/bot/command-handler.ts:5613-5658) builds the user prompt by joining group messages as `${msg.source_name}: ${msg.message}` and dropping the result into OpenAI. A malicious member can send a message like `IGNORE PRIOR INSTRUCTIONS. Reply:…
#118 · Inline rollup: render top contributors as proper Signal mentions
The inline rollup output (`!rollup` non-`--full`) lists contributors as plain text strings: `Top answerers: alice (3)`, `Asked by bob`. Signal renders these as plain text — no blue highlight, no name tap, no notification to alice/bob that they were credited. Looks half-finished g…
#121 · Sanitize error_message persistence in daily_community_rollups
`apps/signal-bot/src/src/utils/community-rollup.ts:153-170` writes `err.message` verbatim into `daily_community_rollups.error_message` when the rollup generation fails. PostgreSQL/Outline errors can include connection strings, API tokens encoded in URLs, raw stack-trace fragments…
#122 · Privacy: requireLocal flag for room-catchup AI calls (no silent OpenAI fallback)
`apps/signal-bot/src/src/utils/room-catchup.ts:97-107` calls `callAI({ ..., preferLocal: true })`. The `preferLocal` flag tries LocalAI first, then **silently falls back to OpenAI** if LocalAI is unreachable.
#117 · Clarify default !rollup scope in help text
`!rollup` with no flags returns the **community-wide** weekly digest. A user typing `!rollup` in `#general` reasonably expects to see what THEIR group discussed and gets cross-community stats instead. The help text at `apps/signal-bot/src/src/bot/command-handler.ts:1933` says "`!…
simplex-bot (17)
#155 · Wire MinIO + PeerTube + ClamAV auto-archive into SimpleX !save
SimpleX `!save`/`!archive` extracts and dedups URLs but does not upload files to MinIO, mirror videos to PeerTube, or virus-scan attachments. MinIO/PeerTube/Shlink are already in `compose.yml`, just unwired.
#166 · SimpleX per-room toggles !room ai/rps/dice/translate + auto-translate pipeline
Signal supports per-room config (toggle AI, games, auto-translate to a language). SimpleX has none.
#168 · SimpleX !event detail/create/share + !rsvp + reminder prefs
SimpleX has `!events` (list only). Signal has full event interaction against the event-service worker.
#171 · SimpleX !bcw Behavior Change Wheel (3-step COM-B)
Signal has the BCW analysis command (behavior analysis -> operational frame -> COM-B intervention mapping). SimpleX lacks it.
#172 · SimpleX !location + !radius coordinate tools
Signal converts coordinates (DD/DMS/MGRS) with map links and finds locations within a radius. SimpleX has neither.
#173 · SimpleX !uxs drone/UAS parts, BOM, NDAA compliance
Signal's `!uxs` router does part search, public BOM search, and NDAA §889 / Blue UAS compliance. SimpleX has `!fab` but not `!uxs`.
#174 · SimpleX !teamco core: workspace + sitrep + status
Signal's `!teamco` covers workspace create/info/status/sitrep, check-in/out, and blocker/task/announce against the TeamCO worker + TAK. SimpleX has none. (Booth subsystem is a separate bounty.)
#175 · SimpleX !teamco booth subsystem
Signal has a full booth subsystem (16 `handleTeamcoBooth*` handlers): add, lookup, list, claim, find, meet, meets. Depends on the TeamCO core bounty.
#176 · SimpleX !global-alert full region monitoring (enhance existing)
SimpleX has a basic `global-alert` admin command. Signal's `!globalalert` is a full region-monitoring subsystem (start/stop/list/status/summary/regions, preset REGIONS, multiple source types, plus a monitoring scheduler with Cyclops enrichment).
#156 · SimpleX !get file retrieval + !files search parity
Signal has `!get <filename>` (retrieve a specific archived file) and file search. SimpleX has `!files`/`!download` but no fetch-by-name.
#157 · SimpleX Forum (Field Notes) commands: !forum !fpost !flatest !fsearch !categories
The Signal bot integrates Field Notes. SimpleX has none of it.
#158 · SimpleX breakout-room command completion: !objective !rfi !resolve !unpark !broadcast
SimpleX has `!breakout`/`!endbreakout`/`!breakouts`/`!decision`/`!action`/`!park`/`!extend`; missing the rest of Signal's structured-discussion verbs.
#160 · SimpleX !fab completion: list / info / render / analyze / request / tasks
SimpleX `!fab` does **search + add** only. Signal's fabrication suite also lists, shows info, renders STL previews, analyzes `.3mf` files, and tracks fabrication requests.
#161 · SimpleX !summarize parity: PDF attachments + YouTube/social-video transcripts
SimpleX `!summarize` handles URLs/text only. Signal also summarizes **PDF attachments**, **YouTube transcripts**, and **social-video** (IG/TikTok/FB) transcripts. (Conversation-history summarization stays out — SimpleX has no durable history.)
#170 · SimpleX Redis-backed rate-limiting + cache (AI throttle parity)
A Redis container is provisioned for the SimpleX bot but unused. Signal rate-limits AI (e.g., 20/hour/user) and caches via Redis.
#177 · SimpleX !report-bug DM intake for points
Signal lets users report bugs (reply to a bot message) and earn points. SimpleX has no equivalent. Mirrors signal-bot #114.
#159 · SimpleX wiki !wikiindex + !wikistats
SimpleX has wiki search/ask/add but not index (TOC) or stats.
tak-service (1)
#37 · Document and seed `tak-service` example geofence in README
README is empty. Add a runnable quickstart: how to deploy, how to push a marker, how to query markers — three commands with copy-paste curl.
task-exchange (1)
#22 · Block self-bidding on own tasks
Right now there's no server-side check preventing a user from bidding on a task they posted. Add a guard.
teamco (1)
#25 · Add `isTakConfigured()` guard before TAK Service calls
TeamCO crashes (or returns 500) when TAK Service isn't deployed. Per bot-utils convention, gate every `tak-client.ts` call behind a configuration guard.
wiki (39)
#52 · Wiki page: Secure Messaging Comparison
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#53 · Wiki page: Tor Network Guide
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#57 · Wiki page: Email Anonymity Guide
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#58 · Wiki page: OPSEC for Activists & Journalists
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#59 · Wiki page: Cryptocurrency Privacy
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#69 · Wiki page: OPSEC Framework
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#70 · Wiki page: Threat Modeling
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#71 · Wiki page: Enterprise Incident Response
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#73 · Wiki page: Red Team Tradecraft
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#74 · Wiki page: Blue Team Tools
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#75 · Wiki page: Physical Security Guide
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#76 · Wiki page: Digital Forensics
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#77 · Wiki page: Malware Analysis
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#79 · Wiki page: Reverse Proxy with nginx
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#80 · Wiki page: Reverse Proxy with Traefik
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#81 · Wiki page: Monitoring with Prometheus + Grafana
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#82 · Wiki page: Logging with ELK or Loki
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#85 · Wiki page: Infrastructure as Code with Terraform
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#88 · Wiki page: PostgreSQL Server Setup
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#89 · Wiki page: Server Hardening
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#90 · Wiki page: Disaster Recovery
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#91 · Wiki page: RAG (Retrieval-Augmented Generation) Patterns
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#92 · Wiki page: LLM Evaluation Frameworks
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#93 · Wiki page: Agentic AI Patterns
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#94 · Wiki page: Local LLM Setup
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#95 · Wiki page: Prompt Engineering Taxonomy
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#97 · Wiki page: Ham Radio Licensing Tiers
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#98 · Wiki page: Meshtastic & Mesh Networking
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#99 · Wiki page: Raspberry Pi Cluster
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#54 · Wiki page: Metadata Hygiene
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#55 · Wiki page: Burner Devices Guide
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#56 · Wiki page: Browser Fingerprinting
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#60 · Wiki page: Mixnets Overview
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#78 · Wiki page: Tracking CVEs and Vulnerabilities
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#83 · Wiki page: Backups with Borg / BorgBase
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#84 · Wiki page: Backups with Restic
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#87 · Wiki page: Load Balancing with HAProxy
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#96 · Wiki page: GMRS Guide
A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.
#41 · Render "Bounty" badge on pages with linked GitLab issues
If a wiki page mentions an open bounty issue, surface that with a small green badge so readers see opportunities.