Documentation

One source, several doors.

The documentation lives in the repository, beside the code it describes, so that a change to one fails the build when it contradicts the other. This page is an index into it — not a second copy of it.

Links resolve to main on GitHub. Markdown links, prose file paths, and every example are checked automatically on each run; a document that drifts out of the index is reported as orphaned.

Start here

First hour.

In order. The first four answer almost everything.

Core concepts

The model itself.

Reference and rules

When you need the exact answer.

Examples

Eight applications, each verified on every run.

Driven by the real kernel against their own real markup, so none can rot.

The example ladder
ExampleIntroduces
01 counterThe whole mechanism in about seventy lines, and projecting a capability
02 formValidation as pure functions, conditional messages, a rejected illegal transition
03 fetch-dataThe first effect, list rendering, all four outcomes, a stale-result guard
04 save-dataA full save lifecycle, a storage effect, and why a timed-out write is not retried
05 multi-screenScreens as state, shared versus screen-local lifetimes, engine-side filtering
06 time-entriesA realistic feature assembled only from the above
07 clipboardCopying text; three failure reasons, only one of them worth a retry
08 routingTyped routes, deep links, Back and Forward, and the push-on-popstate trap
minimalThe copy shipped inside the npm package — four files, no build step
kitchen sinkEvery primitive and every outcome on one page, with live diagnostics

Project status

What is built, and what is not.

Including the parts that are deliberately absent.

Architecture direction

The language-neutral contract and its guardrails.

Accepted specifications. Their implementation is in progress.

The canonical repository documents for the neutral contract, multi-language conformance, and guest-language guidance will be written with the implementation work these specifications describe. Until they are on main, the specifications above are the authority, and WebAssembly status describes what exists today.

Install

The package.

npm install @echelon-foundry/limen

On npm: @echelon-foundry/limen. Source: GitHub. Changes by version: CHANGELOG.

The package carries its own documentation: the quick start, the mental model, the where-does-code-go guide, the API reference, troubleshooting and the glossary all ship in the tarball, alongside a complete four-file example in examples/minimal/. Those copies describe the version you installed; the links on this page describe main, which may be ahead. The tarball’s contents are checked against an expected manifest on every run, and a clean-room job installs it into an empty project and builds the minimal example from it.

The published name is unchanged. Limen is the product name; no exported symbol, file path, or protocol type was renamed, so there is nothing to migrate — no deprecation, no alias, no codemod.

Requires Node 22 or newer to build and test, TypeScript 5.9 or newer for the types, and a browser with ES2022 modules, fetch and AbortController. It has no runtime dependencies. Versioning is semver and currently 0.x, so the protocol may still change in a minor release.