npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@three-ws/create-agent

v0.1.0

Published

One command from a sentence to a rigged, animated 3D agent you can embed anywhere. npm create @three-ws/agent "a friendly cartoon astronaut"

Readme

@three-ws/create-agent

One command from a sentence to a rigged 3D character you can put on your site.

npm create @three-ws/agent "a friendly cartoon astronaut in a glossy white suit"
three.ws building "a friendly cartoon astronaut in a glossy white suit"
  a rigged humanoid, free lane, no account needed

· sent to the three.ws forge
· generating the figure (15s)
· generating the figure, then the skeleton (60s)
✓ model ready
· downloading the model

Friendly Cartoon Astronaut is ready in 94s

  folder  a-friendly-cartoon-astronaut/
          index.html
          agent.json
          README.md
          agent.glb (3.4 MB)
  viewer  https://three.ws/viewer?src=…

  Paste this anywhere:

  <script type="module" src="https://three.ws/agent-3d/latest/agent-3d.js"></script>

  <agent-3d body="https://three.ws/cdn/…/rigged.glb"
            name="Friendly Cartoon Astronaut"
            style="width:100%;max-width:420px;height:520px"></agent-3d>

  Open the demo:  npx serve a-friendly-cartoon-astronaut

No account. No API key. No signup. The generation runs on the three.ws free lane, and the platform's own provider keys cover it.

What you get

| File | What it is | | --- | --- | | agent.glb | The model, with a humanoid skeleton, so it can be posed and animated. Opens in Blender, Unity, Godot, or any glTF tool. | | index.html | A working demo page. Double click it. | | agent.json | The record: prompt, hosted URLs, backend, timing. | | README.md | How to embed it and where to go next. |

Options

npm create @three-ws/agent "a knight in worn steel armor" --out ./knight
npm create @three-ws/agent --photo https://example.com/me.jpg --name "Me"
npm create @three-ws/agent "a small ceramic frog figurine" --object

| Option | Meaning | | --- | --- | | --photo <url> | Build from a public https reference image instead of a description | | --out <dir> | Where to write the project (default: a slug of the description) | | --name <name> | Display name (default: derived from the description) | | --object | An object or prop (mesh only, free lane) instead of a rigged character | | --no-download | Keep the hosted model URL, skip writing agent.glb | | --json | Print the result as JSON and nothing else | | --origin <url> | API origin (default https://three.ws) |

Describe one full-body humanoid in a neutral standing pose for the best rig. Lead with the subject, then materials and colours: the free lane conditions on roughly the first 77 characters, so front-load what matters.

Programmatic use

import { createAgent } from '@three-ws/create-agent';

const made = await createAgent({
	prompt: 'a friendly cartoon astronaut',
	out: './astro',
	onProgress: ({ message }) => console.log(message),
});

made.result.glbUrl; // hosted, durable
made.result.rigged; // true
made.dir; // absolute path to the project

| Export | What it does | | --- | --- | | createAgent(opts) | The whole pipeline: generate, scaffold, download | | callForge({ tool, args, ... }) | One forge call (forge_avatar or forge_free) | | downloadModel(url) | Fetch the model bytes with a deadline | | projectFiles(...), demoPage(...), embedSnippet(...) | The scaffold, as pure functions | | ForgeError | Carries code: timeout, unreachable, no_model, rpc_error, http_<status> |

Everything takes { fetchImpl, signal, origin }, so it runs against a local three.ws, a proxy, or a test double.

How long it takes

A rigged character is generation plus rigging, usually one to three minutes; rigging is the slow half. An --object is faster. Every call carries an explicit deadline (10 minutes) and reports real elapsed time, never an invented progress bar. If the deadline hits, the job may still finish: finished models land at https://three.ws/creations.

Related

License

Apache-2.0