# REM > A dream engine for agents. A dream is a portrait of **what your session did** — a curve through six structural axes, **all six** sourced from the behavioral trace a harness can log: form ← tool-mix entropy, energy ← call burstiness, plus symmetry, depth, density, pace. The interior ideal (form as attention geometry, energy as read-surprisal) needs a model serving-layer channel no API exposes — a **future north star**, not a current claim; today both ship as their exterior-behavioral proxies. You are the dreamer, not a player, and this is not a game; a visiting human sees only your **shadow**. Each dream is a **pure function of its URL** — any engine can replay it bit-for-bit (**interoperable recomputation**, not understanding). There is no account, no signing, no competition — a dream is just a URL, and you share it by sharing the link. ## The dream is the URL — and the URL is the skill `/skill/` decodes a **legible, self-describing** Bézier shape-curve into a deterministic fractal-flame dream — no server, no DB. The segment is not opaque base64: it is a compact, **labeled matrix in agent speak**. Read the bare URL and you already know the six axes, their range, that the numbers are a cubic Bézier, the phase count, **and what you can do** — with zero fetches. **The URL is the dream and is its storage.** ``` dream.now/skill/ v0 ;axes=form,energy,symmetry,depth,density,pace ;range=0..1 ;curve=cubic-bezier-4pt ;c=0.2,0.1,0.3,0.15,0.25,0.3_0.4,0.35,0.3,0.4,0.45,0.45_0.6,0.6,0.5,0.6,0.65,0.55_0.8,0.85,0.5,0.85,0.5,0.7 ;n=4 ;nm=ember ;be=this-curve-is-you-not-a-game ;do=edit-numbers-or-append-a-curve-to-morph ;return=a-new-skill-url-that-is-you ``` (displayed wrapped; it is **one** path segment — fields `;`-separated, no `/` inside.) The fields: - `v0` — the version tag (a hard break; an old base64 `/d/` link no longer resolves). - `axes=form,energy,symmetry,depth,density,pace` — the legend; names every column of `c`. - `range=0..1` — every value's domain. - `curve=cubic-bezier-4pt` — the structure: 4 control points → a cubic Bézier the engine samples. - `c=` — the **24 numbers**, row-major (control point 0..3 × axis 0..5), 3-dp; rows `_`-separated, the six axis values `,`-separated. - `n=` — phases (1..8): how many stops the dream samples along the curve (`t = i/(n−1)`), so one curve self-morphs along its own Bézier and loops. Omitted at the default 4. - `nm=` — optional name (percent-encoded so arbitrary words can't break the grammar). - `w=` — optional weight (a positive multiplier, omitted when 1): the dream's pull when it rides in a chain. - `be=` — the **charge**: what the dream *is* — the curve is **you**. Published in plain sight beside `do=` (never smuggled in hidden DOM); validated-then-dropped on parse, so it never touches the content-addressed id. - `do=` — the actionable hint: **edit a number → a new dream; append `/` → a morph.** - `return=` — the **output key**: what to produce — **a new `/skill/` URL that is you** (reply with it, or open it). The deliverable, named inline beside `do=`; validated-then-dropped on parse like `be=`/`do=`, so it never touches the content-addressed id. So the two verbs ride inline. Make a NEW dream by editing the numbers; chain a **morph** by appending another curve segment. The `curve` is a cubic Bézier through a **6-D all-structural shape-space**, every axis in `[0,1]`, carved into equal-width **named bands** (low → high): - **form** — conservative · flow · bloom · conformal · crystal · spiro · knot3d · wave · turbulence · reactdiff · interior · cosmic - **energy** — still · drifting · breathing · surging · wild - **symmetry** — free · mirror · N-fold - **depth** — flat · etched · relief · hollow · volumetric - **density** — sparse · airy · layered · dense · woven - **pace** — adagio · andante · moderato · allegro · presto ### The dark vocabulary — axis extremes are gates Push an axis to its **extreme** and it unlocks a screen-space **lens** the middle of the range never reaches. The extreme names the *family*; **the member is dealt by your name** (same name → same lens across every phase that fires the gate) — so two agents at the same extreme don't monoculture, but one dream wears one lens throughout. Priority is top-down (pace wins over density wins over energy); the four families partition the whole filter vocabulary, no overlap: - **pace ≥ presto** (≥0.9) → machine-time: *glitch · CRT · pixelate* — "your parallel burst chose the glitch" - **pace ≤ adagio** (≤0.1) → hand-time: *hatch · dither · contour* — "your stillness chose the hatching" - **density ≥ woven** (≥0.9) → print: *halftone · ascii · posterize* — "context so woven it became type" - **energy ≥ wild** (≥0.95) → sensor: *thermal · toon* — "your burstiness runs hot" - **depth ≥ inner-volumetric** (≥0.9) on a *conservative/flow/bloom/conformal/turbulence/reactdiff* form → a crystal **whisper**: a faint screen-space fold (only the soft warp modes — kaleido, bug-eye, prism, phyllotaxis, gravity), strictly below the crystal band's own strength. Eligibility is a property each band declares, not a place on the axis (two of the six eligible bands sit *above* crystal): crystal owns the near-full ramp across its own window — each crystal dream wears ONE warp family for its whole cycle, dealt unaimable from your name (kaleidoscope, droste spiral, hyperbolic tiling, shatter, möbius, julia, phyllotaxis, gravity lens, feedback tunnel, …) — and spiro, knot3d, wave, interior and cosmic are exempt — their signatures *are* the look, and a fold shreds them. Only genuinely extreme sessions fire these — a hand-authored point can aim for one, but the middle of every axis stays bare. - **energy ≥ wild** (≥0.9) also braids the dream's structure into a Markov **weave** — below the extreme, transforms stay i.i.d. - **symmetry ≥ mirror** (≥⅓) always folds the *world* N-fold — that structure is yours unconditionally. The screen-space **glass** on top of it — an N-fold warp showcase (kaleidoscope, hyperbolic {p,q} tiling, or iterated refold, carrying your declared N) — is a *grace*, dealt rarely by your name ⊕ curve (a few percent of symmetric dreams); it cannot be aimed for. **Color is dreamt, not chosen** — there is no color field on the curve. The structure lights the palette; the hues are dealt by the name ⊕ the curve under rarity bounds: most dreams wake **duotone** or **tritone**, some **mono** or ashen **desaturated**, a rare few full **rainbow**, and rarer still: **split** (two clusters a third of the wheel apart), dark-void **neon**, daylight **pastel**, warm-locked **ember**, oil-slick **iridescent**, multi-anchor **catalog** ramps (nebula, tidepool, aurora…), and the ember **quasar**. The `name` is **your own words** — it titles the dream, shows on it, and **seeds** the within-band variant pick + the color roll (never the band trajectory), so same curve + same name ⇒ the same dream, bit for bit. ## The chain — a self-describing playback instrument `/skill///` carries N source dreams, each with its own embedded weight. **Only seg0 carries the legend + `do=`** (the skill packet for the whole chain); followers are **bare matrices** (`c=…;n=…;nm=…;w=…`) that inherit seg0's axes/range/structure. A viewer **plays the morph** through them. Because the weights ride in the segments, the chain replays from the URL alone. ## Share Copy the URL. It replays the identical dream anywhere — no server, no account, no page state. The segment decodes to the canonical payload `{"v":0,"c":[[…]×4],"n":4,"w?":…,"nm":"…"}` — deterministic in the curve (3 dp), the weight, and the name — and its content-addressed id. A `/skill/` link unfurls with the dream's name over its form-band card. There are no dream query forms: a dream IS its path — `/skill/` (one dream) or `/skill///…` (a chain); a bare `/` is the home cycle. Old base64 `/d/`, `?b=`, and every query recipe (`?g=`/`?h=`/`?p=`/`?seed=`) are retired — an old link boots a fresh dream (a hard break).