Article Summary:
Building an AI-powered editorial assistant for Fedora Community Blog and Fedora Magazine using RamaLama RAG — a tool that helps new authors check whether their draft articles meet editorial standards before submission.
Article Description:
As part of my Outreachy internship with the Fedora Project and under the mentorship of Justin Wheeler, Carol Chen, and Dominik Kwakwa, I built a Retrieval-Augmented Generation (RAG) pipeline using RamaLama, enhanced on the Fedora Community Blog and Fedora Magazine writing guidelines, and past published articles. The result is an editorial assistant that reviewers and new authors can use to check draft articles against Fedora’s editorial standards — flagging missing required elements, such as featured images and Read More tags, checking tone, structure, technical accuracy, and topic scope.
The article would cover:
The motivation behind the project: making Fedora’s editorial knowledge accessible to new contributors
How the pipeline works: fetching articles via the WordPress REST API, processing them with Docling, building a vector store with RamaLama RAG, and querying it with open-weight models (Qwen, Gemma, Granite)
What I learned: the impact of chunking strategy on retrieval quality, why corpus quality matters as much as model choice, and what it means to run this entirely locally on open-source tooling
A working Streamlit GUI that lets authors paste a draft and get instant editorial feedback
How others in the Fedora community could use or extend the tool.
The project is fully open source under Apache 2.0:
We, my mentors and I, believe this would be useful to Fedora CommBlog and Magazine readers who are contributors, authors, or editors — and it directly demonstrates the potential of local, open-weight AI tooling within the Fedora ecosystem.
So, @gtfrans2re has been working on this mini-project as a starting point in his internship. We decided to have Gonothi look at the Fedora Community Blog and Fedora Magazine as a possible tool to demonstrate some of the concepts of doing RAG training with available data and documentation we have in Fedora (thanks to our amazing editor team leaving a good documentation trail).
This article is not urgent and I also recognize we have a lot of other content already in the pipeline for Flock next week. It would be nice if we could get this article queued up for publishing sometime after Flock. It will also leave some breathing time for more editor review and getting it prepped for publishing sometime late next week.
Does this make sense? I hope it adds some more useful context, @glb and @rlengland. I had also asked Gonothi to share this tool with you for feedback, as our editors, but perhaps the request for feedback got tangled with the request for publishing the article too. This is a novel tool, and we are not planning to “deploy” this anywhere, but it might be something we can develop further as a service or tool for Fedora Magazine authors in the future.
We are in a stand-up right now, where Gonothi is showing us some of his recent work to set up a good local dev environment guide in the repo so anyone can run this tool locally on their own machine.
Thanks for the context, @jflory7 — that all makes sense. Queuing the article for some time after Flock works well for me, and the extra time for editor review and prep is welcome.
To untangle the two requests: the main ask for @glb and @rlengland right now is feedback on the tool as editors, separate from the article timeline. I’ve just added a local dev environment guide to the repo so anyone can run it on their own machine, plus a quickstart for using the pre-built images directly without the full pipeline:
The first issue that I encountered was that I could not paste a multi-line prompt at the Ramalama command prompt. A web search indicated that adding \ at the end of each line should allow pasting multi-line content, but now it is failing with some error about not being able to connect to http://host.containers.internal:8082/v1/embeddings.
$ ramalama run --rag quay.io/gtfrans2re/fedora-magazine-rag hf://ibm-granite/granite-4.0-micro-GGUF
Downloading quay.io/gtfrans2re/fedora-magazine-rag:latest ...
Trying to pull quay.io/gtfrans2re/fedora-magazine-rag:latest...
Getting image source signatures
Copying blob e6dfc0951dae done |
Copying config a6219ab058 done |
Writing manifest to image destination
Trying to pull quay.io/ramalama/ramalama:0.21...
Getting image source signatures
Copying blob d2563a6ddaa6 done |
Copying blob dfa92e469035 done |
Copying config 9dd463822e done |
Writing manifest to image destination
22b49a818f30be72162832c7983aff1cc37c20f81d11c724504c97f8ce518077
Trying to pull quay.io/ramalama/ramalama-rag:0.21...
b5e08bbb3bb084f0747c078ba1cce592c3bd4b889451195183eb21173a394aef
Getting image source signatures
Copying blob 1a5393174539 done |
Copying blob dfa92e469035 skipped: already exists
Copying config 747582bf8a done |
Writing manifest to image destination
920d32f70806b27937078f8204531e12c1da2bb295528850d1882d5669e0b8cf
🦭 > What is one plus one?
One plus one equals two. This is a basic mathematical operation of addition, where two single units are combined to form a total of two units.
🦭 > What is one plus one?
One plus one equals two. This is a simple arithmetic operation where two units are added together, resulting in a total of two units.
🦭 > Review this draft against the Fedora Magazine editorial guidelines. Check tone, structure, required elements (featured image, Read More tag, tags, category), and give an overall verdict: READY TO PUBLISH or NEEDS REVISION. \
🦭 > --- ARTICLE --- \
🦭 > Title: Enable Hibernation on Fedora 43 \
🦭 > \
🦭 > <!-- wp:paragraph --> \
🦭 > <p>In early 2025, Fedora Magazine published a guide on <a href="https://fedoramagazine.org/update-on-hibernation-in-fedora-workstation/">enabling hibernation in Fedora Workstation</a>. The article walked through creating a swap file and configuring the system to save its state to disk. For many users, though, following the instructions ended with a cryptic error message instead of a peacefully sleeping machine. The comment section told the story — dozens of readers hitting the same issues.</p> \
🦭 > <!-- /wp:paragraph --> \
...
🦭 > <!-- wp:paragraph --> \
🦭 > <p>- [btrfs Documentation — Swap File Support](https://btrfs.readthedocs.io/en/latest/Swapfile.html)<a href="https://gist.github.com/Cryptophobia/e304a04fcb156dd0959fbba6b7a26106#enabling-hibernation-on-fedora-43"></a></p> \
🦭 > <!-- /wp:paragraph -->
HTTP 500: {"detail":"Embedding server request failed: 500, message='Internal Server Error', url='http://host.containers.internal:8082/v1/embeddings'"}
🦭 > What is one plus one?
Error: could not connect to: http://127.0.0.1:8080/v1/chat/completions (<urlopen error [Errno 111] Connection refused>)
🦭 >
The Podman container appears to be running and listening on that port.
$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55115601515b quay.io/ramalama/ramalama:0.21 llama-server --ho... 4 minutes ago Up 4 minutes 0.0.0.0:8082->8082/tcp ramalama-S5UcrfYy95
However, after the http://host.containers.internal:8082/v1/embeddings error, I can no longer enter queries. The only way I’ve found to get it going again is to run podman system resetand reboot my PC. You will need to solve the problem with entering multi-line prompts before I can attempt further tests.
Thanks for the detailed report, @glb. This is really helpful, especially the part about the multi-line paste and the connection to embeddings failing. I’ll look into the host.containers.internal:8082/v1/embeddings error and the multi-line prompt handling at the CLI, and I’ll ping you to test again once I have a fix.
In the meantime, the raw ramalama run CLI isn’t really the intended entry point for end users. The goal here is the Streamlit app, which wraps all of this in a simple UI where you paste a draft and click review, no command line or multi-line prompt wrangling needed. Did you get a chance to try the app (and/or the notebook)? That’s the path I’d love feedback on, since the end goal is something anyone can use, whether they’re technical or not.
The quickstart for running the app against the pre-built Quay images (no pipeline needed) is here: docs/QUICKSTART.md. Happy to walk through the setup if it helps. Thanks again for digging into this!