-
-
Notifications
You must be signed in to change notification settings - Fork 0
Identity and integrations
These Server settings pages connect Radd to the outside world: AI models, attachment storage, mail, a directory, SSO, and Jira. Only an administrator can open them.
Open Settings → Server → AI to configure model providers, what each model is used for, which AI features are on, and the editor prompt library. See AI features for what each feature does for a user. A feature only runs once its toggle is on and its model role has a provider assigned.

A provider is a server the AI features talk to. Click Add provider, then set:
| Field | What it does |
|---|---|
| Name | A label for this provider. |
| Wire shape | The protocol the server speaks: OpenAI-compatible, Anthropic, or Built-in. OpenAI, vLLM, Ollama, and LiteLLM all speak the OpenAI-compatible shape. Built-in runs a small embedding model on this server's own CPU and only fills the embeddings role. |
| Base URL | The endpoint to call. Leave empty for the wire shape's default endpoint. Not shown for Built-in. |
| API key | The server stores it and never shows it again. Optional — a self-hosted server often needs none. |
| Default model | The model a role uses when it does not pin its own, and the model Test uses. |
Click Test on a provider's row to check that it is reachable.
A feature asks for a role, never a provider directly, so changing a role's provider or model updates every feature that uses it.
| Role | Used by |
|---|---|
| Chat | Editor AI actions, issue summarize, natural language → SLQ, similar-issues rerank, LLM mail routing. |
| Embeddings | Semantic search. |
| Vision | LLM storage routing classification. |
Assign a provider and, optionally, a model name to each role. Embeddings cannot be assigned to an Anthropic provider — Anthropic has no embeddings API, so the interface disables that option, and the server refuses the assignment. A role left unassigned leaves its features dormant even if their toggle is on.
Instance-wide switches. Each toggle only takes effect once the role its feature needs has a provider.
| Setting | What it does | Default |
|---|---|---|
| Editor AI actions | AI writing actions in the rich editor, with streamed results and diff review. Needs the chat role. A user can also opt out per profile. | On |
| Semantic search | Meaning-based retrieval fused into search, similar-issues, and the palette Ask mode. Needs the embeddings role and the pgvector extension. | On |
| LLM storage routing | Lets an AI-type storage routing rule classify an upload. Needs the vision role. While off, a rule of this type falls through to the next rule. | On |
| LLM mail routing | Lets an AI-type mail routing rule select the project a new message opens in. Needs the chat role. While off, a rule of this type falls through to the next rule. | On |
| Issue summarize | The Summarize action on a work item. | On |
| Natural language → SLQ | The Ask-AI bar that turns plain language into an SLQ filter. | On |
| Similar-issues LLM rerank | Rescore duplicate candidates with the chat model and explain why each looks related. Costs a chat-model call each time someone opens similar issues. | Off |
| Stream AI responses | Deliver a summary or similar-issue candidates progressively as the model produces them, instead of all at once. | On |
A preset is a named prompt offered as an action in every user's editor AI menu. The prompt text runs on the server against the selection. A user sees only its name. Click the checkbox to turn a preset on or off, click the pencil icon to edit one, or fill in New preset name and Prompt to add one.
Open Settings → Server → Storage to set where attachment bytes live and which upload lands where.

A host is one place attachment bytes can live — a filesystem root or an S3-compatible endpoint. Click Add host to add one, or Check on a row to probe it live. Only an empty host (no attachments on it) can be removed.
The Delivery column matters for who can read a file:
| Delivery mode | What it means |
|---|---|
| Proxy | Radd streams the bytes itself. Radd's own access control governs every read. |
| Presigned | Radd redirects the browser to fetch the bytes straight from the host, using a short-lived signed URL. Whoever can reach that host over the network can read the file for as long as the URL lasts. |
Turn on User-selectable on a host to let it appear as a choice when a routing rule asks the uploader. Click Make default to set the host every unmatched upload lands on.
Every upload walks the routing chain top-down. The first rule that answers picks the host. Anything unmatched lands on the default host. A rule only narrows where bytes go — it never blocks an upload. Click Add rule to add one, use the arrow icons to reorder the chain, and use a rule's checkbox to turn it on or off without removing it.
| Rule type | How it decides |
|---|---|
| Ask the uploader | Prompts the uploader to select a user-selectable host. |
| Network (CIDR) | Matches the uploader's network address against configured ranges, each mapped to a host. |
| AI classifier | Asks the vision model a question with a fixed set of possible answers, each mapped to a host — optionally restricted to certain content types. Needs the LLM storage routing feature and the vision role. |
The ask-the-uploader prompt appears only when the answer can matter. Before showing it, the server simulates the rest of the chain against the files being uploaded and the uploader's network address. If an earlier rule would already capture those files — a CIDR rule matching this network, or an AI rule covering this content type — the server skips the prompt, and that rule decides instead. If only one user-selectable host would ever answer, the upload goes there directly with no prompt.
Open Settings → Server → Email for where mail arrives, where it is sent from, and which project each message opens in. See The service desk for how an incoming message becomes a work item.

A source is a mailbox Radd reads (Gmail, Outlook, or any IMAP server) or an endpoint it accepts pushes on. A sender is the relay it sends through. Environment variables seed the first rows on an empty instance. After that the server ignores them — the rows on this page are the truth.
Click Add source. Choosing Gmail or Outlook fills in the known connection details — you only supply the address and an app password.
Click Routing (n) on a source to open its ordered routing chain. The server checks rules top to bottom. The first match decides the project and stops the chain. Anything unmatched falls to the source's default project.
| Rule type | Matches on |
|---|---|
| Delivered to (alias) | The address the message was delivered to. |
| From address or domain | The sender's address or @domain. |
| Subject contains | Text in the subject line. |
| AI — decide from the content | The message content, read by the chat model. Needs the LLM mail routing feature. |
Keep the AI rule last. Every rule above it costs nothing to check. Only a message none of them claimed pays for a model call. In the routing dialog, click Test where a message lands to preview which rule would catch a sample message.
Click Add sender to add a relay. One sender can be the default. Click Send test to send a real message and see the Message-ID the relay used. This is the fastest way to confirm a sender actually works.
Open Settings → Server → Directory for LDAP/Active Directory sign-in, automatic user sync, and group import.

| Setting | What it does |
|---|---|
| Server URL | The directory server, for example ldaps://ad.example.com:636. Empty turns LDAP sign-in off. |
| User domain | The UPN suffix people sign in with (user@THIS), and the source for the default search base. |
| Bind account DN | The service account for directory searches and sync. Interactive sign-in never uses it — a person's own sign-in is a direct bind. |
| Bind account password | The server stores it as an instance setting that an administrator can read. |
| Admin groups | Comma-separated directory group names whose members sign in as instance administrators. Empty means the directory carries no opinion on roles. |
A change here applies to the next request — no restart. Each field's default
is the value from its RADD_LDAP_* environment variable.
| Setting | What it does | Default |
|---|---|---|
| User search base DN | Where the server searches for directory users, for sync, imports, and group-member resolution. Empty means the whole directory. | Empty |
| Automatic user sync | Periodically import every directory user under the search base and keep names in sync. Needs the bind account and background workers. | Off |
| Deactivate missing users | Deactivate an account, and revoke its sessions, once it disappears from the directory. The server never touches a local or OIDC account. | Off |
| Skip disabled directory accounts | Exclude an account the directory marks disabled from imports and sync. Turning this off does not lose the history of someone who left — their existing work keeps its attribution either way. | On |
Click Import users… for a one-time picker import, or Sync now to run the sync immediately. Both need the bind account.
| Setting | What it does | Default |
|---|---|---|
| Group search base DN | Where the server searches for directory groups, for the group browser, links, and imports. Empty means the whole directory. | Empty |
| Group sync interval (seconds) | How often a mirrored group re-checks its membership against the directory. A sign-in updates that one person's membership sooner than the interval does. | 3600 (one hour) |
Click Sync groups now to force an immediate check, for example after a known directory change, instead of waiting for the interval.
Below the sync settings, you can browse, import, and link directory groups to Radd teams. This area also shows which groups are mirrored today, and what they grant.
Open Settings → Server → Sign-in for the identity providers people can sign in with, and which email domains may create a new account.

This is the part that matters, so read it precisely:
- Every sign-in through a provider carries a subject id from that provider. The first time a subject id signs in successfully, the server pins it to a Radd user account — permanently. This pairing is called an identity.
- On every later sign-in, the server looks up the account by subject id alone — never by email. A mailbox rename at the provider cannot fork the account into a second one, because the lookup never consults the current email address once an identity exists.
-
The first time a given subject id appears, there is no identity yet.
The server looks for an existing Radd account with a matching email, but
only trusts that match if the provider says the address is verified
(Require a verified email address, on by default — the server must
never trust an unverified address for this). If it matches, the sign-in
joins that account, keeping its role and history, instead of creating
a second one.
- Because this match only ever runs once per subject id, a recycled email address cannot inherit a departed person's account. The new owner of that address presents a different subject id, so the server never links the two.
- If no account matches, the server creates one only if the allowlist permits that email's domain (see below).
Each provider carries its own Allow new accounts from this provider setting and an Allowed sign-up domains list. These gate account creation only. Someone who already has a Radd account can sign in from any domain.
| Allow new accounts | Domains | Result |
|---|---|---|
| Off | (any) | No new accounts through this provider — existing accounts only. |
| On | Empty | No new accounts — nobody can sign up. |
| On | * |
Anyone the provider authenticates may create an account. |
| On | One or more domains | Only an email at a listed domain may create an account. |
A provider's Starting access for new accounts rules give a freshly created account role grants and team memberships, once, at creation. A later sign-in never undoes a change an administrator makes afterward.
A provider's Admin group sync setting reads an instance-admin role from a group claim on every sign-in. A provider with none set carries no opinion on role, so it can never demote an administrator who also signs in elsewhere.
Open Settings → Server → Import from Jira to bring a Jira project into Radd. The wizard runs in order — connect, download once, map every field, dry run, then import — and every stage is a saved object you can revisit.

| Stage | What it does |
|---|---|
| Connections | An admin-managed connection to a Jira Server or Data Center instance, by personal access token or basic auth. |
| Downloads | Reads the chosen project once from Jira into a local cache: issue types, statuses, priorities, link types, and every issue matching a JQL query. A backfill pass then completes any comment, worklog, or change-history list Jira only returned partially. Every later stage works from this cache, offline. |
| Plans | Every mapping decision for one download — which Jira field becomes which Radd field, which status becomes which state, and so on. The wizard hides and ignores an unused value by default. Edit a plan until it is right. |
| Dry run | Builds every operation a real import would make and reports the result, without writing anything. A dry run shares the same code path as a real import — the only difference is whether it commits. |
| Import | Runs the same operations as the dry run, and writes them. Every issue keeps its Jira id. Import activity is silent. It does not notify anyone or fire automation rules. |
| Runs | The history of every dry run, import, and rollback, with progress and any problem it hit. A problem names the mapping that caused it. |
An import can be undone. The server records every row it creates or changes in a ledger, so rollback can replay it in reverse: delete what the import created, and restore what it changed to its prior value.
Rollback offers two scopes:
- Undo the issues only. This keeps the project and its fields, so you can fix a mapping and re-import.
- Undo everything the import provisioned.
A rollback first reports anything a person has touched since the import, so destroying those later edits is a choice, not a surprise.
Mirrored from project.radd-hq.com on 2026-09-12. Documentation is written there; this copy is regenerated by scripts/publish_wiki.py and hand edits do not survive it.
-
Developer guide
- Architecture: the kernel and plugins
- Develop, test and deploy
- Events and consumers
- Permissions and access control
- The MCP server
- The query language for developers
- The REST API and authentication
- Write a backend plugin
- Write a page editor extension
- Write a plugin user interface
- Write an automation node
-
Release notes
- 0.36.4
- 0.36.3
- 0.36.2
- 0.36.1
- 0.36.0
- 0.35.0
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.1
- 0.31.0
- 0.30.0
- 0.29.0
- 0.28.0
- 0.27.0
- 0.26.0
- 0.25.1
- 0.25.0
- 0.24.1
- 0.24.0
- 0.23.1
- 0.23.0
- 0.22.0
- 0.21.0
- 0.20.0
- 0.19.0
- 0.18.1
- 0.18.0
- 0.17.2
- 0.17.1
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.1
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.2
- 0.3.0
- 0.2.0
- 0.1.0
-
User guide
- AI features
- Attachments
- Automations
- Cycles and releases
- Instance settings
- Intake forms and the portal
- Notifications and the inbox
- Personal settings
- Project settings
- Projects
- Reports and dashboards
- Search and the query language
- Start here
- The application window
- The card designer
- The roadmap
- The service desk
- The wiki
- Time logging and the timesheet
- Views
- Work items