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

tvagent

v0.1.0

Published

Private Android TV dashboard for monitoring local Codex, Claude Code, and OpenCode activity via Effect HTTP and Server-Sent Events.

Readme

tvagent

Private Android TV dashboard service for local coding-agent activity.

tvagent runs on the Mac or workstation where Codex, Claude Code, and OpenCode are active. The Android TV app connects over Tailscale, renders the latest snapshot immediately, then stays current through Server-Sent Events.

What It Exposes

GET /health
GET /snapshot
GET /events

/snapshot returns the current dashboard state as JSON.

/events is an SSE stream. The TV opens one long-lived HTTP request and receives frames such as:

event: snapshot
event: task.started
event: task.updated
event: task.completed
event: metrics.updated
event: heartbeat

What It Scans

The service reads local files and databases only:

| Source | Local path | | --- | --- | | Codex | ~/.codex/sessions | | Claude Code | ~/.claude/projects | | OpenCode | ~/.local/share/opencode/opencode.db | | tvagent index | ~/.local/share/tvagent/tvagent.db |

Missing stores produce warnings in the snapshot instead of failing the whole dashboard.

The tvagent SQLite index is local cache state. If it is deleted, the service rebuilds it from the source logs for the configured history window.

Dashboard Shape

The TV contract is designed for a simple first screen:

  • three metric cards: today tokens, today sessions, estimated today work minutes
  • six task cards by default
  • active tasks first, then recently completed tasks
  • active means updated inside the last 15 minutes
  • each task includes model and may include thinkingLevel when the source exposes reasoning effort

The defaults can be tuned with environment variables:

| Variable | Default | Notes | | --- | ---: | --- | | TVAGENT_HOST | 0.0.0.0 | Bind address. Use the Mac's Tailscale address or 0.0.0.0. | | TVAGENT_PORT | 3333 | HTTP port. | | TVAGENT_ACTIVE_WINDOW_MINUTES | 15 | Active session window. | | TVAGENT_MAX_TASKS | 6 | Number of task cards in the snapshot. | | TVAGENT_HISTORY_DAYS | 1 | Local history window scanned for dashboard state. | | TVAGENT_REFRESH_MS | 30000 | Background index refresh and snapshot broadcast cadence. | | TVAGENT_HEARTBEAT_MS | 15000 | SSE heartbeat cadence. | | TVAGENT_TIME_ZONE | local system zone | Time zone used for today tokens, sessions, and work minutes. Snapshot timestamps remain UTC. | | TVAGENT_DB_PATH | ~/.local/share/tvagent/tvagent.db | SQLite index path. Override this for local clones or tests. | | TVAGENT_INDEX_SAFETY_WINDOW_MS | 300000 | Incremental index overlap for clock and flush delays. |

Development

pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm dev

Smoke the endpoints:

curl http://127.0.0.1:3333/health
curl http://127.0.0.1:3333/snapshot
curl -N http://127.0.0.1:3333/events

On Android TV, point the app at the Mac's Tailscale IP:

http://100.x.y.z:3333/snapshot
http://100.x.y.z:3333/events

Background Service

This repo does not install or write a launchd plist. To see a plist you can review and install yourself, run:

pnpm build
pnpm launchd:example

If you choose to use it, redirect the output to your own file under ~/Library/LaunchAgents/, review the paths and environment variables, then load it with launchctl. Keep the plist under your control so this repo never mutates your Mac login services automatically.