1- <h1 align =" center " >◆ Movit </h1 >
1+ <h1 align =" center " >◆ Posecode </h1 >
22
33<p align =" center " ><b >Kinematic motion as text.</b > Mermaid gave LLMs a way to draw diagrams.<br />
4- Movit gives them a way to <i >show movement</i > — exercises, physiotherapy, posture —<br />
4+ Posecode gives them a way to <i >show movement</i > — exercises, physiotherapy, posture —<br />
55as a tiny human-readable language that renders to an animated 3D figure in the browser.</p >
66
77<p align =" center " >
8- <a href =" https://www. posecode.org/play " ><b >▶ Live playground</b ></a > ·
8+ <a href =" https://posecode.org/play " ><b >▶ Live playground</b ></a > ·
99 <a href =" spec/SPEC.md " >Language spec</a > ·
1010 <a href =" spec/examples " >Examples</a > ·
11- <a href =" packages/movit -mcp " >MCP server</a >
11+ <a href =" packages/posecode -mcp " >MCP server</a >
1212</p >
1313
1414<table align =" center " >
1515 <tr >
16- <td align="center"><img src="docs/media/deadlift.gif" width="230" alt="Deadlift rendered from .movit text"/><br/><sub><code>hips : hinge 70 </code> — deadlift</sub></td>
17- <td align="center"><img src="docs/media/squat.gif" width="230" alt="Body-weight squat rendered from .movit text"/><br/><sub><code>knees: flex 95</code> — squat</sub></td>
18- <td align="center"><img src="docs/media/lateral-raise.gif" width="230" alt="Lateral raise rendered from .movit text"/><br/><sub><code>shoulders: abduct 90</code> — lateral raise</sub></td>
16+ <td align="center"><img src="docs/media/deadlift.gif" width="230" alt="Deadlift rendered from .posecode text"/><br/><sub><code>pelvis : hinge</code> — deadlift</sub></td>
17+ <td align="center"><img src="docs/media/squat.gif" width="230" alt="Body-weight squat rendered from .posecode text"/><br/><sub><code>knees: flex 95</code> — squat</sub></td>
18+ <td align="center"><img src="docs/media/lateral-raise.gif" width="230" alt="Lateral raise rendered from .posecode text"/><br/><sub><code>shoulders: abduct 90</code> — lateral raise</sub></td>
1919 </tr >
2020</table >
2121
@@ -29,16 +29,16 @@ descent") — it just has no syntax to express it that a renderer can read.
2929Diffusion-based text-to-motion models exist, but they're heavy, expensive, and
3030give you no fine control over the anatomical phases.
3131
32- Movit takes the opposite, lightweight approach (see [ the research] ( #background ) ):
32+ Posecode takes the opposite, lightweight approach (see [ the research] ( #background ) ):
3333
34- - The LLM writes a small ** ` .movit ` ** document — semantic phases, not 3D matrices.
34+ - The LLM writes a small ** ` .posecode ` ** document — semantic phases, not 3D matrices.
3535- A ** client-side** parser + Three.js renderer animates it. Generation is a
3636 fraction of a cent of text; rendering runs at 60fps on a phone.
3737- Every angle is ** hard-clamped to a healthy range of motion** , so a model
3838 hallucinating "knee flex 200°" can't produce an anatomically impossible joint.
3939
40- ``` movit
41- movit exercise "Body-weight squat"
40+ ``` posecode
41+ posecode exercise "Body-weight squat"
4242 rig humanoid
4343 pose start = standing
4444
@@ -61,72 +61,59 @@ movit exercise "Body-weight squat"
6161
6262## Try it
6363
64- ** No install:** open the [ live playground] ( https://www.posecode.org/play ) ,
65- pick an example, edit the text, watch the figure move. Hit ** Copy LLM prompt**
66- to get a system prompt that teaches ChatGPT/Claude to write Movit for you —
67- or wire up the [ MCP server] ( packages/movit-mcp ) so your agent authors,
68- validates, and renders movements natively.
69-
70- ** Locally:**
71-
7264``` bash
7365npm install
7466npm run dev # opens the playground (Vite) at http://localhost:5173
7567npm test # parser + renderer + eval test suites
7668npm run eval # fidelity scorecard: geometric invariants over every example
7769```
7870
79- ## Examples
80-
81- Fourteen ready-to-paste movements live in [ ` spec/examples ` ] ( spec/examples ) —
82- squat, deadlift, push-up, biceps curl, lateral raise, forward fold, roll-down,
83- chair pose, side bend, spinal twist, neck rotation, shoulder stretch, and two
84- posture resets. A hip hinge is one line:
85-
86- ``` movit
87- step "Hinge down" 2s ease-in-out:
88- hips: hinge 70 # closed-chain: torso tips over planted feet
89- knees: flex 20
90- ground-lock: feet
91- cue "Push the hips back, chest up, flat back"
92- ```
71+ In the playground: pick an example, watch it animate, edit the text live, and
72+ hit ** Copy LLM prompt** to get a system prompt that teaches ChatGPT/Claude to
73+ write Posecode for you — or wire up the [ MCP server] ( packages/posecode-mcp ) so
74+ your agent authors, validates, and renders movements natively.
9375
94- ## How Movit stays honest
76+ ## How Posecode stays honest
9577
9678Two safety layers ship with the language:
9779
9880- ** ROM clamping** — every angle is hard-clamped to healthy range-of-motion
99- tables before rendering; a hallucinated ` knee: flex 200 ` renders at 144°
100- with a warning, never an impossible joint.
101- - ** Fidelity evals** — [ ` movit -eval` ] ( packages/movit -eval ) re-runs the real
102- parser → FK → ground-lock pipeline headlessly and scores geometric
103- invariants ("a deadlift pitches the torso ≥ 55 ° with a flat back and
104- vertical shins"). Every example must pass every invariant in CI.
81+ tables before rendering; a hallucinated ` knee: flex 200 ` renders at its
82+ ceiling with a warning, never an impossible joint.
83+ - ** Fidelity evals** — [ ` posecode -eval` ] ( packages/posecode -eval ) re-runs the
84+ real parser → FK → ground-lock pipeline headlessly and scores geometric
85+ invariants ("a deadlift pitches the torso ≥ 50 ° with vertical shins"). Every
86+ example must pass every invariant in CI.
10587
10688## Packages
10789
10890| Package | What it does |
10991| --- | --- |
110- | [ ` movit-parser ` ] ( packages/movit-parser ) | ` .movit ` text → validated, ROM-clamped IR. Pure TypeScript, framework-agnostic. |
111- | [ ` movit-render ` ] ( packages/movit-render ) | IR → animated low-poly mannequin (Three.js), forward kinematics + ground-lock CCD IK. |
112- | [ ` movit-share ` ] ( packages/movit-share ) | Encode a ` .movit ` doc to a URL-safe token so a movement travels as a link. Pure, dependency-free. |
113- | [ ` movit-mcp ` ] ( packages/movit-mcp ) | MCP server: lets an LLM agent author, ROM-validate, and get a render link for a movement — natively. |
114- | [ ` movit-eval ` ] ( packages/movit-eval ) | Fidelity harness: headless kinematic probing + biomechanical invariant scoring. |
115- | [ ` movit-language ` ] ( packages/movit-language ) | Editor smarts (completion, hover docs, diagnostics) shared by CodeMirror and the LSP. |
116- | [ ` movit-lsp ` ] ( packages/movit-lsp ) | Language Server Protocol server + [ VS Code extension] ( editors/vscode ) . |
92+ | [ ` posecode-parser ` ] ( packages/posecode-parser ) | ` .posecode ` text → validated, ROM-clamped IR. Pure TypeScript, framework-agnostic. |
93+ | [ ` posecode-render ` ] ( packages/posecode-render ) | IR → animated low-poly mannequin (Three.js), forward kinematics + ground-lock CCD IK. |
94+ | [ ` posecode-share ` ] ( packages/posecode-share ) | Encode a ` .posecode ` doc to a URL-safe token so a movement travels as a link. Pure, dependency-free. |
95+ | [ ` posecode-mcp ` ] ( packages/posecode-mcp ) | MCP server: lets an LLM agent author, ROM-validate, and get a render link for a movement — natively. |
96+ | [ ` posecode-eval ` ] ( packages/posecode-eval ) | Fidelity harness: headless kinematic probing + biomechanical invariant scoring. |
11797| [ ` playground ` ] ( playground ) | Live editor + 3D viewport + warnings + the LLM prompt + shareable links. |
11898
11999The protocol and both libraries are ** MIT-licensed** — the open core. See
120100[ ` spec/SPEC.md ` ] ( spec/SPEC.md ) for the full language and
121101[ ` spec/llm-authoring.md ` ] ( spec/llm-authoring.md ) for the authoring prompt.
102+ For where Posecode spreads fastest and the per-domain go-to-market plan, see
103+ [ ` docs/market-research.md ` ] ( docs/market-research.md ) ; for the engine roadmap,
104+ [ ` ROADMAP.md ` ] ( ROADMAP.md ) .
122105
123106## Scope (v0.1)
124107
125- ✅ Single-person fitness, stretching & posture · Mermaid-style DSL · ROM safety
126- clamping · forward kinematics · ground-lock IK · live playground.
108+ ✅ Single-person movement across fitness, physio, desk, dance, education & rehab ·
109+ Mermaid-style DSL · ROM safety clamping (authored ** and IK-solved** angles) ·
110+ forward kinematics · ground-lock ** and ROM-constrained reach-to-target IK** ·
111+ hip-hinge · lying/seated poses · scene props (chair/wall/bar) · a single-DOF
112+ hand rig · live playground.
127113
128- ⏳ Deferred: reach-IK, two-person / partner movements + collision detection,
129- FBX/GLB export, hosted SaaS editor and the expert-verified motion marketplace.
114+ ⏳ Deferred: two-person / partner movements + collision detection, deeper props
115+ (load, bands, rings), multi-joint fingers, FBX/GLB export, hosted SaaS editor and
116+ the expert-verified motion marketplace.
130117
131118## Background
132119
@@ -136,6 +123,6 @@ specifies ROM-based safety constraints from clinical normative data, and lays
136123out the open-core commercialization path. The spec cross-references its
137124sections (§4 DSL, §5 biomechanics, §6 client rendering, §7 strategy).
138125
139- > ⚠️ Movit 's range-of-motion values are general literature data, not medical
126+ > ⚠️ Posecode 's range-of-motion values are general literature data, not medical
140127> advice. Consult a qualified professional for physiotherapy or exercise
141128> prescription.
0 commit comments