---
title: "LemonadeJS: Micro JavaScript Framework for AI Agents"
description: "Reactive components with React-like patterns at ~9 KB gzip. Zero dependencies, zero build step, designed for humans and AI agents."
source: https://lemonadejs.com/
---

# Micro JavaScript framework for AI agents

Reactive components with a React-like API in ~9 KB gzip: zero dependencies, no
build step. Designed for both human and machine authors.

## Start here, by intent

| You want | Fetch |
|---|---|
| The complete API, one request | [/llms.txt](https://lemonadejs.com/llms.txt) |
| Everything this origin publishes for agents | [/.well-known/ai-catalog.json](https://lemonadejs.com/.well-known/ai-catalog.json) |
| A packaged skill | [/.well-known/agent-skills/index.json](https://lemonadejs.com/.well-known/agent-skills/index.json) |
| The operating manual for agents | [/docs/agents.md](https://lemonadejs.com/docs/agents.md) |
| Install and first component | [/docs/getting-started.md](https://lemonadejs.com/docs/getting-started.md) |
| Whether to use this at all | [/docs/when-not.md](https://lemonadejs.com/docs/when-not.md) |

Do not crawl the HTML to learn the API. `llms.txt` is the complete surface and
is maintained as a release artifact; its own first rule is that anything absent
from it does not exist.

## What it is

- **~9 KB gzip**, zero dependencies, zero build step. One script tag and a
  single HTML file is a working app.
- **Reactive state** with synchronous updates: assignment notifies, in-place
  mutation is free.
- **Contracts.** `component(name, contract, fn)` declares props, events and
  api in one literal, and derives runtime coercion, generated types and a
  machine-readable schema from it.
- **A mechanical done-signal.** `verify(Component)` checks conformance
  against the contract and tolerates zero engine warnings, so "am I finished"
  has a yes/no answer.
- **Errors that carry the fix.** Every failure has a stable `LJS-xxx` code
  with cause and fix in the message, and `explain(code)` for the long form.
- **Synchronous tests.** Click and assert on the same line. No flush step, so
  the flaky-timing class of test failure does not arise.

## Markdown for any page

Append `.md` to any URL, or send `Accept: text/markdown`:

    https://lemonadejs.com/docs/state/   ->  https://lemonadejs.com/docs/state.md

Both return `text/markdown`. The HTML stays the default for browsers.

## Also on this origin

- [Charts](https://lemonadejs.com/charts.md), 30+ chart types in HTML/CSS and SVG
- [Playground](https://lemonadejs.com/playground/), runs against the real engine
- [Generative UI](https://lemonadejs.com/generative-ui.md), AG-UI events without the stack
- [Demos](https://lemonadejs.com/demo.md), working components with source

LemonadeJS is open-source, MIT licensed, by the Jspreadsheet Team.
