Skip to content
PluginStats

@threadbase-sh/streamer weekly downloads statistics

By threadbase-sh · npm · Claude Code

PTY session management, WebSocket streaming, and REST API server for Claude Code conversations

View on npm Fresh · Oct 17, 2026

@threadbase-sh/streamer has 555 recorded weekly downloads on npm, a decrease of 90.3% over the past 30 days.

It ranks #1481 of 2,251 tracked npm listings by weekly downloads.

Over 90 days, weekly downloads changed by -72.6%.

PluginStats has 543 daily observations since Apr 23, 2025; the latest is from Oct 17, 2026.

Weekly downloads
555
Official API · Oct 17, 2026
7-day growth
-79.3%
-2.1K weekly downloads
30-day growth
-90.3%
-5.2K weekly downloads
90-day growth
-72.6%
-1.5K weekly downloads
Rank
#1481
Among tracked npm listings

About @threadbase-sh/streamer

@threadbase-sh/streamer

Runs and manages Claude Code sessions on a server: spawns them in a PTY, streams terminal output over WebSocket, and exposes a REST API for conversation history, search, and session control.

Quick Start

npm (recommended)

Only node-pty compiles on install; everything else ships prebuilt.

Homebrew (macOS + Linux)

Stop/restart with brew services stop|restart tb-streamer. Mutually exclusive with the manual scripts/deploy.sh install — if switching from that, run launchctl bootout gui/$UID/com.threadbase.streamer first.

Build locally

That is the interactive path: same ~/.threadbase/ as a supervised install (server.yaml, cache, runtime.db), but it will prompt if port 8766 is already taken. --prod skips those prompts and the prod-takeover flow; it is not a separate environment. To run the checkout as launchd would:

Restore the supervised instance with tb-streamer service start. Detail: docs/guides/prod-dev-lifecycle.md.

Server address

By default, the server listens on port 8766 on all interfaces (WebSocket path: /ws).

Automatic updates

npm and Homebrew installs can auto-update: docs/guides/auto-update.md.

Remote Access

The server listens on port 8766 on all interfaces by default, so devices on the same LAN can already reach it. To restrict it to this machine, start it with tb-streamer serve --host 127.0.0.1. To let the mobile app reach it from *outside* your LAN, expose it via a tunnel — the fastest is a Cloudflare quick-tunnel (no account needed):

Before you do this, read Security. A tunnel makes the server reachable from the public internet, and the API key is the only thing between a stranger and a shell on this machine.

Other providers and full setup: docs/guides/remote-access.

Development

Security — read this before exposing the server

The API key is equivalent to a shell on this machine. The streamer exists to start Claude Code sessions and type into them, so anyone holding the key can run commands as your user, in any project the server can reach. Treat it like an SSH private key, not like a web session token.

The key lives at ~/.threadbase/server.yaml as plaintext (chmod 0600), which is the same posture as ~/.aws/credentials or ~/.npmrc. Rotate it with POST /api/auth/rotate if it leaks; re-pair your devices afterwards.

The server listens on all network interfaces by default, not just loopback. So every device on your LAN can already reach port 8766, and the API key is the only thing stopping them. On a home network that is usually fine; on café Wi-Fi, a co-working space, or a corporate VLAN it is not. To bind only to loopback, run:

A tunnel extends that to the entire internet. From that moment the key is the only thing between a stranger and your filesystem.

For stricter network policies, also use your firewall or a network namespace.

There is no spend limit

Nothing in this server caps what a session costs. There is no per-session, per-day, or total ceiling, and no way to configure one — a runaway agent bills your provider account until you stop it. (--max-budget-usd is not a workaround: it only applies to claude --print, which this server never uses, so it was silently inert and has been removed.)

The practical bound is that a session waits for input between turns. Auto-resume and bypass modes both weaken that bound — see below.

Permission modes decide how much a session can do unattended

Sessions spawn with --permission-mode, default acceptEdits: file edits are auto-approved, shell commands still prompt. The first-run prompt offers only acceptEdits and manual, so the unattended modes are never something you pick by accident.

bypassPermissions and dontAsk are available through --default-permission-mode and PUT /api/config/claude-flags, and they remove the confirmation step entirely. A session in either mode is unattended arbitrary code execution: a leaked key no longer stops at a human-in-the-loop prompt. --add-dir compounds this by widening filesystem scope beyond the project.

If you enable one, you are accepting that the auth boundary is the *only* remaining control. Two guardrails exist and neither is a substitute for that judgement: PUT /api/config/claude-flags is refused with 403 while --local-no-auth is active, and every flag change is logged with its old and new value.

Auto-resume starts agents without you

auto_resume_on_boot in server.yaml re-starts sessions that a previous run was interrupted mid-flight. It defaults to false and is never enabled implicitly — it is the one setting that lets the streamer start an agent nobody asked for in that moment, and combined with a bypass permission mode that is unattended code execution after a reboot.

Leave it off unless you have a reason, and do not combine it with a bypass mode unless you fully trust everything that can reach the API.

Reporting a vulnerability

See SECURITY.md in the umbrella repo.

Persistence

Conversation metadata is cached in SQLite at ~/.threadbase/cache/cache.db, created and migrated automatically — no setup needed.

Live PTYs do not survive a restart, but sessions are not lost: the managed-session registry (~/.threadbase/runtime.db) brings interrupted sessions back in GET /api/sessions as resumable stubs, and any conversation can be resumed with POST /api/sessions/resume. History itself is always on disk, written by the provider.

PostgreSQL is optional and only stores upload records today. Enable it by setting THREADBASE_DATABASE_URL; migrations run automatically.

Architecture

Three layers: core engine (src/*.ts) → API layer (src/api/ + src/index.ts) → CLI (cli/).…

Description from the npm listing.

  • claude
  • claude-code
  • pty
  • websocket
  • terminal
  • streamer
  • threadbase

Where @threadbase-sh/streamer sits in the listing

Each band is one page of 20. Weekly downloads on a log scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

All npm2,248 listings · 113 pages · page 75, #2 (overall #1482)
All npm: every listing in weekly downloads order
PNG SVG
Claude Code233 listings · 12 pages · page 10, #19 (overall #199)
Claude Code: every listing in weekly downloads order
PNG SVG

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

@threadbase-sh/streamer weekly downloads on npm, last 90 days: 555 weekly downloads as of Oct 17, 2026, -72.6% over 90 days.@threadbase-sh/streamerWeekly downloads on npm · Last 90 days555downloads / week-72.6% over 90 days01K2K3K4K5K6K7KJul 19Aug 3Aug 18Sep 2Sep 17Oct 2Oct 17downloads / weekobservedarchived (Internet Archive)no observationsJul 20, 2026 – Oct 17, 2026 · 90 observations · Updated Oc…pluginstats.com
@threadbase-sh/streamer weekly downloads on npm, last 90 days: 555 weekly downloads as of Oct 17, 2026, -72.6% over 90 days.
PNG SVG

7/30/90-day growth

@threadbase-sh/streamer weekly downloads growth on npm: -79.3% over 7 days, -90.3% over 30 days, -72.6% over 90 days.@threadbase-sh/streamerWeekly downloads growth on npm555downloads / week now7-day growth-2,130 weekly downloads-79.3%30-day growth-5,159 weekly downloads-90.3%90-day growth-1,471 weekly downloads-72.6%Growth vs. nearest observation to each baseline date · Updated Oct 17, 2026pluginstats.com
@threadbase-sh/streamer weekly downloads growth on npm: -79.3% over 7 days, -90.3% over 30 days, -72.6% over 90 days.
PNG SVG

Ranking history

@threadbase-sh/streamer npm ranking history: currently #1481 (by weekly downloads).@threadbase-sh/streamernpm ranking · by weekly downloads · Last 90 days#1481current rank#400#600#800#1000#1200#1400#1600Jul 20Aug 4Aug 19Sep 3Sep 18Oct 3Oct 18rankOct 17, 2026 – Oct 18, 2026 · 2 observations · Updated Oct 17, 2026pluginstats.com
@threadbase-sh/streamer npm ranking history: currently #1481 (by weekly downloads).
PNG SVG

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Recent observations

Full history (543)
Recent weekly downloads observations for @threadbase-sh/streamer
Date (UTC)Weekly downloadsChange vs. previous
555-367
922-176
1,098-421
1,519-875
2,3940
2,394-433
2,827+142
2,685-391
3,076+118
2,958-47
3,005+314
2,691-41
2,732+326
2,406—

Similar npm Claude Code plugins

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/@threadbase-sh/streamer. First seen Oct 16, 2026; last successful collection Oct 18, 2026. See the methodology.