# Config as code options for Discourse?

**URL:** <https://meta.discourse.org/t/config-as-code-options-for-discourse/279036>\
**Category:** Feature\
**Tags:** migrations-tooling\
**Created:** [September 14, 2023, 5:05pm UTC](https://meta.discourse.org/t/config-as-code-options-for-discourse/279036 "2023-09-14T17:05:31Z")\
**Posts on this page:** 1\
**Showing post:** 13

<div class="post-metadata">

**Author:** ![mbauman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mbauman/32/139835_2.png) [@mbauman](https://meta.discourse.org/u/mbauman)\
**Post date:** [September 24, 2026, 4:26pm UTC](https://meta.discourse.org/t/config-as-code-options-for-discourse/279036/13 "2026-09-24T16:26:47Z")

</div>

I’ve resurrected the work I mentioned here last year with the help of the ever-improving robot:

> **[GitHub - JuliaDiscourse/DiscourseAdmin.jl](https://github.com/JuliaDiscourse/DiscourseAdmin.jl)**
>
> Contribute to JuliaDiscourse/DiscourseAdmin.jl development by creating an account on GitHub.

It’s in Julia (of course), but there’s really not much code here at all thanks to Discourse’s (largely) straightforward admin APIs. It’s two GitHub actions that hit a few endpoints to support:

- Site text customization
- First-post-of-a-topic editing (targeting Guidelines, TOS & privacy, but is extensible)
- Moderation flags

The goal is to let our open source community use the open source tooling and consensus processes they’re familiar with to help us define our collective norms.

You do really need to take care of that admin API key of course… and also want to make sure you don’t accidentally enable a new endpoint (by merging to `main`) that could reveal some sensitive setting on its first sync.

---

_[View the full topic](https://meta.discourse.org/t/config-as-code-options-for-discourse/279036)._
