Read-only pull mirror of github.com/radd-hq/radd (the canonical repository since RADD-1130). Backup only; nothing is pushed here.
  • Python 62.1%
  • TypeScript 31.2%
  • JavaScript 6.1%
  • CSS 0.4%
  • Dockerfile 0.1%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-13 20:48:51 +03:00
.github [RADD-1136] CODEOWNERS auto-requests the maintainer; PR template stops saying CI skips forks 2026-09-11 20:29:04 +03:00
deploy [RADD-1128] OCI source labels on both images; runner image 1.4.1 2026-09-11 13:49:18 +03:00
docs [RADD-1163] The proof: two browsers co-edit one page, a reader watches, an outside write is refused 2026-09-13 20:47:58 +03:00
examples/acme-notes [RADD-1092] every first-party manifest declares its license 2026-08-15 16:07:37 +03:00
research [RADD-1120] Ledger: C1 (hosted PR checks) was closed by the GitHub move 2026-09-13 17:39:32 +03:00
scripts [RADD-1137] the wiki copy drops each page's first heading — GitHub shows the name as the title 2026-09-12 11:01:56 +03:00
sdk [RADD-922] one shape for what an event is about, and plugins that can act on it 2026-08-06 23:11:02 +03:00
server [RADD-1161] The room sends its awareness snapshot to a newcomer and answers the provider's query 2026-09-13 20:47:58 +03:00
web [RADD-1163] The proof: two browsers co-edit one page, a reader watches, an outside write is refused 2026-09-13 20:47:58 +03:00
.containerignore Initial commit 2026-08-02 12:48:54 +03:00
.dockerignore [RADD-1109] first-contact fixes: the participation surface must not contradict itself 2026-08-17 16:20:19 +03:00
.gitignore [RADD-1107] the provenance scrub missed what has no name in it 2026-08-17 16:17:15 +03:00
BUILD-LOG.md [RADD-1107] the provenance scrub missed what has no name in it 2026-08-17 16:17:15 +03:00
CHANGELOG.md [RADD-1128] the release pipeline moves to GitHub Actions and ghcr.io 2026-09-11 13:26:11 +03:00
CLAUDE.md [RADD-676] The working agreements record spec 122 2026-09-13 20:48:51 +03:00
CODE_OF_CONDUCT.md [RADD-1092] every first-party manifest declares its license 2026-08-15 16:07:37 +03:00
compose.clean.yaml [RADD-1025] two one-command local stacks: your data, or a clean one 2026-08-11 09:46:36 +03:00
compose.dev.yaml Initial commit 2026-08-02 12:48:54 +03:00
compose.yaml [RADD-1078] a stranger's first deployment fails safe, and a reporter has a private channel 2026-08-15 09:55:29 +03:00
Containerfile [RADD-1131] the image no longer ships uv's build cache 2026-09-11 15:15:49 +03:00
LICENSE [RADD-1077] the license the README promised actually exists 2026-08-15 09:54:18 +03:00
PLAN.md [RADD-1107] the provenance scrub missed what has no name in it 2026-08-17 16:17:15 +03:00
README.md [RADD-1138] README that invites: try-it-first, a tour shot from the live instance, contributing up front 2026-09-12 11:23:39 +03:00
SECURITY.md [RADD-1092] every first-party manifest declares its license 2026-08-15 16:07:37 +03:00
THIRD-PARTY-NOTICES.md [RADD-1077] the license the README promised actually exists 2026-08-15 09:54:18 +03:00

Radd

Radd (ردّ, Arabic for "reply") is a self-hosted, AI-native issue tracker and wiki — and an answer to the paywall. AGPL, never open-core: SSO/LDAP with group sync, custom fields, automations, webhooks, SLAs, and the MCP server are all here, free forever — the features other trackers gate behind a subscription tier are the point, not the upsell.

Never open-core. Monetization, if ever, is hosting/support — never features.

Latest release Checks License: AGPL-3.0 Sponsor on GitHub Buy Me a Coffee

The board view of the RADD project on the live instance, dark theme

We'd love your help. Radd is built in the open and used every day to track its own development. If you run a team, a studio, a lab or a side project and want a tracker you actually own, try it, break it, and tell us — or send the fix. Contributing is a short read.

Try it in five minutes

git clone https://github.com/radd-hq/radd.git && cd radd
podman compose up -d        # or docker compose — Postgres + app on :8000
podman compose exec app python -m radd.seed --email you@example.com --password change-me --name "You"

Open http://localhost:8000, sign in, and give it a fictional 26-issue project to click around in:

podman compose exec app python scripts/import_jira.py \
  --file scripts/sample_data/jira_sample.json --email you@example.com --password change-me

That's the whole install: one container plus Postgres. A prebuilt image for every release is at ghcr.io/radd-hq/radd:<version> (anonymous pulls, no latest tag on purpose) — docs/deploy.md covers TLS, backups, S3 storage, upgrades and Kubernetes.

Or just look at the real thing. Radd develops itself in public at https://project.radd-hq.com: the RADD project there is this repository's actual tracker, bugs, timesheets and all. Every screenshot below was taken from it at the current release — nothing staged, nothing invented.

A tour

Tracking work

Boards, lists and planning views are all saved views: a query in SLQ (Radd's query language, with autocomplete) plus a display. Group by anything, pin the ones you live in.

A list view grouped by epic, with progress per epic

Ask instead of query

Type a sentence in the query bar and the answer lands as an SLQ query you can read, edit and save — with a one-line explanation of what it matched.

Ask mode: "open bugs, highest priority first" turned into type = Bug AND category != done ORDER BY priority DESC

An issue, and what AI adds to it

Every issue has the same editor as the wiki (tables, code, diagrams, images), a rail of fields that disables what you can't change instead of erroring later, and a version-control tab fed by GitHub/Forgejo/GitLab. The AI actions are optional and provider-agnostic; Summarize reads the whole issue — description, comments and logged time — and answers beside it.

An issue with its description, rail and the AI summary panel open

The same issue in the light theme

An issue in the light theme

Time, without the spreadsheet

Log time on an issue or on nothing at all; the timesheet rolls it up by issue or by person, day, week or month, and flags outliers against your working day. It has its own query dialect (author = me AND issue.assignee != me).

The timesheet in week view, grouped by issue

A wiki that knows about your issues

Spaces, page trees, version history and restore, page↔issue links, and the same editor. The user and developer guides are written in it — and mirrored to this repo's wiki so you can read them without an account.

A wiki page in the light theme

Dashboards, reports, and a home page that's yours

A delivery dashboard: open items, items awaiting a version, throughput and cumulative flow

More: My Work, the command palette, planning and roadmap views

My Work — requests, due soon, assigned to me

The command palette searching issues and wiki pages at once

A planning view: the flat backlog with priority, assignee and state

The roadmap view with its unscheduled panel

What's in the box

  • Tracking — projects with key-addressed issues (/issues/SKY-1004), epics/subtasks plus a separate type axis, custom fields everywhere, configurable workflows with transition guards, labels, saved views (board/list/planning/roadmap/queue) with a real query language (SLQ, with autocomplete and NL→query), cycles, releases that sweep finished work, dependencies, bulk edit, intake forms, time logging + timesheets, dashboards and reports.
  • Service desk — requesters by email (full loop: mail in, replies out, public tokened forms), SLAs with business hours and priority policies, canned responses with variables, CSAT, KB deflection.
  • Wiki — spaces, page trees, version history + restore, issue↔page links, the same editor as issues (our own chrome over Milkdown/ProseMirror: tables, code blocks, diagrams, resizable images, AI actions).
  • Sign-in — local (argon2id) with TOTP MFA, a Google/OIDC provider registry with per-domain provisioning rules, LDAP/AD direct bind with nested groups; service accounts with scoped API keys.
  • Access control — full-CRUD RBAC with roles grantable per project or globally, field-level read/write grants, per-team internal comments, UI that disables what you cannot do instead of erroring after.
  • AI, optional and provider-agnostic — OpenAI-compatible, Anthropic, or fully local (built-in CPU embeddings; point chat at any vLLM/Ollama): semantic + full-text search fusion, duplicate detection, summarize, natural-language queries, editor actions with reviewable diffs, AI storage and mail routing. Off by default; every feature degrades gracefully.
  • Agents are first-class — an embedded MCP server exposes the whole tracking loop (file, transition, comment, log time, release, sweep) through the same RBAC as humans, with a catalog that adapts to what the caller may do.
  • Integrations — GitHub, Forgejo/Gitea and GitLab (commits/PRs/CI on the issue, releases that close the loop), Alertmanager, Google Chat, email in/out, signed webhooks, a REST API with OpenAPI docs, and a Python SDK for out-of-process extensions.
  • A real importer — connect to Jira Server/DC, download once, map everything explicitly (fields, statuses, users, sprints — unused noise hidden and ignored by default), dry-run, import silently, roll back if you change your mind. IDs survive 1:1.
  • Operations — one container + Postgres; encrypted scheduled backups with verification and a no-app restore path; Helm chart; monitoring page; SBOMs and vulnerability reports published per release.

Contributing

Yes, please — and not only code. The things that help most right now:

  • Use it and say what's wrong. A bug report with the actual symptom is worth more than a guess at the fix. Open an issue here on GitHub; we file it on the live tracker and you'll see it move.
  • Small, sharp pull requests. Fork, branch, [RADD-###] or a full description in the PR, and the same checks that gate main run on your fork (pytest, ruff, tsc, the browser smoke) with a read-only token — so a green run is yours to see before anyone reviews. A maintainer is auto-requested on every PR.
  • Plugins and connectors. Radd is a kernel plus plugins, in-process (Python + a federated React remote) or out-of-process over the event stream (the Apache-2.0 SDK). If your team needs a connector we don't have, that's a great first project — examples/acme-notes/ is the walkthrough.
  • Docs and the rough edges. The user and developer guides are written inside Radd's own wiki; a confusing page is a bug.

docs/contributing.md has the setup, the conventions, the pre-PR gates and the DCO note. docs/modules.md is the map — every module, event type and cross-module edge — and CLAUDE.md is the working agreement the maintainer's agent sessions follow, public because this project is also a demonstration of AI-native development. Be kind: CODE_OF_CONDUCT.md.

Development

podman compose -f compose.dev.yaml up        # dev db (:5456) + live-reloading API on :8000
                                             # (the container runs migrations itself)
podman compose -f compose.dev.yaml exec app \
  python -m radd.seed --email you@example.com --password change-me --name "You"
cd server && uv sync                         # host-side tooling
env RADD_DATABASE_URL=postgresql+psycopg://radd:radd@localhost:5456/radd \
  uv run pytest                              # ~2,500 tests, throwaway radd_test DB
cd ../web && npm install && npm run dev      # SPA on :5173, proxies /api to :8000

The dev stack's Postgres publishes on 5456 (the production-flavor compose uses 5455), so host-run tools need RADD_DATABASE_URL pointed at it, as above. sh scripts/dev-clean.sh brings up a second, empty instance beside your working one — useful for anything about first-run behaviour.

Extending

Three tiers, sorted by distance from the process:

  1. MCP / REST — anything that can speak HTTP automates Radd with a scoped PAT; the MCP catalog is the fastest way for an AI agent.
  2. The Python SDK (sdk/, Apache-2.0) — out-of-process plugins and connectors over the event stream.
  3. In-process plugins — backend modules on the kernel's contribution registries (entities, permissions, MCP tools, SLQ fields) and frontend remotes over module federation (web/packages/plugin-sdk/, Apache-2.0), hot-mounted at runtime. examples/acme-notes/ is the walkthrough.

Community and support

  • Docs: the wiki — user guide, developer guide, release notes with a bill of materials per version.
  • The live instance: https://project.radd-hq.com — the roadmap is the RADD project's backlog.
  • Releases: GitHub releases with notes, SBOMs and vulnerability reports; images on ghcr.io.
  • Sponsoring keeps the public instance running and the maintainer's time on what people ask for — never on unlocking features.
  • Security reports: SECURITY.md — privately, please.

License

The application is AGPL-3.0-only; the extension surfaces are deliberately more permissive so building on Radd never forces your license: both SDKs are Apache-2.0. Out-of-process extensions are entirely your own. In-process plugins import the AGPL kernel, so distribute those under an AGPL-compatible license — or keep them private; the AGPL's obligations attach to distribution and network service, not to writing a plugin for your own instance. Third-party attribution: THIRD-PARTY-NOTICES.md.