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

vibeoffice

v1.1.0

Published

A cozy pixel-art office where your Claude Code agents live

Readme

🏢 vibeoffice

A cozy pixel-art office where your Claude Code agents live.

Every Claude Code session you run becomes a little pixel person at a desk. They type when the agent edits code, leaf through papers when it reads files, walk to the coffee machine when it waits for your permission, fall off the chair when a tool errors out — and confetti flies when the job ships.

It's a meme. It's also a genuinely useful glanceable monitor for multi-agent work: who's running, who's stuck waiting, who's burning tokens, and how much today costs.

vibeoffice demo

What's new in v1.1.0

  • Pick the model when you hire — Opus 4.8, Sonnet 5 or Haiku 4.5, right in the hire dialog.
  • Visual overhaul — tiled floor with real zones (kitchen, lounge, meeting corner, work rug), redrawn sprites with outlines and shading, day/night lighting with window light beams, and live micro-animations: coffee steam, dust motes in the sun, water-cooler chatter.

Quick start

npx vibeoffice

That's the whole thing — one command downloads it, starts the server and opens the office in your browser (http://localhost:4180). If Claude Code is running anywhere on your machine, the office is already alive.

  • Run it again: same command, every time
  • Stop it: Ctrl+C in that terminal
  • Port taken? npx vibeoffice --port 4200
  • Want a permanent command? npm i -g vibeoffice, then just vibeoffice

No Claude Code right now? Watch the show anyway:

npx vibeoffice --demo

Or from source: git clone https://github.com/acost1a/vibeoffice && cd vibeoffice && npm i && npm run build && node dist/server/cli.js

What you're looking at

| In the log | In the office | |---|---| | New session starts | Character walks in through the door | | Read / Grep / Glob | Leafs through papers 📄 | | Edit / Write | Types furiously, code scrolls on the monitor ⌨️ | | Bash | Terminal window blinks on the desk 🖥️ | | WebSearch / WebFetch | Globe thought-bubble 🌐 | | Spawns a subagent (Task) | New hire walks in, gets a whiteboard briefing ✏️, sits next to the parent | | Waiting for permission | Walks to the coffee machine, bell rings by the door ☕🔔 | | Tool fails | Falls off the chair, red alarm spins, a coworker comes to gawk ❗ | | Idle 5+ minutes | Naps on the lounge couch 💤 | | Session ends | Waves goodbye, confetti, +1 on the shipped counter 🎉 |

Plus an office that lives its own life: NPC coworkers who print, water plants and gossip, a cat that chases the robot vacuum (and sometimes rides it), an aquarium, clouds drifting past the windows, real-time wall clock, day/night lighting after 7pm, pizza at lunch, and a wall TV charting your token burn in real time.

Click any character for details: current action, file being edited, model, tokens, cost, recent tool calls.

Run the office, don't just watch it

  • ➕ HIRE AGENT — pick a specialization (📊 Excel Master, 📝 Word Master, 📽️ PowerPoint Master, 🧑‍💻 Coder, 🔍 Researcher), a model (🧠 Opus 4.8 / ⚖️ Sonnet 5 / 🐇 Haiku 4.5), type a task, choose a folder. A real Claude session spawns and walks in through the door.
  • Chat at the desk — click a hired agent and message it straight from the office.
  • Permissions at the coffee machine — when a hired agent needs a risky tool, it walks off for a coffee and an ALLOW / DENY card pops up for you.
  • 🛑 Fire them whenever you like.

Hiring runs on the Claude Agent SDK with your existing local Claude login. Sessions started from your own terminal stay read-only («👁 observed») — their stdin belongs to your terminal, not the office.

How it works

Claude Code writes every session to JSONL files in ~/.claude/projects/. vibeoffice tails those files (read-only — it never touches Claude Code itself), normalizes them into events, runs a small state machine per agent, and streams updates to the browser over WebSocket. The scene is PixiJS; every sprite is drawn in code, no asset files.

~/.claude/projects/**/*.jsonl → tail → adapter → state machine → WebSocket → pixel office

Zero configuration. Zero hooks. Nothing phones home — everything stays on your machine.

Flags

--port <n>    port to listen on (default 4180)
--dir <path>  logs dir, if yours lives somewhere unusual (default ~/.claude/projects; handy for WSL setups)
--demo        replay a bundled session — no Claude Code needed
--no-open     don't auto-open the browser

Cross-platform

macOS, Linux, Windows. If Claude Code runs inside WSL but vibeoffice outside (or vice versa), point it at the logs with --dir.

Roadmap

  • [ ] Adapters for Codex CLI and Gemini CLI (the Adapter interface is already there)
  • [ ] Project rooms with doors and nameplates
  • [ ] Sound (keyboard clatter, coffee machine, cat)
  • [ ] Stream overlay mode

License

MIT