Contract Layer
for the agentic web.
AI agents are becoming operational actors in commerce, marketing, and support. They need more than content — they need a contract. OlonJS is the deterministic machine contract for websites: every site typed, structured, and addressable by design. No custom glue. No fragile integrations. Just a contract any agent can read and operate.

Why OlonJS
A Meaningful Web
Whole in itself, part of something greater.
Most web frameworks separate concerns across layers — data, UI, validation, metadata — with no shared contract between them. OlonJS inverts this: the JSON data structure is the contract. Every layer — rendering, editing, validation, machine access — is a deterministic projection of the same typed source. The result is a site that is structurally coherent by construction, not by convention. Every site built with OlonJS is a holon: complete in itself, intelligible to the network around it. The meaningful web doesn't happen all at once. It grows one site at a time.
Architecture
Six governing protocols.
OlonJS is specified as a versioned set of architectural protocols. Each protocol is independently versioned and mandatory for compliant tenants.
Full specification: olonjsSpecs_V_1_5.md ↗
MTRP · v1.2
Modular Type Registry
Core exports an empty SectionDataRegistry. Tenants extend it via module augmentation. Full TypeScript inference across all section types at compile-time, zero Core changes.
Read spec ↗TBP · v1.0
Tenant Block Protocol
Each section type is a self-contained capsule: View.tsx, schema.ts, types.ts, index.ts. Renderable, validatable, and ingestible by the engine without additional configuration.
Read spec ↗JSP · v1.8
JsonPages Site Protocol
Deterministic file system ontology and CLI projection engine. config/ separates global governance from per-page content. Reproducible across every environment.
Read spec ↗IDAC · v1.0
ICE Data Contract
Mandatory data-jp-* DOM attributes bind every section to its data. Any consumer that can traverse the DOM can identify and operate any content node — human or agent.
Read spec ↗BSDS · v1.0
Base Schema Fragments
BaseSectionData and BaseArrayItem enforce anchor IDs and stable React keys across all capsules. The foundation that doesn't move so your content never drifts.
Read spec ↗PSS · v1.4
Path-Based Selection
Every node has an address. Content selection uses strict root-to-leaf path semantics — unambiguous, stable, operable by any consumer that knows the contract.
Read spec ↗Quick Example
Two steps. One contract.
Scaffold a fully compliant tenant in under three minutes. Then read any page via the OlonJS protocol — from a browser, a script, or an AI agent.
# Install the CLI
npm install -g @olonjs/cli
# Scaffold a new tenant
npx @olonjs/cli new tenant
✓ Projecting infrastructure...
✓ Projecting source (src_tenant_alpha.sh)
✓ Resolving dependencies
✓ Tenant scaffolded
src/
components/hero/
View.tsx
schema.ts
types.ts
index.ts
data/config/
site.json
theme.json
menu.json
lib/
schemas.ts
base-schemas.ts// Read any page via the contract
// Works from browser, script, or AI agent
const page = await
navigator.modelContextProtocol
.readResource(
'olon://pages/home'
);
// Returns the full typed contract
// { slug, meta, sections: Section[] }
// No DOM scraping. No layout knowledge.
// Just the contract.
// {
// "slug": "home",
// "sections": [
// { "type": "hero", "data": {...} },
// { "type": "features", "data": {...} }
// ]
// }Every OlonJS tenant exposes a machine-readable manifest at http://localhost:5173/mcp-manifest.json
Get Started
Three paths in.
Start with the Core package, scaffold a full tenant with the CLI, or deploy a working example in one click.
Install Core
The Core package is free and open — forever. The contract, the protocols, the CLI. No lock-in on the foundation.
npm install @olonjs/coreView on GitHub ↗Scaffold a tenant
The CLI scaffolds a fully compliant tenant from a canonical script. Same result on every machine, every run.
npx @olonjs/cli new tenantView on npm ↗Deploy a template
Clone a working OlonJS tenant and deploy it with one click. Explore the full capsule structure in a real project.
Deploy template →View on npm ↗