79completed
56awarded
6450points shipped
XS · 25 S · 50 M · 100 L · 200 XL · 400

community-portal (2)

S · 50 pts community-portal

#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.

✅ Completed by sac
XS · 25 pts community-portal

#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.

✅ Completed by sp

developer-portal (1)

S · 50 pts developer-portal

#39 · Add "Open Bounties" widget on the dev portal landing

Dev portal is where contributors land. Surface the top 5 open bounties prominently.

✅ Completed by Günther Van der Eecken

event-service (1)

XS · 25 pts event-service

#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`.

✅ Completed by sp

general (1)

S · 50 pts general

#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.

✅ Completed · award pending

qa-form (1)

M · 100 pts qa-form

#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.

✅ Completed · award pending

scoreboard (4)

L · 200 pts scoreboard

#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:

✅ Completed · award pending
L · 200 pts scoreboard

#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.

✅ Completed · award pending
M · 100 pts scoreboard

#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.

✅ Completed by Günther Van der Eecken
S · 50 pts scoreboard

#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…

✅ Completed by Günther Van der Eecken

search-mcp (1)

S · 50 pts search-mcp

#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.

✅ Completed by Günther Van der Eecken

searxng (1)

XS · 25 pts searxng

#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.

✅ Completed by sp

signal-bot (8)

L · 200 pts signal-bot

#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.…

✅ Completed by sac
M · 100 pts signal-bot

#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 `…

✅ Completed by Günther Van der Eecken
M · 100 pts signal-bot

#123 · Rollup retention + outline_url NULL semantics

Two related cleanup items from the onboarding feature's team-review:

✅ Completed · award pending
S · 50 pts signal-bot

#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:…

✅ Completed · award pending
S · 50 pts signal-bot

#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…

✅ Completed by Günther Van der Eecken
S · 50 pts signal-bot

#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…

✅ Completed by Günther Van der Eecken
S · 50 pts signal-bot

#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.

✅ Completed by Günther Van der Eecken
XS · 25 pts signal-bot

#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 "`!…

✅ Completed by Günther Van der Eecken

simplex-bot (17)

L · 200 pts simplex-bot

#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.

✅ Completed · award pending
M · 100 pts simplex-bot

#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.

✅ Completed · award pending
M · 100 pts simplex-bot

#168 · SimpleX !event detail/create/share + !rsvp + reminder prefs

SimpleX has `!events` (list only). Signal has full event interaction against the event-service worker.

✅ Completed · award pending
M · 100 pts simplex-bot

#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.

✅ Completed · award pending
M · 100 pts simplex-bot

#172 · SimpleX !location + !radius coordinate tools

Signal converts coordinates (DD/DMS/MGRS) with map links and finds locations within a radius. SimpleX has neither.

✅ Completed · award pending
M · 100 pts simplex-bot

#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`.

✅ Completed · award pending
M · 100 pts simplex-bot

#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.)

✅ Completed · award pending
M · 100 pts simplex-bot

#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.

✅ Completed · award pending
M · 100 pts simplex-bot

#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).

✅ Completed · award pending
S · 50 pts simplex-bot

#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.

✅ Completed · award pending
S · 50 pts simplex-bot

#157 · SimpleX Forum (Field Notes) commands: !forum !fpost !flatest !fsearch !categories

The Signal bot integrates Field Notes. SimpleX has none of it.

✅ Completed · award pending
S · 50 pts simplex-bot

#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.

✅ Completed · award pending
S · 50 pts simplex-bot

#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.

✅ Completed · award pending
S · 50 pts simplex-bot

#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.)

✅ Completed · award pending
S · 50 pts simplex-bot

#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.

✅ Completed · award pending
S · 50 pts simplex-bot

#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.

✅ Completed · award pending
XS · 25 pts simplex-bot

#159 · SimpleX wiki !wikiindex + !wikistats

SimpleX has wiki search/ask/add but not index (TOC) or stats.

✅ Completed · award pending

tak-service (1)

S · 50 pts tak-service

#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.

✅ Completed by Günther Van der Eecken

task-exchange (1)

S · 50 pts task-exchange

#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.

✅ Completed by sp

teamco (1)

S · 50 pts teamco

#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.

✅ Completed by sp

wiki (39)

M · 100 pts wiki

#52 · Wiki page: Secure Messaging Comparison

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#53 · Wiki page: Tor Network Guide

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#57 · Wiki page: Email Anonymity Guide

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#58 · Wiki page: OPSEC for Activists & Journalists

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#59 · Wiki page: Cryptocurrency Privacy

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#69 · Wiki page: OPSEC Framework

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#70 · Wiki page: Threat Modeling

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#71 · Wiki page: Enterprise Incident Response

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#73 · Wiki page: Red Team Tradecraft

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#74 · Wiki page: Blue Team Tools

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#75 · Wiki page: Physical Security Guide

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#76 · Wiki page: Digital Forensics

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#77 · Wiki page: Malware Analysis

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#79 · Wiki page: Reverse Proxy with nginx

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#80 · Wiki page: Reverse Proxy with Traefik

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#81 · Wiki page: Monitoring with Prometheus + Grafana

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#82 · Wiki page: Logging with ELK or Loki

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#85 · Wiki page: Infrastructure as Code with Terraform

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#88 · Wiki page: PostgreSQL Server Setup

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#89 · Wiki page: Server Hardening

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#90 · Wiki page: Disaster Recovery

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#91 · Wiki page: RAG (Retrieval-Augmented Generation) Patterns

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#92 · Wiki page: LLM Evaluation Frameworks

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#93 · Wiki page: Agentic AI Patterns

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#94 · Wiki page: Local LLM Setup

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#95 · Wiki page: Prompt Engineering Taxonomy

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#97 · Wiki page: Ham Radio Licensing Tiers

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#98 · Wiki page: Meshtastic & Mesh Networking

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
M · 100 pts wiki

#99 · Wiki page: Raspberry Pi Cluster

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#54 · Wiki page: Metadata Hygiene

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#55 · Wiki page: Burner Devices Guide

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#56 · Wiki page: Browser Fingerprinting

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#60 · Wiki page: Mixnets Overview

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#78 · Wiki page: Tracking CVEs and Vulnerabilities

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#83 · Wiki page: Backups with Borg / BorgBase

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#84 · Wiki page: Backups with Restic

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#87 · Wiki page: Load Balancing with HAProxy

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
S · 50 pts wiki

#96 · Wiki page: GMRS Guide

A community-identified content gap on Irregularpedia. Listed at https://irregularpedia.org/community/wanted-pages/.

✅ Completed by Günther Van der Eecken
XS · 25 pts wiki

#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.

✅ Completed by Günther Van der Eecken
↑ Top