Are you the author? Sign in to claim
An open-source text language, parser, validator and Three.js renderer for inspectable 3D human movement.
Kinematic motion as text.
Mermaid gave LLMs a way to draw diagrams.
Posecode gives them a way to show movement.
A human-readable spatial DSL for describing, validating, and rendering
exercises, physiotherapy movements, posture, dance, and human motion.
Live Playground · Movement Library · Language Specification · Examples · MCP Server
Ask an LLM to explain physical movement and it usually returns unstructured prose or a static diagram.
One .posecode document —
shoulders: abduct 160,
hips: abduct 30,
repeat 12 —
rendered live in the browser.
For example:
Bend your knees, move your hips backward, and keep your chest upright.
A human may understand that instruction, but a renderer cannot reliably determine:
Large language models can often reason about the components of human movement, but they lack a standardized syntax for expressing that reasoning in a renderable and testable form.
Posecode provides that missing representation.
From an LLM prompt to editable Posecode, validated 3D rendering, MCP tools, and a one-script web embed.
▶ Watch the 28-second builder demo
Plain text in. Smooth, programmable 3D motion out.
pelvis: hinge — deadlift
|
knees: flex 95 — squat
|
shoulders: abduct 90 — lateral raise
|
Neural text-to-motion systems can generate impressive movement, but they introduce problems for lightweight, programmable applications.
Many systems require large models and GPU-backed inference, making real-time consumer deployment expensive.
They usually produce coordinate trajectories rather than editable semantic instructions.
It is difficult to request a precise change such as:
Reduce knee flexion by 10 degrees during the second phase.
Black-box trajectories do not naturally expose readable joint rules, phase definitions, or range-of-motion limits.
When a movement looks wrong, developers may not know which semantic instruction caused the problem.
Posecode uses a lightweight, text-driven pipeline.
.posecode documents.A .posecode file describes movement as timed phases with targeted joint actions.
1. Write .posecode | 2. Render the movement |
|---|---|
posecode exercise "Body-weight squat"rig humanoidpose start = standingstep "Descend" 1.6s settle:hips: flex 80knees: flex 95ankles: dorsiflex 14ground-lock: feetcue "Sit the hips back"step "Drive up" 1.2s drive:hips: flex 0knees: flex 0ankles: dorsiflex 0ground-lock: feetrepeat 8 | ![]() |
OpenAI Build Week 2026: Posecode existed before the hackathon. During Build Week, the project was extended using Codex — running on GPT-5.6 — as the primary engineering tool for a real batch of shipped work: motion/grounding quality, language contract diagnostics, licensing restructuring, release automation, and product-facing pages. The sections below distinguish previous work from Build Week work using actual commit history, not a roadmap.
Before Build Week, Posecode already included:
.posecode domain-specific language,This original version was developed primarily with Claude as an AI-assisted engineering tool.
That prior work provides the foundation for the project, but it is not presented as the new hackathon contribution.
Every item below is a merged, dated pull request built with Codex (GPT-5.6) — see Build Week Evidence for direct links.
drive/settle/flow/snap), a parser validation CLI, and embed compatibility metadata (#62)./for-products page documenting the web component, parser, renderer, and MCP server for integrators (#82, #74).During Build Week, Codex sessions ran on GPT-5.6 (GPT-5.6 Terra), which is the model that powers Codex for this event. GPT-5.6 is the reasoning engine behind every Build Week change listed above: reading the existing monorepo, proposing the ROM-constrained IK and contact-surface design in #76, designing the language/IR v0.3 diagnostics in #92, and drafting the licensing boundary in #84.
A GPT-5.6-powered natural-language-to-Posecode generation feature (describe a movement in plain English, get a validated .posecode document back) is a natural next step given the existing posecode_authoring_guide MCP tool, but it is not yet built — it is not claimed as shipped functionality here.
Codex is the primary engineering tool used for the Build Week extension.
During the hackathon period, Codex was used to:
Codex accelerates implementation, but the project remains human-directed. The following decisions were reviewed and selected manually: DSL semantics, system architecture, licensing boundaries, biomechanical constraints, validation policy, user experience, and acceptance or rejection of generated code.
The Build Week workflow follows this process:
npm run eval).All Build Week work is public, dated, and directly linked below — no placeholders.
| PR | Merged | What it did |
|---|---|---|
| #62 | 2026-07-15 | Posecode 0.2 timing vocabulary, validation CLI, embed compatibility |
| #61 | 2026-07-15 | Per-side ground-lock validation |
| #65 | 2026-07-16 | Google Search indexing fix |
| #66 | 2026-07-16 | npm + MCP Registry release automation |
| #64 | 2026-07-16 | Back ground-lock for supine movements |
| #74 | 2026-07-16 | /for-products integration page |
| #76 | 2026-07-17 | Motion/grounding overhaul: ROM-constrained reach IK, contact surfaces |
| #78 | 2026-07-17 | Mobile viewer sizing and natural hand orientation |
| #82 | 2026-07-17 | LLM-first landing page redesign |
| #84 | 2026-07-17 | Apache-2.0 / AGPL-3.0 licensing restructure |
| #92 | 2026-07-19 | Language/IR v0.3, grounding/self-collision diagnostics, floor guide |
| Before Build Week | Added during Build Week |
|---|---|
| Core Posecode DSL | Language/IR v0.3 custom start-pose blocks |
| Basic ROM clamping | Grounding, self-collision, and floor-guide diagnostics |
| Working IK/grounding | ROM-constrained reach IK with semantic contact surfaces |
| Single license file | Apache-2.0 / AGPL-3.0 layered licensing with commercial path |
| Manual publishing | Automated npm + MCP Registry release pipeline |
| Editorial landing page | LLM-first landing page + /for-products integration page |
| Existing tests | New diagnostics, IK, and licensing regression tests |
┌─────────────────────────┐
│ Natural-language prompt │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ GPT-5.6 authoring layer │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ .posecode source │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Parser and ROM checking │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ Kinematics and IK layer │
└────────────┬────────────┘
│
├─────────────────────┐
▼ ▼
┌─────────────────────────┐ ┌──────────────────────┐
│ Three.js/WebGL renderer │ │ Fidelity measurements│
└─────────────────────────┘ └──────────┬───────────┘
│
▼
┌──────────────────────┐
│ GPT-5.6 Physics │
│ Critic and revision │
└──────────────────────┘
Preview, edit, and share movements without installing anything:
Requirements:
Clone the repository:
git clone https://github.com/posecode-dev/posecode.git
cd posecode
Install dependencies:
npm install
Start the playground:
npm run dev
Run tests:
npm test
Run type checking:
npm run typecheck
Run fidelity evaluations:
npm run eval
Build the playground:
npm run build
A VS Code extension provides syntax highlighting, ROM diagnostics, and
completion for .posecode files — see
editors/vscode. Until it is published, you can
get basic highlighting immediately by associating .posecode files with
Markdown:
"files.associations": {
"*.posecode": "markdown"
}
See the editor guide for VS Code, Cursor, Sublime Text, and Neovim instructions.
Posecode includes a Model Context Protocol server for AI agents.
Run it with:
npx -y posecode-mcp@latest
Example MCP client configuration:
{
"mcpServers": {
"posecode": {
"command": "npx",
"args": ["-y", "posecode-mcp@latest"]
}
}
}
The MCP server exposes:
validate_posecoderender_posecodeSee packages/posecode-mcp for the complete configuration and tool documentation.
Embed a Posecode player on a page:
<script src="https://unpkg.com/posecode-embed/dist/posecode-embed.js"></script>
<posecode-player src="/movements/squat.posecode"></posecode-player>
The player can be used in:
Install the parser:
npm install posecode-parser
Install the renderer:
npm install posecode-render
Example:
import { parse } from "posecode-parser";
import { createViewer } from "posecode-render";
const source = `
posecode exercise "Lateral raise"
rig humanoid
pose start = standing
step "Raise" 1.4s settle:
shoulders: abduct 90
`;
const { ir, errors, warnings } = parse(source);
if (!ir || errors.length > 0) {
console.error(errors);
} else {
console.warn(warnings);
const viewer = createViewer(document.querySelector("#viewer"));
viewer.load(ir);
viewer.play();
}
The #viewer element is an HTML <canvas>.
posecode-render can bake a movement into a Biovision Hierarchy
(.bvh) file for import into Blender and other animation tools. In the
playground, use the Download BVH button; programmatically:
import { parse } from "posecode-parser";
import { exportBVH } from "posecode-render";
const { ir } = parse(source);
const bvh = exportBVH(ir!, { fps: 30 }); // string, ready to write to disk
Options: fps (default 30), scale (default 1 = metres; pass 100 for
centimetres), includeFingers (default false), and proportions for a
calibrated rig.
Zrotation Xrotation Yrotation (Euler order ZXY).reach: hand_left floor) export the authored pose rather than the
solved one. See issue #63.For web animation pipelines, posecode-render can export the rig and a
baked animation clip as a glTF/GLB asset. In the playground, use Download
glTF; programmatically:
import { parse } from "posecode-parser";
import { exportGLTF } from "posecode-render";
const { ir } = parse(source);
const glb = await exportGLTF(ir!); // GLB ArrayBuffer (default)
const gltf = await exportGLTF(ir!, { binary: false }); // glTF JSON object
The result loads with Three.js GLTFLoader,
and the clip plays on the included rig:
const gltf = await new GLTFLoader().loadAsync(url);
const mixer = new THREE.AnimationMixer(gltf.scene);
mixer.clipAction(gltf.animations[0]).play();
posecode_root.Posecode uses multiple layers of checking.
Joint angles are constrained before rendering.
For example:
knees: flex 200
is clamped to the configured knee-flexion limit and produces a warning instead of rendering an impossible angle.
The engine measures the actual resulting skeleton after:
Movement examples can define expected properties.
For example, a deadlift may require:
The Build Week critic interprets the movement and deterministic measurements together.
It explains biomechanical problems in natural language and proposes specific revisions.
| Package | Purpose |
|---|---|
posecode-language | Language definitions and editor support |
posecode-parser | Converts .posecode text into a validated, range-constrained intermediate representation |
posecode-render | Renders animated figures with Three.js, forward kinematics, and IK |
posecode-share | Encodes Posecode documents into URL-safe share tokens |
posecode-mcp | Exposes Posecode capabilities to AI agents through MCP |
posecode-eval | Runs headless biomechanical and geometric fidelity evaluations |
playground | Interactive editor, 3D viewport, warnings, generation, critique, and sharing |
Posecode is built with:
Posecode currently focuses on:
The following are outside the current scope:
Posecode is an engineering and visualization project.
Its range-of-motion values and biomechanical checks are based on general reference data and simplified models.
They are not:
Generated movements should be reviewed by a qualified expert before being used for healthcare, rehabilitation, or safety-critical applications.
Posecode could support:
posecode/
├── packages/
│ ├── posecode-language/
│ ├── posecode-parser/
│ ├── posecode-render/
│ ├── posecode-share/
│ ├── posecode-mcp/
│ └── posecode-eval/
├── playground/
├── editors/
├── spec/
├── docs/
├── scripts/
└── README.md
Run all unit tests:
npm test
Run coverage:
npm run coverage
Run type checking:
npm run typecheck
Run biomechanical evaluations:
npm run eval
The CI workflow verifies that the project:
Posecode follows the design study:
Kinematic Motion Definition Protocols for Large Language Models
The project explores whether semantic, text-based movement programs can provide a controllable and inspectable alternative to black-box motion generation.
The specification covers:
See:
The hosted playground currently uses an Adobe Mixamo character and one showcase animation under the applicable Adobe terms. These binary assets are not covered by Posecode's software licenses. See third-party notices.
The renderer also includes a zero-asset procedural figure and accepts compatible humanoid GLB characters through characterUrl.
Posecode is open source with a clear standard and product boundary:
| Layer | Components | License |
|---|---|---|
| Open standard | Specification, examples, parser, share codec, language service, LSP, VS Code extension | Apache-2.0 |
| Product layer | Renderer, web embed, MCP server, eval harness, hosted playground | AGPL-3.0-only |
Organizations that need to use an AGPL component in a closed-source product may contact hello@posecode.org about a separate commercial agreement.
Earlier grants are unchanged. MIT revisions remain MIT, and the 0.2.2 npm packages remain Apache-2.0. See licensing, commercial licensing, and trademark policy.
Feedback and contributions are welcome.
LLMs already have languages for software, data, and interfaces.
Posecode gives them a language for movement.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows