Skip to content
PluginStats

@intentface/latch-server weekly downloads statistics

By intentface (9 listings) · npm · AI SDKs

The mountable Latch HTTP surface — one framework-agnostic Web handler (chat, approvals, lists, MCP connection OAuth). Hono adapter in the /hono subpath, Node (Express, Fastify, NestJS) in /node.

View on npm Fresh · Oct 17, 2026

@intentface/latch-server has 508 recorded weekly downloads on npm, an increase of 484% over the past 30 days.

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

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

Weekly downloads
508
Official API · Oct 17, 2026
7-day growth
-55.0%
-621 weekly downloads
30-day growth
+484%
+421 weekly downloads
90-day growth
—
Insufficient history
Rank
#1499
Among tracked npm listings

About @intentface/latch-server

@intentface/latch-server

The mountable HTTP surface for a Latch runtime — one framework-agnostic Web handler you mount at a single route in any Web-standard host (TanStack Start, Next, Bun, Deno, serverless). Express, Fastify and NestJS mount it through toNodeHandler from @intentface/latch-server/node.

What it does

createLatchHandler({ runtime, connections, resolveContext }) returns a (Request) => Response handler that exposes the runtime over HTTP:

• POST /agents/:agent/:id — run a chat turn (streams UIMessage SSE). • POST /agents/:agent/:id/approvals — submit HITL approval decisions (resumes the turn). • POST /agents/:agent/:id/tool-result — return a client-handled tool result (e.g. ask_question). • GET /agents/:agent/:id/history, GET /chats, GET /runs — projections for the UI. • GET/POST/DELETE /schedules, GET /schedules/:id, POST /schedules/:id/run-now — manage scheduled agents; GET/POST /cron/run — the host-guarded tick (a bearer token or x-latch-cron-secret, so Vercel Cron can call it). • GET /connections, …/:name/authorize, …/:name/callback, …/:name/disconnect, …/test — generic MCP connection OAuth + status.

resolveContext(request) turns a request into your Principal (bring-your-own auth). A Hono adapter is exported from the /hono subpath.

OAuth callback identity

The connection callback is the one route that does NOT authenticate via resolveContext. An IdP redirect arrives at a moment you don't control, so a degraded session there must never decide where credentials land. Instead, authorize pins the resolved principal into the OAuth flow state, and the callback rebuilds it from that pin:

The callback does not resume a waiting turn — the browser must not sit on a blank page for a whole run. Resuming is the client's job after the redirect: find the pending connect_ approval in the chat's history, submit it to POST /agents/:agent/:id/approvals, and read the continuation stream that returns. Two details are easy to miss: the continuation reuses the **last assistant message's id** and streams only its new parts, so seed your stream reader with a clone of that message or the answer renders as a second, half-empty one; and mirror the decision locally first, or the approval card stays on screen for the whole run. Reconcile against server history at the end.

A callback whose pin is older than oauthFlowMaxAgeMs redirects with ?error=flow_expired (the user just re-runs connect). The pin is tamper-evident — the full state string is exact-matched against the copy the flow stored at start() — and principals are IDs-only by contract (see @intentface/latch-core's principal.ts), so nothing sensitive rides in the URL.

Scheduling over HTTP

POST /schedules takes everything runtime.schedule() does, so the mounted handler is not a reduced version of the contract:

POST /schedules/:id/run-now arms a schedule for the next tick rather than firing it inline — it then goes through the ordinary runDue path (same claim, same occurrence consume, same delivery), so "run now" cannot drift from what the cron actually does. GET /runs deliberately omits each run's identity (the serialized principal): it is durable server state and a type you are invited to extend, so it never enters a browser payload — read it server-side via runtime.listRuns if you need it.

Usage

Where it fits

The HTTP tier over @intentface/latch-core. The routes are a convenience over the real contract — the Runtime operations — which you can still call directly from your own routes or non-HTTP triggers (cron, queues, chat channels).

Description from the npm listing.

  • ai
  • ai-sdk
  • agents
  • llm
  • http
  • hono
  • webhooks
  • express

Where @intentface/latch-server 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, #20 (overall #1500)
All npm: every listing in weekly downloads order
PNG SVG
AI SDKs249 listings · 13 pages · page 9, #10 (overall #170)
AI SDKs: every listing in weekly downloads order
PNG SVG

Charts

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

Adoption over time

@intentface/latch-server weekly downloads on npm, last 90 days: 508 weekly downloads as of Oct 17, 2026.@intentface/latch-serverWeekly downloads on npm · Last 90 days508downloads / week02004006008001K1.2K1.4K1.6KJul 19Aug 3Aug 18Sep 2Sep 17Oct 2Oct 17downloads / weekobservedarchived (Internet Archive)no observationsJul 20, 2026 – Oct 17, 2026 · 90 observations · Updated Oc…pluginstats.com
@intentface/latch-server weekly downloads on npm, last 90 days: 508 weekly downloads as of Oct 17, 2026.
PNG SVG

7/30/90-day growth

@intentface/latch-server weekly downloads growth on npm: -55.0% over 7 days, +484% over 30 days, 90-day growth unavailable.@intentface/latch-serverWeekly downloads growth on npm508downloads / week now7-day growth-621 weekly downloads-55.0%30-day growth+421 weekly downloads+484%90-day growth+508 weekly downloadsInsufficient historyGrowth vs. nearest observation to each baseline date · Updated Oct 17, 2026pluginstats.com
@intentface/latch-server weekly downloads growth on npm: -55.0% over 7 days, +484% over 30 days, 90-day growth unavailable.
PNG SVG

Ranking history

@intentface/latch-server npm ranking history: currently #1499 (by weekly downloads).@intentface/latch-servernpm ranking · by weekly downloads · Last 90 days#1499current 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
@intentface/latch-server npm ranking history: currently #1499 (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 @intentface/latch-server
Date (UTC)Weekly downloadsChange vs. previous
508-457
965-118
1,083-148
1,231-90
1,3210
1,321-116
1,437+308
1,129+84
1,045+62
983+139
844+87
757-11
768+183
585—

Similar npm AI SDKs 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/@intentface/latch-server. First seen Oct 16, 2026; last successful collection Oct 18, 2026. See the methodology.