All projects

AI · Serverless

AronaChat

An AI chat application built around Cloudflare Workers, with explicit boundaries for state and cost.

Open source

Working entry Sample availability; cover studies and development stages are illustrative.

Concept of a minimal conversation interface paired with a Cloudflare Workers, D1, R2, and Durable Objects architecture legend.
Product & system study / a conversation at the edge
01Context

A conversation needs more than a model.

AronaChat is an AI chat application built around Cloudflare's serverless ecosystem. Workers provides the application backend, with D1, R2, and Durable Objects contributing persistence and state-management capabilities. The project explores model integration, conversation management, usage limits, and cost controls while keeping the application lightweight and its infrastructure responsibilities clear.

02Field notes

State has different lifetimes

A conversation has at least two clocks: the lifetime of a request and the lifetime of its history. Treating both as one kind of state makes recovery harder to explain.

One illustrative division gives D1 the queryable conversation records, R2 the larger stored objects, and Durable Objects the coordination that needs a single owner. The useful question is which component owns the transition, especially when a model request ends before the conversation does.

03Engineering

The pieces behind the conversation

Application backend
Cloudflare Workers
Persistence & state
D1 / R2 / Durable Objects
Integration work
AI models and conversation management
Operational concerns
Usage limits, cost controls, and clear failure states
04Design

Where the boundaries belong

Give state an owner

The sample architecture separates queryable records, larger stored objects, and coordinated live state. A clear owner for each kind of data is easier to maintain than treating every persistence service as interchangeable.

Put limits on the request path

Usage checks and budget decisions should happen before starting model work. This is an engineering direction for keeping limits understandable and preventing expensive requests from becoming an afterthought.

Keep model differences at the boundary

A model integration layer can translate provider-specific behavior into application-level states. The conversation interface should remain readable when a request is waiting, interrupted, or unavailable.

05Development

An example development path

Illustrative stages, from later explorations to foundations.

  1. Usage & cost controls

    Explore request limits, budget checks, and feedback that explains why a request cannot continue.

  2. Conversation state

    Sketch how durable records, stored objects, and live session coordination divide responsibilities.

  3. Model connection

    Define the Workers request flow and a model boundary that can evolve with the chat experience.