Limner

Originally built for an HR consultant client developing gamified training programs with VGA-era visual aesthetics. The framework that came out of it is now the public 'rasa' foundation on Cloudflare Workers.

Limner image asset pipeline

An image and taste agent built as an MCP server: 17 tools namespaced limner_* for generating, composing, and recalling work, with durable memory in D1 so a session remembers what it has made. Claude reasons on Anthropic's Managed Agents platform; Cloudflare Workers run the tools in V8 isolates. The same tool surface is available three ways from one codebase: an OAuth-gated Workers endpoint, a local stdio server, and a Claude Desktop bundle. This is 'rasa', the public foundation the other Limner variants build on.

TypeScript MCP Cloudflare Workers Claude Managed Agents D1 OpenAI gpt-image-1 Recraft

Context

In early 2025, an HR consulting client reached out to me for help on a project that ‘required’ training materials with VGA-era video game aesthetics. The ask was for hundreds of stylistically consistent pixel-art assets for gamified onboarding modules, where the visual language was attempting to do curricular work. Off-the-shelf image generators couldn’t hit the aesthetic reliably, and human art direction at that volume was the cost we were trying to reduce.

The first version, Limner: Pixel, served that engagement. The framework that came out of it became a family.

Initial Approach

A pipeline-plus-judgment architecture:

  1. MidJourney for base imagery generation, effectively the editorial layer.
  2. PixelLab (via a custom Limner agent) for pixel-art translation.
  3. Automated quality gate. The agent evaluates each output against stylistic criteria (palette adherence, dithering patterns, character density, VGA-era conventions) and rejects non-conforming results before they reach the output queue.
  4. Vectorization for final output.

The quality gate is the critical piece. Without it, this is a chained tool pipeline. With it, the agent is making aesthetic judgments at each stage and refusing to pass through work that fails those judgments. Limner: Pixel produced multiple batches of 500+ uniformly stylized assets for that engagement, with zero human intervention once the gate was tuned.

The harnessed agent

The framework was rebuilt on Cloudflare as the public limner repo, where the architecture is the point. The reasoning loop runs on Anthropic’s Claude Managed Agents platform: the model does the planning and the tool choice. The tools themselves run as Cloudflare Workers in V8 isolates, so the agent’s judgment and the code it invokes are cleanly separated. Memory lives in D1 and persists across sessions, so the agent remembers what it has made rather than holding it in a context window. Image generation runs through the OpenAI Images API (gpt-image-1) and Recraft.

The discipline is the same one the gate enforced from the start: an agent that throws away its own work when it doesn’t meet a bar.

The Limner family

rasa (public). The medium-agnostic foundation, this repo. Same quality-gating discipline, multiple aesthetic targets, the substrate the variants run on.

Limner: Pixel (private, in rebuild). The original pixel-art framework, being rebuilt on rasa. A prospect pipeline is gated on the release.

Limner: ASCII (private, pre-development). A self-initiated extension to ASCII and BBS-era aesthetics, built on rasa.