Skip to content

Open Source Friday - three.ws - TBD #254

Description

@nirholas

Name

Nich

GitHub Handle

@nirholas

Tell us about yourself

Double bachelors in Marketing and Computer Science from UW. Provided security research services to Apple, AT&T, Microsoft, Google, the U.S. Department of Defense, and the State of California government. Prior to three.ws I worked in full-stack development for some of the largest companies and brands. I am also an author and contributor at Entrepreneur Magazine.

I build three.ws, an open source (Apache-2.0) framework for 3D AI agents on the web. My background is full-stack and real-time graphics, and most of my work now sits at the seam between Three.js rendering and agent runtimes, which is a place where very little tooling existed until recently. I maintain the project day to day: triage, reviews, releases, and the docs.

Project Name

three.ws

Project Repo Link

https://github.com/nirholas/three.ws

Topic: Give your AI a body. Any rig, any page, one tag.

The pitch: every AI agent on the web today is a text box. three.ws gives it a body: a text prompt becomes a rigged, animation-ready 3D avatar, and one <agent-3d> tag puts it on any page with an LLM brain, memory, and moods behind it. Browser-native: Three.js and glTF, no plugin, no game engine, no upload step. The part that makes it an open source story rather than a product demo is the rig problem, and that is what I want to spend the stream on.

The rig problem, in one sentence: every humanoid model in the wild names its bones differently (Mixamo says LeftArm, Unreal says upperarm_l, VRoid says J_Bip_L_UpperArm, Daz says lShldr, MikuMikuDance says 左腕), and an animation clip addresses bones by name, so a rig we do not recognise loads, renders, and never moves. We solve it with one canonical skeleton and a mapping layer that rewrites any convention onto it, so one shared clip library retargets onto anything. Twelve conventions today. Every new one is a self-contained contribution: a mapping entry, a test, a docs row.

What I plan to cover, in your format:

  1. What it is (3 min). Prompt to rigged avatar to embedded on a blank page. Real generation, not a cached result.
  2. Demo (10 min). Three things live: (a) generate an avatar from a text prompt and watch it animate; (b) drop it into an empty index.html with one tag and drive its mood from the browser console; (c) upload a rig we do not support yet to Rig Doctor, our in-browser tool that tells you exactly which joints will not move and why.
  3. Motivation (5 min). Why "3D agent" was a dead end until the rendering and the runtime could talk, and what broke the first three times.
  4. How people contribute (10 min), done live. Take one of the open good first issues (a real bone-naming convention we confirmed maps 0 of 10 joints today), write the mapping, write the test, run the one-second test file, open the PR on stream. The reviewer is me, so it can merge on air.
  5. Last thing pushed / next thing (3 min). Honest answer both ways; the changelog is public and ships to a Telegram channel on every release, so I cannot fudge it.
  6. Audience questions.

Why this fits the program: the contributor pipeline is not a slide, it is the demo. Each curated first issue names the file to change and the command that proves it worked; the 15-minute clone-to-PR guide uses the most recent rig convention we added as its worked example, exactly as it landed with its tests; and the triage doc publishes the response times we hold ourselves to. A viewer who opens a PR during the stream gets reviewed during the stream.

Stream Date

  • Yes
  • Not yet

Dates

No response

Twitter URL

@nichxbt

LinkedIn URL

https://linkedin.com/in/nixholas

Additional Information

Project facts (verified today, 2026-08-25):

  • Apache-2.0, 104 stars, 26 forks, 11 contributors, hosted on GitHub since January 2026
  • 25,000+ passing tests; Playwright end-to-end on every public page
  • 12 rig conventions recognised and retargeted; the 12th (MikuMikuDance) landed this week and is the worked example in the contributor guide
  • 67 packages in the monorepo, including an MCP server on the official registry so coding agents can create and control avatars directly
  • Live at https://three.ws; anyone can try it in a browser with no account

Links a reviewer can check in a minute:

Logistics: Andrea (@acolombiadev) invited this request on X after watching a stream. Any Friday from 09-11-2026 on works; the title date is the first one I would take. Live is preferred, since the on-air PR is the whole point, but I can pre-record if that is easier for the schedule. Wired ethernet, separate mic and headphones, 1080p, a clean browser profile, and a template repo for the demo so it can be repeated.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions