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

@vheins/opencode-pet-statusline

v0.2.0

Published

OpenCode v1 TUI plugin: an animated Tamagotchi-style pixel pet in the sidebar that reacts to background subagent activity.

Readme

opencode-pet-statusline

An animated Tamagotchi-style pixel pet for the OpenCode v1 TUI sidebar.

▼ Pet Nyatchi
    ████    ████
  * ████████████*
████    ██    ██████
  ████  ████  ████
  ████        ████
    ████████████
    ██        ██
· idle

The pet lives in the sidebar and reacts to what your background subagents are doing. Each project keeps the same companion: the sprite is picked deterministically from the repository path, so it is stable across restarts.

Moods

| Mood | When | Animation | | --- | --- | --- | | sleeping | no subagents running, nothing recent | z Z z * bubble floats over the head | | processing | at least one subagent running | arms wave, a * spark trails | | completed | work finished, nothing running | sparkles on both sides | | failed | a subagent errored | alert sparks, slump |

Sprites are ported from review-agent — packages/backend/src/tui/sprites: 51 hand-drawn 8×8 bitmaps, 5 moods each, 4 animation frames per mood.

Resolution

Each bitmap cell is drawn as N characters wide, with N chosen from the sidebar width so the pet always fits without wrapping:

usable  = sidebar_width - 6      (sidebar is 42 columns)
scale   = clamp(1, floor(usable / 8), 2)

Terminal cells are about twice as tall as they are wide, so scale = 2 makes the 8×8 art look square. Narrow terminals fall back to scale = 1.

Install

Register the plugin path in ~/.config/opencode/tui.json:

{
  "$schema": "https://opencode.ai/tui.json",
  "plugin": [
    "/home/vheins/.config/opencode/plugins/opencode-pet-statusline"
  ]
}

tui.json is the v1 TUI config file — v1 does not read cli.json. A plugin that only contributes TUI slots must not be listed in opencode.json (the server config rejects a plugin without server()).

Sidebar order: Context 100, Subagents 150, MCP 200, Memory 250, Pet 260, LSP 300, Todo 400, Files 500.

Configuration

| Env var | Default | Purpose | | --- | --- | --- | | PET_SCALE | auto (1–2) | force the horizontal scale | | PET_SEED | session directory | force which sprite is used | | PET_SIDEBAR_WIDTH | 42 | sidebar width used for the auto scale |

Animation runs at 160 ms per tick; each mood holds its frame for 3–6 ticks. Click the ▼ Pet header to collapse the section.

Requirements

  • OpenCode >= 1.18.0 (v1 TUI slot API: api.slots.register({ slots: { sidebar_content } }))
  • Optional: the subagent monitor (opencode-asynchronous-agent) writes the state file the pet reads to decide its mood. Without it the pet stays sleeping.

License

MIT. Sprite bitmaps are ported from review-agent (same author).