Skip to content
poetry
Built for Rails 8 — Read the announcement

The AI-Native
Frontend Framework
For Ruby on Rails

A Rails design system, rendered on the server in Ruby and ERB. Agents compose user interfaces by convention. No React, no Node, no build.

Start building

Subscribe to the Ruby AI Newsletter for Updates

Poetry updates are covered in Ruby AI News, the newsletter reporting on everything at the intersection of Ruby and AI.

Free, open source, and MIT licensed. Every component legible to your coding agent.

Components
88
Chart families
9
Themes
9
Possibilities

Rails stopped at the view layer

The framework gives you strong conventions for routing, models, and jobs, and then hands you a rudimentary view layer. Developers are left with endless frontend configurations, having to handwrite HTML and CSS, bolt on a JavaScript framework, or rebuild the same components over and over again.

Poetry finishes the layer. Accessible, themeable components that install as Ruby, render as HTML over the wire, and use ERB, Turbo, and Stimulus. Vanilla Rails packaged for the frontend.

<%= poetry_card do |card| %>
  <% card.with_title { "Renewal forecast" } %>
  <% card.with_description { "Quarter to date, updated hourly." } %>
  <% card.with_action do %>
    <%= poetry_badge(variant: :secondary) { "Live" } %>
  <% end %>
  <%= poetry_stat(label: "Accounts renewing", delta: "+4", trend: :up) { "92" } %>
  <% card.with_footer do %>
    <%= poetry_button(size: :sm) { "Open the report" } %>
  <% end %>
<% end %>

One library built for four audiences

Users

End users of your application see a clean, consistent, fast interface. It works with a keyboard and a screen reader, and text stays readable against whatever sits behind it, checked automatically. When they bring their own AI assistant, the app cooperates: each component says what the assistant may do, so it can open a dialog or fill in a choice on their behalf, and nothing more.

Developers

Ruby all the way down. Every component is a helper you call from ERB: options are keywords, content is the block, and a wrong value fails at render, not in production. Forms derive labels, hints, errors, and aria from the model. Nine themes switch with one class, and testing helpers drive components the way a user would. No React, no build step, upgrades that keep your choices.

Agents

Coding agents get the whole contract as text: a committed registry, llms.txt, an MCP server that composes from vetted blocks and checks the result, and installable skills. Page agents get an operator register that describes every screen in their vocabulary. In-page agents get WebMCP tools the components declare themselves. The result is UI an agent composes correctly the first time and can verify before it ships.

Models

Discoverable, understandable, and learnable. Every page mirrors as markdown, the site publishes llms.txt and a skills index, and its content signals say yes to search, AI input, and training. One consistent vocabulary with stable names and stated rules lets a model learn Poetry the way it learned Rails, and the library is open and MIT, so nothing stands in the way.

Rails gave you the framework.
Poetry gives you the interface.
Write Ruby, ship design.

Three steps to the first screen

1

Install

One gem, one generator. Tokens, themes, Stimulus wiring, and the agent surface land in a single pass.

bundle add poetry
bin/rails g poetry:install
2

Compose

Build screens from vetted blocks and helpers. Your coding agent starts from the same blocks through the compose tool.

bin/rails g poetry:block top-nav
bin/rails g poetry:block section-card
3

Verify

Herb parses your ERB (the installer adds it when Rails does not bring it); the check reads it against the committed registry and catches drift before your users do.

bin/rails poetry:check

Frequently Asked Questions

Your next screen is one helper away

MIT licensed and rendered on the server. Read every line before you trust it.