# Documentation

**URL:** https://meta.discourse.org/c/documentation/10.md?search=search

[Latest](https://meta.discourse.org/latest.md) · [Categories](https://meta.discourse.org/categories.md) · [Tags](https://meta.discourse.org/tags.md)

---

## [Discourse AI - Embeddings](https://meta.discourse.org/t/discourse-ai-embeddings/259603)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 22\
**Last updated:** [September 25, 2026, 1:23pm UTC](https://meta.discourse.org/t/discourse-ai-embeddings/259603 "2026-09-25T13:23:53Z")

</div>

:bookmark: This topic covers the configuration of the Embeddings module of the Discourse AI plugin. It explains what embeddings are, how they’re used, and how to set them up. :person\_raising\_hand: Required user level: …

---

## [Add localizable strings to themes and theme components](https://meta.discourse.org/t/add-localizable-strings-to-themes-and-theme-components/109867)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 22\
**Last updated:** [August 9, 2024, 7:58pm UTC](https://meta.discourse.org/t/add-localizable-strings-to-themes-and-theme-components/109867 "2024-08-09T19:58:55Z")

</div>

For those looking to add custom languages and translations to a Discourse theme or theme component, they can now include localised strings, which are made available for use in UI components. Translations are stored in th…

---

## [Use a glossary with Discourse AI translations](https://meta.discourse.org/t/use-a-glossary-with-discourse-ai-translations/412433)

<div class="topic-metadata">

**Author:** [@nat](https://meta.discourse.org/u/nat)\
**Replies:** 0\
**Last updated:** [September 15, 2026, 7:34am UTC](https://meta.discourse.org/t/use-a-glossary-with-discourse-ai-translations/412433 "2026-09-15T07:34:21Z")

</div>

A translation glossary gives your AI translators the preferred names for products, features, and terms used in your community. For example, you can specify that a feature called “Launchpad” should be translated as “Start…

---

## [Configure an S3 compatible object storage provider for uploads](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 267\
**Last updated:** [September 15, 2026, 1:04am UTC](https://meta.discourse.org/t/configure-an-s3-compatible-object-storage-provider-for-uploads/148916 "2026-09-15T01:04:57Z")

</div>

:information\_source: This topic covers how to configure some common S3 compatible Object Storage providers (S3 clones). See Set up file and image uploads to S3 for more details about Amazon AWS S3 configuration, whic…

---

## [Developer's guide to Markdown extensions](https://meta.discourse.org/t/developers-guide-to-markdown-extensions/66023)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 1\
**Last updated:** [June 1, 2026, 8:45am UTC](https://meta.discourse.org/t/developers-guide-to-markdown-extensions/66023 "2026-06-01T08:45:53Z")

</div>

Discourse uses a Markdown engine called Markdown-it. Here are some dev notes that will help you either fix bugs in core or create your new plugins. The Basics Discourse only contains a few helpers on top of the engine,…

---

## [Theme Developer Tutorial: 6. Using the JS API](https://meta.discourse.org/t/theme-developer-tutorial-6-using-the-js-api/357801)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 3\
**Last updated:** [April 14, 2025, 11:16pm UTC](https://meta.discourse.org/t/theme-developer-tutorial-6-using-the-js-api/357801 "2025-04-14T23:16:42Z")

</div>

In the last couple of chapters, we’ve explored how to use the JavaScript API to render content into outlets. renderInOutlet is the most commonly-used API, but there are a ton more! In this chapter we’ll try out a few of …

---

## [Add settings to your Discourse theme](https://meta.discourse.org/t/add-settings-to-your-discourse-theme/82557)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 6\
**Last updated:** [July 8, 2025, 7:43pm UTC](https://meta.discourse.org/t/add-settings-to-your-discourse-theme/82557 "2025-07-08T19:43:17Z")

</div>

Discourse has the ability for themes to have “settings” that can be added by theme developers to allow site owners to customize themes through UI without having to change any line of code and worry about losing their cha…

---

## [Using the DModal API to render Modal windows (aka popups/dialogs) in Discourse](https://meta.discourse.org/t/using-the-dmodal-api-to-render-modal-windows-aka-popups-dialogs-in-discourse/268304)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 0\
**Last updated:** [July 3, 2023, 9:52am UTC](https://meta.discourse.org/t/using-the-dmodal-api-to-render-modal-windows-aka-popups-dialogs-in-discourse/268304 "2023-07-03T09:52:06Z")

</div>

Discourse 3.1.0.beta6 ships with a brand new \<DModal\> component-based API. DModal is part of the UI kit and is imported from discourse/ui-kit/d-modal. :information\_source: This supersedes the old controller-based API, …

---

## [The UI kit of shared Discourse components, helpers, and modifiers](https://meta.discourse.org/t/the-ui-kit-of-shared-discourse-components-helpers-and-modifiers/411319)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 0\
**Last updated:** [August 31, 2026, 5:34pm UTC](https://meta.discourse.org/t/the-ui-kit-of-shared-discourse-components-helpers-and-modifiers/411319 "2026-08-31T17:34:16Z")

</div>

ui-kit is the layer of reusable, domain-free building blocks that core, plugins, and themes compose their interfaces from. It lives under frontend/discourse/app/ui-kit/ and ships three kinds of primitive: Components:…

---

## [Install Discourse on Windows for development](https://meta.discourse.org/t/install-discourse-on-windows-for-development/75149)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 16\
**Last updated:** [April 22, 2026, 10:18am UTC](https://meta.discourse.org/t/install-discourse-on-windows-for-development/75149 "2026-04-22T10:18:42Z")

</div>

:information\_source: This tutorial has been tested on Windows 10 and 11. To set up a development environment for Discourse on Windows, you can do it using Windows Subsystem for Linux feature. This setup requires the …

---

## [Install Discourse on Ubuntu or Debian for Development](https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 83\
**Last updated:** [June 22, 2025, 12:31am UTC](https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727 "2025-06-22T00:31:14Z")

</div>

:warning: This guide covers installation instructions in a development environment. For a production guide see: Install Discourse in production with the official supported instructions So you want to set up Discour…

---

## [Install Discourse on macOS for development](https://meta.discourse.org/t/install-discourse-on-macos-for-development/15772)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 102\
**Last updated:** [April 24, 2026, 6:38pm UTC](https://meta.discourse.org/t/install-discourse-on-macos-for-development/15772 "2026-04-24T18:38:20Z")

</div>

:warning: This guide covers installation instructions for a macOS development environment, for production guides see: Install Discourse in production with the official supported instructions So you want to set up Disc…

---

## [Available settings within the category edit page](https://meta.discourse.org/t/available-settings-within-the-category-edit-page/248435)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 1\
**Last updated:** [May 7, 2026, 1:49pm UTC](https://meta.discourse.org/t/available-settings-within-the-category-edit-page/248435 "2026-05-07T13:49:19Z")

</div>

:bookmark: This is a reference guide on the settings for parent and child categories. :person\_raising\_hand: Required user level: Administrator (or moderator if the moderators manage categories setting is enabled) The…

---

## [Using Transformers to customize client-side values and behavior](https://meta.discourse.org/t/using-transformers-to-customize-client-side-values-and-behavior/349954)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 2\
**Last updated:** [September 5, 2026, 2:53am UTC](https://meta.discourse.org/t/using-transformers-to-customize-client-side-values-and-behavior/349954 "2026-09-05T02:53:05Z")

</div>

Discourse core includes a number of “transformer” hooks which can be used to customize client behavior. These fall into two categories: Value Transformers take an output from Discourse core, and optionally modify it, …

---

## [Enabling native LLMs.txt support in Discourse](https://meta.discourse.org/t/enabling-native-llms-txt-support-in-discourse/383088)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 3\
**Last updated:** [September 2, 2026, 6:18pm UTC](https://meta.discourse.org/t/enabling-native-llms-txt-support-in-discourse/383088 "2026-09-02T18:18:02Z")

</div>

:bookmark: This guide explains how to make your community discoverable and usable by AI agents and LLM crawlers through the llms.txt standard. It covers both the automatically generated default document and custom uploa…

---

## [Discourse toolkit to render forms](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 28\
**Last updated:** [December 23, 2025, 5:55pm UTC](https://meta.discourse.org/t/discourse-toolkit-to-render-forms/326439 "2025-12-23T17:55:56Z")

</div>

Basic Usage FormKit exposes a single component as its public API: \<Form /\>. All other elements are yielded as contextual components, modifiers, or plain data. Every form is composed of one or multiple fields, represen…

---

## [JavaScript type hinting & validation (typescript)](https://meta.discourse.org/t/javascript-type-hinting-validation-typescript/395136)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 0\
**Last updated:** [February 4, 2026, 10:38am UTC](https://meta.discourse.org/t/javascript-type-hinting-validation-typescript/395136 "2026-02-04T10:38:25Z")

</div>

Discourse ships type information for its JavaScript code. This can provide inline documentation, autocomplete, and other useful IDE features. It can also be used for some basic type validation, using the @ts-check direct…

---

## [AppEvents Triggers Reference](https://meta.discourse.org/t/appevents-triggers-reference/338465)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 0\
**Last updated:** [November 26, 2024, 10:20am UTC](https://meta.discourse.org/t/appevents-triggers-reference/338465 "2024-11-26T10:20:08Z")

</div>

AppEvents The AppEvent system in Discourse provides a pub/sub mechanism for handling UI updates and component interactions - and these events are triggered via calls of AppEvent.trigger. This topic consolidates a list…

---

## [Write end-to-end system specs for the Discourse user interface](https://meta.discourse.org/t/write-end-to-end-system-specs-for-the-discourse-user-interface/325937)

<div class="topic-metadata">

**Author:** [@system](https://meta.discourse.org/u/system)\
**Replies:** 3\
**Last updated:** [August 28, 2025, 2:51pm UTC](https://meta.discourse.org/t/write-end-to-end-system-specs-for-the-discourse-user-interface/325937 "2025-08-28T14:51:13Z")

</div>

Background Rails system specs are used to simulate the actions of a real user using the app in a browser. We use the Playwright ruby driver which is becoming an industry standard. The tests run locally and in CI out of t…

---

## [Using Plugin Outlet Connectors from a Theme or Plugin](https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 12\
**Last updated:** [October 14, 2024, 10:37am UTC](https://meta.discourse.org/t/using-plugin-outlet-connectors-from-a-theme-or-plugin/32727 "2024-10-14T10:37:16Z")

</div>

Discourse includes hundreds of Plugin Outlets which can be used to inject new content or replace existing contend in the Discourse UI. ‘Outlet arguments’ are made available so that content can be customized based on the …

---

## [Discourse AI - Spam detection](https://meta.discourse.org/t/discourse-ai-spam-detection/343541)

<div class="topic-metadata">

**Author:** [@sam](https://meta.discourse.org/u/sam)\
**Replies:** 31\
**Last updated:** [August 28, 2026, 1:39am UTC](https://meta.discourse.org/t/discourse-ai-spam-detection/343541 "2026-08-28T01:39:29Z")

</div>

:bookmark: This guide explains how to configure and use Discourse AI’s spam detection feature, including the setup process, scanning criteria, classification logic, customizations, and contrasts with AI triage. …

---

## [What is CDCK/MoM?](https://meta.discourse.org/t/what-is-cdck-mom/407844)

<div class="topic-metadata">

**Author:** [@Falco](https://meta.discourse.org/u/Falco)\
**Replies:** 0\
**Last updated:** [July 16, 2026, 10:41pm UTC](https://meta.discourse.org/t/what-is-cdck-mom/407844 "2026-07-16T22:41:14Z")

</div>

If your Discourse site is hosted by us, you may have noticed an LLM called either CDCK Hosted Model or CDCK/MoM in your AI settings, powering features like summarization, AI search, and more. This topic explains what it …

---

## [Creating and managing calendars](https://meta.discourse.org/t/creating-and-managing-calendars/283773)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 17\
**Last updated:** [August 14, 2026, 8:52pm UTC](https://meta.discourse.org/t/creating-and-managing-calendars/283773 "2026-08-14T20:52:44Z")

</div>

:bookmark: This guide explains how to create and manage calendars in Discourse using the Calendar (and Event) plugin. :person\_raising\_hand: Required user level: All users Calendars are a powerful feature in Discourse…

---

## [User API keys specification](https://meta.discourse.org/t/user-api-keys-specification/48536)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 69\
**Last updated:** [September 22, 2025, 10:30am UTC](https://meta.discourse.org/t/user-api-keys-specification/48536 "2025-09-22T10:30:43Z")

</div>

Discourse contains a system for generating API keys per user if a very specific protocol is followed. This feature facilitates “application” access to Discourse instances without needing to involve moderators. High le…

---

## [Content Localization - Manual and Automatic with Discourse AI](https://meta.discourse.org/t/content-localization-manual-and-automatic-with-discourse-ai/370969)

<div class="topic-metadata">

**Author:** [@nat](https://meta.discourse.org/u/nat)\
**Replies:** 54\
**Last updated:** [August 7, 2026, 9:23am UTC](https://meta.discourse.org/t/content-localization-manual-and-automatic-with-discourse-ai/370969 "2026-08-07T09:23:57Z")

</div>

In this topic, we will walk you through the Content Localization features and how to enable them. The features are split into two parts: What is available by default in Discourse; and Discourse AI for automatic translati…

---

## [Set up Gemini API Keys for Discourse AI](https://meta.discourse.org/t/set-up-gemini-api-keys-for-discourse-ai/320688)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 2\
**Last updated:** [August 6, 2026, 2:03am UTC](https://meta.discourse.org/t/set-up-gemini-api-keys-for-discourse-ai/320688 "2026-08-06T02:03:34Z")

</div>

How to Set Up Gemini API Keys for Discourse AI Introduction This topic covers how to set up your Google Gemini API key with an existing Google Cloud account project. Gemini is not a free service, and therefore, you …

---

## [Switching between Discourse release channels / versions](https://meta.discourse.org/t/switching-between-discourse-release-channels-versions/17014)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 12\
**Last updated:** [August 3, 2026, 1:09pm UTC](https://meta.discourse.org/t/switching-between-discourse-release-channels-versions/17014 "2026-08-03T13:09:32Z")

</div>

:bookmark: This guide explains how to configure the release channel of your Discourse instance. :person\_raising\_hand: Required user level: System Administrator :warning: Console access is required. Managing your Dis…

---

## [Install the Discourse Theme CLI console app to help you build themes](https://meta.discourse.org/t/install-the-discourse-theme-cli-console-app-to-help-you-build-themes/82950)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 16\
**Last updated:** [July 30, 2026, 8:47am UTC](https://meta.discourse.org/t/install-the-discourse-theme-cli-console-app-to-help-you-build-themes/82950 "2026-07-30T08:47:18Z")

</div>

The Discourse Theme CLI is a ruby gem that allows you to use your editor of choice when developing Discourse themes and theme components. As you save files the CLI will update the remote theme or component and changes t…

---

## [Discourse AI - Ask Discourse](https://meta.discourse.org/t/discourse-ai-ask-discourse/346085)

<div class="topic-metadata">

**Author:** [@Saif](https://meta.discourse.org/u/Saif)\
**Replies:** 10\
**Last updated:** [July 25, 2026, 4:00pm UTC](https://meta.discourse.org/t/discourse-ai-ask-discourse/346085 "2026-07-25T16:00:26Z")

</div>

:bookmark: This guide explains how to enable and use Ask Discourse. :person\_raising\_hand: Required user level: Administrator ask.discourse.com houses our AI agent that can search through our documentation and answer …

---

## [Customize text in Discourse](https://meta.discourse.org/t/customize-text-in-discourse/36092)

<div class="topic-metadata">

**Author:** [@Discourse](https://meta.discourse.org/u/Discourse)\
**Replies:** 12\
**Last updated:** [July 25, 2026, 11:38am UTC](https://meta.discourse.org/t/customize-text-in-discourse/36092 "2026-07-25T11:38:54Z")

</div>

:bookmark: This is a guide for customizing text in Discourse via the admin interface, enabling changes to various UI elements. :person\_raising\_hand: Required user level: Administrator In Discourse, you can customize …

[Next page](https://meta.discourse.org/c/documentation/10.md?page=1&search=search)
