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.
Free, open source, and MIT licensed. Every component legible to your coding agent.
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
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
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
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.