Open Source Ruby on Rails Apps Worth Reading | LlamaPress AI
LlamaPress
LlamaPress Blog

Open source Ruby on Rails apps worth reading, and what each one teaches

Discourse, Mastodon, Huginn and Chatwoot are the open source Rails apps worth reading. Seventeen repos with license, star count, activity and one lesson each.

Back to all articles
Kody Kendall

Written by

Kody Kendall

AI & Software Engineer | Creator of the Leonardo Coding Agent

Updated September 2026

The open source Ruby on Rails apps worth reading are Mastodon, Huginn, Discourse and Chatwoot at the large end, and Lobsters, Publify and Alchemy CMS at the small end. All seven pushed code within days of 2026-09-04, the date every number here was read from the GitHub API. Licenses vary more than most lists admit. Huginn is MIT, Discourse is GPL-2.0, Mastodon is AGPL-3.0, and Chatwoot carries a license GitHub could not classify. Two projects still on old lists are finished: hotwire-rails is archived, and Sharetribe calls itself unmaintained.

In short

  • Four large, active Rails codebases: Mastodon (AGPL-3.0, 50,265 stars), Huginn (MIT, 49,895), Discourse (GPL-2.0, 47,790) and Chatwoot (36,497). Counts read on 2026-09-04.
  • Two projects on most list pages are finished. hotwired/hotwire-rails is archived, last pushed 2021-12-20. Sharetribe Go calls itself unmaintained.
  • The license decides what a fork costs. MIT and BSD-3-Clause let your changes stay private. GPL-2.0 and AGPL-3.0 do not, and AGPL-3.0 reaches software you run as a service.
  • Reading a Rails app teaches you the shape of one. Running one for your business is a standing job. LlamaPress does that part.

I read other people's Rails code most weeks. Every customer app we ship runs on Ruby on Rails, and we operate a fleet of production Rails apps for our customers. We also maintain LlamaBot, an open source Ruby on Rails AI framework, with the llama_bot_rails gem. The list below carries license and activity date, because a list without those columns is how people clone a dead repo.

What are the best open source Ruby on Rails apps?

The best open source Ruby on Rails apps to read are Mastodon, Huginn, Discourse and Chatwoot, in that order by GitHub stars on 2026-09-04. All four pushed code that day. Each is a complete product rather than a demo, which is the reason to read them. The bugs, migrations and compromises are real.

The largest Rails codebase on GitHub is Rails itself: rails/rails, MIT licensed, 58,752 stars on 2026-09-04. Reading the framework is a different exercise from reading an app built on it. Scale is also a poor guide to where to start, because a 47,000-star product is a hard first clone.

A screen full of source code, the kind of open source Ruby on Rails repository a developer clones and reads
Photo by Nick Karvounis on Unsplash

Which open source Rails projects should you bookmark?

Every value below was read from the GitHub API on 2026-09-04. Counts and push dates drift, so treat them as a dated snapshot. Two rows are marked because those projects are finished. Five say "read the LICENSE file" because GitHub's detector could not classify what it found.

Project What it is License Stars Last push Repo
Mastodon Self-hosted, federated microblogging community AGPL-3.0 50,265 2026-09-04 mastodon/mastodon
Huginn Agents that monitor and act on your behalf MIT 49,895 2026-09-04 huginn/huginn
Discourse Platform for community discussion GPL-2.0 47,790 2026-09-04 discourse/discourse
Chatwoot Live chat, email support and omni-channel desk Read the LICENSE file 36,497 2026-09-04 chatwoot/chatwoot
Forem Community platform, the software behind dev.to AGPL-3.0 22,774 2026-09-04 forem/forem
Spree Ecommerce platform for B2B, marketplace and enterprise BSD-3-Clause 15,666 2026-09-04 spree/spree
Diaspora Privacy-aware, distributed social network AGPL-3.0 13,650 2026-07-28 diaspora/diaspora
Canvas LMS Learning management system by Instructure AGPL-3.0 6,794 2026-04-30 instructure/canvas-lms
Redmine Project management and issue tracking. The GitHub repo is a mirror of the official SVN source Read the LICENSE file 6,029 2026-09-04 redmine/redmine
Solidus Ecommerce framework BSD-3-Clause 5,324 2026-09-04 solidusio/solidus
Lobsters Link aggregation and discussion community software Read the LICENSE file 4,822 2026-09-04 lobsters/lobsters
Publify Self-hosted web publishing platform MIT 1,854 2026-08-31 publify/publify
Open Food Network Connects suppliers, distributors and consumers trading local produce AGPL-3.0 1,278 2026-09-04 openfoodfoundation/openfoodnetwork
Alchemy CMS Content management system built on Rails BSD-3-Clause 906 2026-09-04 AlchemyCMS/alchemy_cms
LlamaBot Our own open source Rails AI framework, paired with the llama_bot_rails gem AGPL-3.0 on GitHub 240 2026-09-01 KodyKendall/LlamaBot
Sharetribe Go (dormant) Marketplace software. The repo's own description says it is no longer actively maintained Read the LICENSE file 2,445 2026-05-11 sharetribe/sharetribe
hotwire-rails (archived) Bridge gem for adding Hotwire to older Rails apps. Modern Rails ships Turbo and Stimulus without it MIT 963 2021-12-20 hotwired/hotwire-rails

Source for every row: the GitHub REST API, read 2026-09-04. The LlamaBot row carries a nuance worth copying. The llama_bot_rails gem is MIT on RubyGems, while the repo it ships from is AGPL-3.0. A package and its repo can differ.

What does each of the big Rails codebases teach you?

Each project below teaches one thing a tutorial cannot. Open the repo in your browser, go to the file named, and read it before cloning. Every path here is a Rails convention.

Discourse: read config/routes.rb first

Discourse is GPL-2.0, had 47,790 stars on 2026-09-04, and pushed code that day. Open config/routes.rb first. In an app that size the routes file is the product map: every screen, every API endpoint, every admin surface, in one list. Ten minutes there tells you more about scope than an hour in the models.

Mastodon: read db/schema.rb, then read the license twice

Mastodon is AGPL-3.0, had 50,265 stars, and pushed code on 2026-09-04. Open db/schema.rb and count the tables. The schema is the honest version of the feature list. The license lesson matters more to a business. AGPL-3.0 extends copyleft to network use, so hosting a modified copy for other people can trigger obligations GPL-2.0 would not.

Huginn: read the Gemfile

Huginn is MIT, had 49,895 stars, and pushed code on 2026-09-04. It exists to "create agents that monitor and act on your behalf." Most of its work runs on a schedule rather than in a web request. Open the Gemfile and find the job-processing gem. A Gemfile is a bill of materials, and it predicts your operations burden before you run a migration.

Chatwoot: read the LICENSE file before you plan anything

Chatwoot had 36,497 stars on 2026-09-04 and pushed code that day, so it is very much alive. GitHub's license detector could not classify its LICENSE file, which is why this page names no license for it. Popularity is not evidence of a permissive license. A star count says nothing about whether you may ship a modified copy.

Redmine: check where the real source lives

Redmine had 6,029 stars on 2026-09-04, and its GitHub repo describes itself as a mirror of the official Redmine SVN source. Before you plan a patch or a tracked fork, find out where the project's source of truth lives. A mirror accepts your clone and ignores your pull request.

The rest of the table rewards narrower reading. Spree and Solidus are BSD-3-Clause ecommerce projects that both pushed code on 2026-09-04. Read their models back to back to see how much of that domain every store shares. Forem, at 22,774 stars, is the software behind dev.to.

Which small Rails codebases should you read first?

Start with a codebase you can hold in your head, which rules out all four big apps above. Discourse, Mastodon, Chatwoot and Forem show how a Rails app is organised at scale. They make poor first clones, because your first day goes on setup.

Four smaller full apps are better first reads. Alchemy CMS (BSD-3-Clause, 906 stars), Open Food Network (AGPL-3.0, 1,278), Publify (MIT, 1,854) and Lobsters (4,822, license unclassified) all pushed code within a week of 2026-09-04.

Two libraries are worth reading even sooner. Devise (MIT, 24,357 stars, pushed 2026-06-22) is the authentication solution most Rails apps use. Pundit (MIT, 8,521 stars, pushed 2026-08-28) calls itself "minimal authorization through OO design and pure Ruby classes," and reads end to end in an evening. Calling those good first reads is my assessment, not their claim.

How do you run one of these Rails apps locally?

Clone the repo and follow its README, because the setup command differs by project and guessing wastes an afternoon.

  1. Read the README end to end. Setup lives there, and so do the parts that will stop you, such as a required search engine or an API key.
  2. Check the Ruby version the project pins. Ruby's current major series is 4.0, with 4.0.6 released 2026-07-14. The 3.4 branch is maintained in parallel, and 3.3 and 3.2 get security-only patches, per the Ruby releases page.
  3. Check the Rails version in the Gemfile. Current stable is the 8.1 series, with 8.1.3.1 released 2026-07-29. Rails 7.2, from August 2024, made Ruby 3.1 the minimum.
  4. Use the project's Docker or dev container setup if it ships one. Rails 7.2 added dev container files to new apps by default, so a recent project likely has one.
  5. Expect a database and possibly Redis. Rails 8 ships Solid Cache, Solid Queue and Solid Cable, designed to drop Redis as a required dependency. Older apps here predate that.
  6. Point it at throwaway data. Never run an unfamiliar codebase against a database you care about.

Starting from zero instead of someone else's repo? Our companion page walks the path in order: how to create a website with Ruby on Rails.

What do MIT, AGPL and a dual CE and EE license mean for a business?

The license controls whether you may keep your changes private. None of what follows is legal advice, and a commercial fork deserves a lawyer.

  • MIT. Do almost anything, including selling a modified version, as long as you keep the copyright notice. Your changes stay private.
  • BSD-3-Clause. The same permissive deal, plus a clause saying you may not use the project's name to endorse your product. MIT with a marketing restriction.
  • GPL-2.0. If you distribute a modified version, you must offer its source under the same terms. Running a modified copy for your own staff is generally not distribution.
  • AGPL-3.0. Extends that obligation to people who use the software over a network, closing the hosting gap GPL-2.0 leaves open. Offering a modified copy as a service is the case it targets.
  • Unclassified, shown by GitHub as NOASSERTION. GitHub found a LICENSE file and could not match it to a standard license. The project is not unlicensed. Read the file.
  • Dual Community Edition and Enterprise Edition. GitLab is the example most people know. Its Community Edition is open source and its Enterprise Edition adds proprietary features, so "GitLab is open source" is true of one edition only. Its engineering handbook calls the product a "large monolithic application, using Ruby on Rails framework."

A permissive license makes a fork cheap on day one. It says nothing about day four hundred, when your copy and upstream have drifted and every patch is merged by hand.

What is the Rails sample method?

There is no Rails method called sample. Array#sample is plain Ruby, and it returns one random element from an array, or several with sample(n). Docs: the Ruby core docs for Array.

Pulling a random database record is a different job, and Rails has no named method for it. The standard idiom wraps the raw SQL in Arel.sql, which marks it known-safe:

Model.order(Arel.sql("RANDOM()")).first    # PostgreSQL or SQLite
Model.order(Arel.sql("RAND()")).first      # MySQL or MariaDB
Model.offset(rand(Model.count)).first      # database-agnostic

All three get slow on a large table. The first two force a full-table sort. The third runs a full count then skips, and can race with inserts. On a big table, sample from a random primary-key range instead.

Where reading an open source Rails app stops helping

Reading these codebases teaches you how a Rails app is shaped. It does not hand you one that runs your business.

A fork is a permanent job. The day you change a line, you own the merge. Each Rails minor release gets bug fixes for one year, and security fixes for two years, after the first release in its series. That is the official Rails Maintenance Policy. Longer version: Rails upgrade and maintenance.

A dormant project transfers the whole burden to you. Sharetribe Go and hotwire-rails are in the table so you can see what that looks like.

Some of this page is the wrong advice for you. If you want to learn Rails, read the code and ignore the rest. If you have a Rails developer on staff, you do not need a vendor. If a project in the table does the job, install it unmodified.

Most business software is not on this list at all. Nobody has open-sourced your estimating process, your job tracker or your onboarding checklist, because those are specific to how you work.

A team working together on laptops, the kind of small business that needs its own Rails app rather than a forked open source project
Photo by Annie Spratt on Unsplash

Reading a Rails app and owning one are different problems

Some readers came here to learn Rails. Clone Alchemy CMS or Publify and read for a weekend. Two pages carry that further: websites built with Ruby on Rails and Rails project ideas worth building.

Other readers came here because someone said "just fork an open source Rails app." Doing that means hiring or becoming a Rails developer. LlamaPress is the other option. Our AI agent, Leonardo, writes the Rails code, supervised by US-based engineers who ship Rails daily. You get a standard Rails app on PostgreSQL, with no upstream fork to merge.

The fastest starting point is the spreadsheet you already run the process in, because it holds your tables, fields and rules. Upload it at the Excel to app page. For AI features in an existing Rails app, read Rails AI. For how we work, read a Rails development company where AI writes the code. Plans: pricing.

Your Repo, Not Someone Else's Fork

Get a Rails app built for your process

Upload the spreadsheet your team already runs on. Leonardo builds a first working Rails app from it. A US-based engineer reviews every change. Free, no credit card.

Already have a Rails app? Contact us and we will read it with you.

Frequently Asked Questions

What are the best open source Ruby on Rails apps?

Mastodon, Huginn, Discourse and Chatwoot are the largest active ones, with 50,265, 49,895, 47,790 and 36,497 GitHub stars read on 2026-09-04. All four pushed code that day. For smaller reading, Alchemy CMS, Open Food Network, Publify and Lobsters are active and easier to hold in your head.

Where can I find open source Rails projects to learn from?

GitHub is the practical answer, and the table on this page lists seventeen repos with license, star count and last push date, read on 2026-09-04. Check the push date before you clone. A dead repo still shows a large star count, and hotwired/hotwire-rails is the example: archived, last pushed 2021-12-20.

Is GitLab open source and written in Ruby on Rails?

GitLab is built on Ruby on Rails, and only part of it is open source. Its engineering handbook calls the product a "large monolithic application, using Ruby on Rails framework." The Community Edition is open source and the Enterprise Edition adds proprietary features. Its source is hosted on GitLab.com, so no GitHub star count exists for it.

Can I use an open source Rails app for my business?

Yes, if you check two things first. The license decides whether you may keep changes private, and MIT and BSD-3-Clause allow it while GPL-2.0 and AGPL-3.0 do not. The maintenance cost is bigger: once you fork, every upstream security patch becomes a merge your team owns. Installing an unmodified project is far cheaper.

What is the Rails sample method?

There is no Rails method called sample. Array#sample is plain Ruby and returns one random element from an array, or several with sample(n). For a random database record, the common idiom is Model.order(Arel.sql("RANDOM()")).first on PostgreSQL or SQLite, and RAND() on MySQL. Both get slow on large tables.

What is a good Rails sample project for a beginner?

Pick a small active app rather than a large one. Alchemy CMS (906 stars), Open Food Network (1,278) and Publify (1,854) all pushed code within a week of 2026-09-04 and are small enough to read. Devise and Pundit are good library reads too. That ranking is our assessment, not a claim by the maintainers.