Ito lets you describe a terminal interface in Lua rather than manually drawing characters and coordinating every redraw. Its SwiftUI-inspired approach is useful for small interactive tools: compose rows and columns, keep changing values in state, and rebuild the view from those values.

The verified recent release is 0.1.4, published October 7. Its release diff adds wrapping for styled text spans—keeping formatting when a line breaks—along with maximum-height constraints and scroll-content size reporting. This is a recent library update, not evidence that the project first launched on the day it reached HN.

  • Fastest way in: Open the browser workshop, edit its Lua example, and inspect the live preview. Start with require("ito"), store changing values with ito.state(...), and return a function that builds a view using components such as VStack, HStack, and Text.
  • Current playground: Its guide also documents text fields, buttons, lists, checkboxes, sliders, keyboard focus, and submit/cancel handlers. It runs the terminal layout and input machinery in WebAssembly and draws cells on Canvas—not HTML form controls.
  • Local integration: The library is open source and has a Rust-backed native layer. The 0.1.4 manifest specifies Rust 1.88 and selectable Lua/LuaJIT features; a local application must supply the host and event loop. This is not a documented one-command standalone app runner.
  • Cost: MIT-licensed source, with no purchase or account step presented for the public playground. No paid hosted-service pricing is stated.

Limitations: The playground exposes neither filesystem nor networking APIs, so a preview is not a complete system utility. Its Canvas text fallback also does not provide the accessibility of separate native HTML controls. The current workshop targets newer development code; do not assume all its controls exist in the October 7 tag.

This is a source-and-documentation review, not a hands-on build or an independent performance test. The playground guide is the practical starting point; check the matching library revision before adopting it.