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

mojulo

v1.5.0

Published

Mojulo — the agent's workshop: a local MCP server where you build repeatable things by talking to Claude Code or Codex — self-hosted chatbots, connected services, apps, worlds, music, and playable games — each a tiny deterministic recipe on your machine,

Readme

Mojulo

Mojulo is a workshop for coding agents — local, yours, not a hosted service. You talk to the agent you already run (Claude Code, Codex); it does the reasoning, and mojulo is the machine it works in, where what it builds accumulates on your own disk. And what it builds isn't a menu of separate features — it's a ladder: a chatbot becomes a connected service when you wire in your MCPs, apps and services become experiences, worlds and music become a game's assets, and a game composes the whole stack. Each rung is a tiny deterministic recipe — small enough to read, seeded to regenerate identically, never a render.

Not a second brain — a body. Your agent is the only intelligence in the loop. Mojulo holds state, runtime, and the audit trail, and needs no LLM credentials of its own: apps park inference back on the agent's queue, photo references are read by the agent's eyes, publications are agent-authored, games are verified by agent-compiled traversals. Mojulo supplies what a stateless agent lacks — persistence, runtime, memory; the agent supplies what mojulo refuses to embed — judgment, vision, language. Optional local workers (Blender, image and audio models) add compositional capability.

Built for fresh context. The tool surface unfolds progressively — modular packs are read only when your intent calls for them, so a session spends tokens only on what it fires. And because every artifact is anchored by a recipe, a later agent iterates it with a parameter change instead of a rebuild — a fresh session picks up and improves what the last one made, instead of starting over.

Three binaries, one install:

  • mojulo — stdio MCP server (npx -y mojulo, wired into Claude Code, Codex, or any other MCP host).
  • mojulo-ui — local dashboard for visual operation (npx -y -p mojulo mojulo-ui).
  • mojulo-config — provider key CLI (npx -y -p mojulo mojulo-config set anthropic sk-...).

Both mojulo and mojulo-ui share the same ~/.mojulo/ state, so anything you mint from your agent shows up in the dashboard immediately, and vice versa.

Quickstart

Prerequisite: Node.js 22.12+ (node --version). Everything below runs through npx, which ships with Node — if you don't have it, install it from nodejs.org, or ask your coding agent to install it for you.

# 1. Wire mojulo into your MCP-capable agent. The one-shot installer detects
#    Claude Code, Codex, and Claude Desktop, asks y/n per host, and opens the dashboard:
npx mojulo init
#    Or wire manually —
#    Claude Code:
#      claude mcp add --scope user mojulo -- npx -y mojulo
#    Codex CLI: add to ~/.codex/config.toml
#      [mcp_servers.mojulo]
#      command = "npx"
#      args = ["-y", "mojulo"]
#    Claude Desktop: add under "mcpServers" in claude_desktop_config.json, then restart it
#      "mojulo": { "command": "npx", "args": ["-y", "mojulo"] }
#    Other MCP hosts: register the same `npx -y mojulo` stdio command.

# 2. (Only needed for deployed bots — they bring their own LLM key.
#    Everything else runs keyless.)
npx -y -p mojulo mojulo-config set anthropic sk-ant-...

# 3. In an agent session, just ask.

CLI

The same mojulo bin doubles as a command-line front door over the same engine and data — no agent, no dashboard, no API key required. Useful for spot checks, cron jobs, and CI:

npx mojulo tools                      # the connect surface: spine + packs
npx mojulo tools pack_audio           # one pack's members
npx mojulo packs                      # pack ids with their recognizers
npx mojulo help create_beats          # full description + input schema
npx mojulo call version               # invoke any tool
npx mojulo call create_beats --json '{"intent":"calm loop"}'
npx mojulo pack_audio                 # open a pack: orientation + member manual
npx mojulo pack_audio create_beats --json '{"intent":"calm loop"}'

Arguments can be inline JSON (--json '{…}', @file.json, or - for stdin) or per-property flags derived from the tool's schema (--theme dungeon --seed 7; flags win over --json). --timeout <ms> bounds long-poll tools (exit code 124), --quiet keeps only the exit code (0 success, 1 tool error, 2 usage). Results print to stdout as-is, so npx mojulo call version | jq . works; diagnostics go to stderr. Bare npx mojulo remains the stdio MCP server.

What you can make

  • "Build me a triage bot for my dental practice" → a compiled, self-hosted chatbot artifact — its own Docker zip, its own SQLite, every turn hash-chained. Run it locally or deploy to Fly.
  • "Every Monday, digest my form submissions into Drive" → a connected service over the MCPs you already have installed, with an append-only record of why it's composed the way it is.
  • "Give me a local app that extracts fields from these scans" → a scaffolded local process + MCP sidecar; its inference queues back to your agent — no per-app API key.
  • "Draw the architecture" / "a walkable city at dusk" / "an ambient loop for it" → media: diagrams, worlds, figures, music, films, publications — minted as tiny deterministic recipes (a world is ~30 tokens, not megabytes of mesh), re-rendered byte-identically on demand, exportable (.glb, .stl, WAV/MIDI, self-contained HTML).
  • "Make me a game" → composition: media levels, music, and art bound to a typed store with rules — playable standalone. 2D reducer games land in the built-in Arcade.

On first connect your agent calls forward_context — a thin routing index that unfolds progressively, so a session spends tokens only on the tools it actually fires; the full tool surface stays behind drawers until needed. The optional mojulo-orient gallery gives consent-first guided tours that mint real starter artifacts.

Why it's different

  • Keyless. Installed from npm, runs on your machine, nothing to sign up for. The MCP binds to localhost only.
  • Recipes, not renders. Creative artifacts are seeded deterministic recipes — diffable, replayable, re-mintable on any mojulo host. Painted images and audio renders are derived files with provenance, never the sovereign artifact.
  • It remembers why. Every artifact is minted beside an append-only record of intent (the contextmap), so a fresh session reconstructs prior decisions and improves the existing outcome instead of minting a stranger next to it.
  • Verification gates. Bots are hash-chain auditable (verify_chain), workflows dry-run before they promote.

Dashboard

npx -y -p mojulo mojulo-ui                # auto-port, opens browser
npx -y -p mojulo mojulo-ui --port 3999    # pin the port
npx -y -p mojulo mojulo-ui --no-open      # skip browser launch

Same primitives as the MCP, different face: browse conversations and fleet analytics, walk your worlds, play your games in the Arcade, review game projects at a glance. It renders state and hands authoring back to your agent — the workshop is driven from the conversation.

The dashboard starts in English but ships fully translated in ~two dozen languages, including right-to-left scripts (Arabic, Farsi, Urdu) — switch anytime under Settings → Language; the choice is remembered per browser.

1.0

From 1.0.0 the five paradigm loops (bot · connected service · app · media · game) and the recipe format are the stable surface: additive-only DB migrations, deterministic re-render of stored recipes, loopback-only transport. The creative vocabularies keep growing in minor releases. See the changelog.

More

License

Apache License 2.0