# Carmine Paolino > I build AI products, frameworks, developer tools, and native apps at Plenty. Creator of RubyLLM, Berlin.rb organizer, and founder of the Floppy Disco music collective. ## About Carmine Paolino is a software engineer, founder, and musician building AI products, frameworks, developer tools, and native apps through Plenty. He created RubyLLM, helps organize Berlin.rb, founded Floppy Disco, makes music as Crimson Lake, and previously co-founded Freshflow. - Role: Software engineer, founder, and musician ## Key Topics - Ruby - Ruby on Rails - Jekyll - AI applications - Large language models - LLM APIs - RubyLLM - Open source software - Async Ruby - Developer tooling - Product engineering - Native desktop applications - Linux - Startups - Music technology - House music ## Core Topics Ruby, Rails, Jekyll, AI applications, LLM APIs, open source, async Ruby, developer tooling, native desktop applications, Linux, product engineering, startups, music, and communities. ## Primary Projects RubyLLM, Chat with Work, Spotifast, ArchSpec, Schematist, MXC for Ruby, devhost, hyprmoncfg, Kamal Backup, ZapFast, Solco, TonePush, Cluster Headache Tracker, Jekyll VitePress, native-packages, fastframe, Omarchy plugins (Calendar for Omarchy, Files for Omarchy, MOZA for Omarchy, OmaStats, OmaTasks for Todoist, Ultimate Guitar Tabs, Lyrics Synced with Music, hyprmoncfg for Omarchy, Active Window + Icon, and Media Controls + Album Art), Omarchy Rescue, Omarchy themes (Plenty, RubyLLM, Chat with Work, and Solco, each in light and dark), Berlin.rb, Crimson Lake, Floppy Disco, and Mindscape Productions. Explore the directory at https://paolino.me/projects/. ## Posts - [RubyLLM 2.1: You Can Have It All](https://paolino.me/rubyllm-2-1/): RubyLLM 2.1 does what LangChain, LangGraph, and LangSmith do together: an MCP client with per-user OAuth, tool search, typed judgments, evaluations, and OpenTelemetry tracing, in one Ruby gem. - [RubyLLM 2.0: Tool Approval, Video, Speech, Citations, and Cost Tracking](https://paolino.me/rubyllm-2-0/): What's new in RubyLLM 2.0: tool approval and durable agents, video, speech, OCR, reranking, provider tools, citations, cost tracking, batches, caching, and the upgrade path from 1.16. - [Berlin.rb: A New Monthly Ruby Meetup in Berlin](https://paolino.me/berlin-rb/): Berlin.rb is a new monthly meetup for Berlin's Ruby community. Free, second Tuesday of every month. The first one is September 8, with talks by Paweł Strzałkowski and I. - [RubyLLM 2.0: The Agentic Loop, Exposed](https://paolino.me/rubyllm-2-0-agentic-loop/): RubyLLM 2.0 breaks ask into verbs you can drive yourself: stage a message, call the model once, run tools, step, resume mid-round, and cancel from anywhere. - [RubyLLM 2.0: Providers, Protocols, and Provider Gems](https://paolino.me/rubyllm-2-0-providers-and-protocols/): OpenAI moves to the Responses API by default, while a new provider architecture and gem generator make external providers first-class. - [kamal-backup 1.0: A Backup Is Only Real After You Restore It](https://paolino.me/kamal-backup-1-0/): kamal-backup 1.0 brings exact Rails restores, restore drills, and PostgreSQL, MySQL, MariaDB, SQLite, SFTP, and rclone support to Kamal. - [ArchSpec 1.0: Executable Architecture Specification for Ruby's Agentic Coding Era](https://paolino.me/archspec/): ArchSpec turns your architecture into an executable spec: declare components and boundaries in one Ruby file, and every change gets checked, whether a person or an agent wrote it. - [RubyLLM::Schema Is Now Schematist: A JSON Schema DSL for Ruby with Full Draft 2020-12 Coverage](https://paolino.me/schematist/): Schematist is a Ruby JSON Schema DSL with full Draft 2020-12 coverage, render-time values, standards-compliant output, and no runtime dependencies. - [Founding a Company in Germany: €11,800 and 7 Months to Get a VAT ID](https://paolino.me/founding-a-company-in-germany/): A timeline of founding a company in Germany: €11,800 spent, two companies registered, 203 days to a VAT ID, and a registration nobody mentioned. - [RubyLLM 1.16: Concurrent Tool Execution, Rails-Style Instrumentation, and api_base for Every Provider](https://paolino.me/rubyllm-1-16/): RubyLLM 1.16 adds concurrent tools with threads or fibers, Rails-style instrumentation, and proxy support through api_base for every native provider. - [Engineering Is Not Dead, Because Accountability Isn't](https://paolino.me/engineering-is-not-dead/): Models can generate the code. They cannot be accountable for it. The real distinction is whether the result is owned. - [Production Experience Cannot Be Hallucinated](https://paolino.me/production-experience-cannot-be-hallucinated/): A paid Medium article claimed hard-won RubyLLM production lessons, but its code had never run. Regenerating it only made the fabrication harder to spot. - [RubyLLM 1.15: Image Editing, Cost Tracking and Less Tool Boilerplate](https://paolino.me/rubyllm-1-15/): RubyLLM 1.15 adds image editing, cost tracking, inferred tool parameters, additive callbacks, and Rails fixes. - [kamal-backup: Scheduled Rails Backups for Kamal Apps](https://paolino.me/kamal-backup/): One Kamal accessory for encrypted Rails database and Active Storage backups, restore drills, and redacted evidence for security reviews. - [Ruby Concurrency: What Actually Happens](https://paolino.me/ruby-concurrency-what-actually-happens/): A visual guide to Ruby processes, Ractors, threads, fibers, schedulers, blocking I/O, database connections, and concurrency trade-offs. - [Making the Rails Default Job Queue Fiber-Based](https://paolino.me/solid-queue-doesnt-need-a-thread-per-job/): I patched Solid Queue to run jobs as fibers. Now it ships in 1.6.0, making the Rails default ready for highly concurrent, cooperative I/O-bound jobs. - [Your Agent's Context Window Is Not a Junk Drawer](https://paolino.me/your-agents-context-window-is-not-a-junk-drawer/): Learn why agent context windows degrade, how context rot harms results, and practical strategies for keeping AI agents focused and reliable. - [I Built a Monitor Configuration Tool for Hyprland](https://paolino.me/hyprmoncfg-monitor-configuration-for-hyprland/): A spatial TUI editor with drag-and-drop, safe apply with revert, workspace planning, and a hotplug daemon. All in two zero-dependency Go binaries. - [Comb Shaped Slices](https://paolino.me/comb-shaped-slices/): You don't need to pick a vertical. Build for yourself, listen to your customers, and the shape that emerges is yours. - [Ruby Deserves Beautiful Documentation](https://paolino.me/ruby-deserves-beautiful-documentation/): The Ruby community doesn't have a great documentation theme. So I made one. Jekyll VitePress Theme brings VitePress's docs UX to Jekyll. - [RubyLLM 1.14: From Zero to AI Chat App in Under Two Minutes](https://paolino.me/rubyllm-1-14-chat-ui/): RubyLLM 1.14 ships a Tailwind chat UI, Rails generators for agents and tools, and a simplified config DSL. Watch the full setup in 1:46. - [Ruby Is the Best Language for Building AI Apps](https://paolino.me/ruby-is-the-best-language-for-ai-apps/): A pragmatic, code-first argument for Ruby as the best language to ship AI products in 2026. - [RubyLLM 1.12: Agents Are Just LLMs with Tools](https://paolino.me/rubyllm-1-12-agents/): Agents aren't magic. They're LLMs that can call your code. RubyLLM 1.12 adds a clean DSL to define and reuse them. - [Dictation Is the New Prompt (Voxtype on Omarchy)](https://paolino.me/dictation-is-the-new-prompt/): Stop typing every prompt. Speak it instead, with a fast Rust stack and a clean Omarchy setup. - [Nano Banana with RubyLLM](https://paolino.me/nano-banana-with-rubyllm/): Nano Banana hides behind Google's chat endpoint. Here's the straight line to ship it with RubyLLM. - [RubyLLM 1.4-1.5.1: Three Releases in Three Days](https://paolino.me/rubyllm-1.4-1.5.1/): Structured output that works, Rails generators that didn't exist, and why we shipped Wednesday, Friday, and Friday again. - [Async Ruby is the Future of AI Apps (And It's Already Here)](https://paolino.me/async-ruby-is-the-future/): How Ruby's async ecosystem transforms resource-intensive LLM applications into efficient, scalable systems - without rewriting your codebase. - [RubyLLM 1.3.0: Smarter Attachments, Multi-Tenancy, and No More Manual Model Tracking](https://paolino.me/rubyllm-1-3/): Attachments figure themselves out, contexts isolate configuration per tenant, and model data stays current automatically. - [The LLM Capabilities and Pricing API is Live](https://paolino.me/standard-api-llm-capabilities-pricing-live/): The standard API for LLM model information I announced last month is now live and already integrated into RubyLLM 1.3.0. - [A Standard API for LLM Capabilities and Pricing](https://paolino.me/standard-api-llm-capabilities-pricing/): No provider exposes model capabilities and pricing through their API. So we're building one. - [RubyLLM 1.0](https://paolino.me/rubyllm-1-0/): One Ruby API for OpenAI, Claude, Gemini, and more. Chat, tools, streaming, Rails integration. No ceremony. - [Building Cluster Headache Tracker from a Hospital Bed](https://paolino.me/cluster-headache-tracker/): Cluster headaches hit up to eight times a day. The hospital gave me a paper form with one line per day. So I built an app between attacks. - [Bye Freshflow](https://paolino.me/bye-freshflow/): I co-founded Freshflow 3.5 years ago. Now I'm leaving to build something of my own. ## Links - About: https://paolino.me/about/ - GitHub: https://github.com/crmne - LinkedIn: https://www.linkedin.com/in/carminepaolino - Twitter: https://x.com/paolino - Instagram: https://www.instagram.com/crmne/ - Soundcloud: https://soundcloud.com/crimsonlakemusic - Crimsonlake: https://crimsonlake.live