# fastly/pushpin

A proxy server for adding push to your API, used at the core of Fastly's Fanout service

Repository: https://github.com/fastly/pushpin
Canonical: https://ross.abutalabs.com/products/pushpin
Homepage: https://pushpin.org
Language: Rust
License: Apache-2.0
License Family: permissive
Topics: http-streaming, websockets, long-polling, realtime, push, proxy, api, server-sent-events, zeromq, streaming, fastly-featured, fastly-oss-tier1
Last push: 2026-08-19T17:07:59+00:00

## Health v2 (maintenance only)
Score: 68/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 98, release rhythm 10, longevity 100
- inputs: {"age_days": 5117, "days_push": 14, "days_rel": 385, "gap_med": null, "n_releases_24m": 1}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 3857, forks 156 (observed 2026-08-28T04:08:27.458504+00:00)

## What it is
Pushpin is a reverse proxy server written in Rust and C++ that adds realtime push capabilities (WebSockets, HTTP streaming, long-polling, SSE) to any API. It sits between clients and backend services, holding client connections open while communicating with backends via short-lived HTTP requests and a publish control API.

## Use cases
- add websocket support to an existing api without rewriting the backend
- implement http streaming endpoints for realtime updates
- push data to connected clients from a stateless or serverless backend
- add realtime push to a microservices architecture without a centralized message broker
- support long-polling for older browsers
- keep api logic in one language while adding realtime features

## When to choose
- you want transparent, client-side-library-free realtime push for an API
- your backend is written in any language and you don't want a separate realtime service
- you need WebSocket, streaming, and long-polling from a single component
- you want API management features like auth and analytics to work on realtime endpoints

## When to avoid
- you need a fully managed realtime service rather than self-hosted infrastructure
- your use case is simple request/response with no push requirements
- you need client SDKs with rich subscription semantics exposed to clients

## Facets
- artifact type: service
- maturity: active
- function: proxy, websocket, http-server, message-queue, api-framework
- domain: apis, web-development, backend, networking
- platform: self-hosted
- tags: reverse-proxy, realtime-push, http-streaming, long-polling, server-sent-events, grip, zeromq, fanout, real-time, linux, macos, docker, web-server

## Member repositories
- fastly/pushpin (main) score 68

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:08:27.458504+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T18:25:55.289299+00:00, confidence not recorded.
  - readme: https://github.com/fastly/pushpin (fetched 2026-08-28T04:08:27.458504+00:00, sha dcf3619aa13a)
  - homepage: https://pushpin.org (fetched 2026-08-29T09:20:30.314094+00:00, sha 599c76bdc1d5)
  - site_page: https://pushpin.org/docs/about (fetched 2026-08-29T09:20:30.316581+00:00, sha 652ddea64e9c)
  - site_page: https://pushpin.org/docs/install (fetched 2026-08-29T09:20:30.318719+00:00, sha 85cc37cf3698)
  - site_page: https://pushpin.org/docs/usage (fetched 2026-08-29T09:20:30.320553+00:00, sha 807ed20f4af5)
- Data as of 2026-08-30T08:39:29.467469+00:00.
