Fact-checked by Grok 2 weeks ago

pump.io

Pump.io is an package that implements a decentralized social networking server and , allowing users to create and interact within federated social networks through activity streams. Developed as a successor to the StatusNet platform, pump.io was created by , founder of E14N, with initial development beginning around 2011 and the migration of the service completed in July 2013. The project emphasizes simplicity and developer-friendliness, utilizing a JSON-based derived from the ActivityStreams standard to handle posts, shares, and interactions across interconnected servers. Key features include support for diverse content types such as text notes, images, videos, audio, bookmarks, events, and geolocation check-ins, alongside capabilities for following users, creating lists, and enabling mobile-first interfaces. As a federated , pump.io servers can interoperate to form a mesh network, pushing activities between instances to facilitate communication without relying on a central authority, which aligns it with broader efforts in the open . Licensed under the Apache License 2.0, the software was contributed to by contributors on until around 2022 and remains available for deployment in personal or experimental social applications. Development of pump.io effectively ceased around 2022, though the codebase remains available. While it shares roots with projects like —into which StatusNet's codebase was contributed—pump.io distinguishes itself through its lean design and focus on extensible activity streams rather than traditional alone.

History

Development

Development of pump.io began in 2011 under as a successor to his earlier project StatusNet (previously known as Laconica), with the goal of overcoming limitations in the federation capabilities of microblogging platforms that relied on the protocol. The software's development began as a rethinking of 's XML-based structure, shifting to a more modern, efficient design to enable broader in decentralized social networking. Early design goals centered on creating a streamlined social networking server that utilized JSON-based Activity Streams as its core data format, supporting diverse content types such as text, images, videos, events, and more, rather than restricting interactions to short posts like tweets. This approach aimed to foster extensibility and ease of integration for developers building federated applications. The initial release occurred on October 3, 2012, under the 2.0, marking pump.io's availability as . Key milestones included the transition from influences—such as its reliance on feeds and protocols like PubSubHubbub and —to a new architecture optimized for performance and simplicity, implemented primarily using for server-side operations. This foundation enabled asynchronous handling of social streams, contributing to the project's focus on scalability in federated environments.

Adoption

In July 2013, , the flagship instance of the StatusNet software and one of the largest platforms in the federated , migrated to pump.io, representing a significant milestone in its adoption. This transition brought over an established user community, with having approximately 1.5 million registered users at the time, facilitating broader exposure to pump.io's architecture within social networking circles. Following the identi.ca migration, community-hosted instances began emerging between 2013 and 2015, enabling decentralized deployment by enthusiasts and developers who valued pump.io's lightweight, ActivityStreams-based design for building custom social networks. These instances contributed to the platform's growth, as users experimented with its capabilities for , photo sharing, and event streaming. Early adoption faced challenges related to federation compatibility, as pump.io's native protocol diverged from the legacy standard used by prior StatusNet deployments, leading to intermittent issues in cross-network interactions such as following remote users or propagating activities between instances. Around 2014, community governance efforts solidified to decentralize maintenance, with creator stepping back from full-time development and relying on open-source contributors to handle pull requests, issue resolution, and version releases like 0.4, fostering a more collaborative model under the project's 2.0 license.

Technical Architecture

Core Components

pump.io is implemented as a social server using Node.js, a JavaScript runtime environment that enables efficient handling of concurrent requests and real-time data streams. This foundation allows the server to process social interactions asynchronously, supporting scalable operations for user-generated content and network communications. At its core, pump.io employs Activity Streams in JSON format as the primary data model to represent social activities. This standard structures data in a subject-verb-object paradigm, where activities such as posting notes, liking content, or sharing objects are encoded as JSON objects—for instance, a post might be a "note" activity with properties like content and author, while a like is a "like" activity targeting another object. Streams aggregate these activities, such as an inbox for incoming interactions or an outbox for outgoing ones, enabling organized representation of user timelines and social graphs. Client interactions are facilitated through a RESTful API, which exposes endpoints for key operations including authentication, content posting, and stream querying. Authentication typically involves mechanisms to secure user sessions, while posting uses HTTP methods like POST to the outbox endpoint with Activity Streams payloads; querying streams, such as retrieving a user's public feed, employs GET requests to filtered inbox or outbox paths. This design ensures consistent, stateless communication aligned with web standards. The architecture features a modular structure, with distinct components for user management, content storage, and real-time updates. User management handles and profile data, content storage persists activities and objects, and real-time updates leverage WebSockets—via libraries like SockJS—for live notifications of new interactions without polling. A web-based is integrated, constructed with , CSS, and JavaScript libraries including Twitter Bootstrap for layout, for structure, and for DOM manipulation, supporting basic views like timelines and profiles. Federation across servers occurs via the ActivityPump protocol, extending the core API for distributed interactions.

Deployment and Requirements

pump.io instances require Node.js version 6.x or higher and npm version 2.15.x or higher (with 4.x preferred for the latest features), along with GraphicsMagick for image processing capabilities. The software utilizes the Databank library for data persistence, supporting NoSQL databases such as MongoDB for primary storage, Redis for caching and session management in production environments, and Couchbase as an alternative. Administrators must separately install and configure the chosen database server, then add the corresponding Databank driver via npm (e.g., npm install databank-mongodb). To install pump.io from source, clone the repository from GitHub using git clone https://github.com/pump-io/pump.io.git, navigate to the directory, run npm install to fetch dependencies, and execute npm run build to compile the application. Configuration occurs primarily through JSON files located at /etc/pump.io.json or ~/.pump.io.json, which define server settings like ports, hostnames, and federation parameters; these can be overridden by command-line flags or environment variables for flexibility in deployment. Database initialization involves ensuring the Databank driver is active in the configuration, with potential migration considerations for existing OAuth keys during schema changes. For secure operation, HTTPS setup is supported via tools like Certbot, and while pump.io runs standalone, reverse proxies such as Nginx can be configured if needed, though they are not recommended due to potential issues with WebSockets and future features. Designed for lightweight operation, pump.io can run on low-resource hardware, including devices, particularly when using for single-process setups to minimize overhead. A minimum of 512 MB RAM is recommended for stable performance, enabling deployment on embedded systems without high demands. The final stable release, version 5.1.4, was issued on September 18, 2020. This version requires 6.x or higher, as support for earlier versions like 4, 5, and 7 was dropped in version 5.1.1. As of November 2025, the project continues development on the master branch, including recent enhancements like official support, though no new stable releases have been issued since 2020.

Protocols and Standards

ActivityPump

ActivityPump is the federation protocol developed specifically for pump.io, functioning as its server-to-server communication layer by extending the ActivityStreams 2.0 data format to support decentralized social networking. It draws from prior implementations like while introducing a JSON-based approach for handling activities across independent servers, enabling features such as content sharing and user interactions in a federated environment. The protocol's key mechanics center on a REST-based using inboxes and outboxes for delivering activities between servers. PubSubHubbub () is optionally supported for public notifications, allowing subscribers to receive updates via HTTP callbacks without constant polling. The Salmon protocol was considered for private messaging and targeted federation but ultimately discarded due to its complexity and incompatibilities with , with direct delivery addressing the need for authenticated communication in non-public contexts. At its core, ActivityPump employs an object model defined in , where activities are structured around verbs (actions like "post", "follow", or "like"), objects (the entities or content being acted upon, such as notes or images), and targets (recipients or contexts, like a user's inbox). This model ensures that all elements have unique global identifiers, typically URIs or acct: URIs, promoting by standardizing how cross-server events are serialized and transmitted. Security in ActivityPump is handled primarily through OAuth 2.0, which authenticates both client-to-server requests and server-to-server federations using bearer tokens. Additional protections include JSON Web Signatures (JWS) for verifying the origin and integrity of messages, helping to mitigate spam and unauthorized posts in the network. One notable limitation of ActivityPump was its reliance on WebFinger for discovering users and resources via simple HTTP queries to well-known endpoints, a mechanism that provided basic lookup functionality but lacked robust authentication integration and scalability for larger federations. This approach influenced later protocols like ActivityPub.

Influence on ActivityPub

Evan Prodromou, the primary developer of pump.io, became actively involved in the W3C Social Web Working Group shortly after its launch in July 2014, serving as a co-chair and contributing his expertise from prior projects like StatusNet and pump.io. In this capacity, he proposed elements of the ActivityPump protocol—pump.io's federation and API framework—as a foundational basis for developing a standardized decentralized social networking protocol, drawing on practical experience from implementing pump.io's social features. This involvement helped bridge earlier efforts like with emerging standards, positioning ActivityPump's design principles at the forefront of the group's deliberations. Key influences from pump.io on ActivityPub include the adoption of serialization for extensible data formats, the for representing users and objects with associated streams and collections, and the inbox/outbox patterns for handling incoming and outgoing activities. These elements, pioneered in pump.io's ActivityPump, provided a robust foundation for 's client-to-server and server-to-server interactions, enabling seamless content creation, distribution, and retrieval across federated servers. The W3C Social Web Working Group refined these concepts to align with ActivityStreams 2.0, ensuring broader interoperability while retaining pump.io's core innovations in modeling social interactions. ActivityPub was formally published as a W3C Recommendation on January 23, 2018, explicitly crediting pump.io's innovations and Evan Prodromou's longstanding contributions to federated social protocols. Unlike ActivityPump, which optionally incorporated PubSubHubbub (PuSH) for public message delivery and had considered but ultimately discarded the Salmon protocol due to JSON incompatibilities, ActivityPub streamlined federation by emphasizing direct HTTP-based delivery via POST requests to inboxes, eliminating these dependencies for simpler, more reliable server-to-server communication. Following standardization, efforts to implement native ActivityPub support in pump.io have been underway since 2016 in a dedicated development branch, aiming for direct interoperability such as activity exchange between pump.io servers and -compliant platforms like . As of 2025, these adaptations continue to be discussed in pump.io's development repository, enabling legacy pump.io deployments to potentially participate in the broader .

Features

User Interactions

Users in pump.io engage with the platform through a variety of end-user capabilities designed to facilitate social networking in a decentralized environment. The system supports posting diverse content formats, including short or long text notes, images, videos, audio files, bookmarks, events, and geo-checkins, all represented via the Activity Streams model. These posts can be shared publicly or targeted to specific audiences, enabling flexible expression without the rigid constraints found in centralized platforms like Twitter's former 140-character limit. Social features emphasize connectivity and interaction, allowing users to follow others across the network, create custom lists of contacts for organized streams, like activities, share posts, and reply to content from their personalized timelines. Following is straightforward, with users discovering and subscribing to profiles via search or recommendations, resulting in a chronological feed of activities from followed accounts. Liking and sharing propagate interactions across federated servers, enhancing visibility and engagement within users' networks. Profile management provides tools for personalization and control, including uploading avatars, writing to describe interests and attract followers, and setting options for individual posts—such as directing content to all followers, specific lists, mentioned users, or . Avatars, when updated, are published as activities to maintain profile consistency across clients. These elements help users curate their online presence and manage in a -conscious manner. The platform's API, built on Activity Streams, ensures compatibility with third-party applications, enabling interactions via web, desktop, and mobile clients beyond the built-in web UI. Examples include desktop tools like Dianara for stream management and posting, and mobile apps like Social Monkeys for , allowing seamless access to features like timelines and content creation. While is implemented to prevent abuse, specific thresholds are configurable by server operators, and there are no hardcoded content size restrictions beyond practical JSON limits for activities. This design promotes broad client adoption and user choice in interfaces. These features, as implemented during its active development phase (up to circa 2020), remain available in deployed instances as of 2025.

Federation Mechanisms

Pump.io facilitates decentralized networking through a federation model where independent servers, referred to as pods, communicate to enable cross-instance user interactions and content sharing. The protocol underpinning this is ActivityPump, which defines the mechanisms for server-to-server communication using ActivityStreams 2.0 objects. The discovery process relies on the protocol (RFC 7033) to locate user endpoints across different servers. Users are identified by acct: URIs in an email-like format, such as acct:[email protected], which are resolved via WebFinger queries to retrieve host metadata, including the location of the user's profile, inbox, and outbox endpoints. This allows clients or servers to discover remote users' resources without prior knowledge of their hosting pod. Cross-instance interactions occur through HTTP-based exchanges of activities. To follow a remote , a local sends a request with a Follow activity to the remote user's outbox, which then delivers subsequent activities—such as notes or shares—to the follower's inbox on the originating . Activities are relayed asynchronously across pods using the NOTIFY method or direct delivery, ensuring that posts and updates propagate through the network while maintaining object integrity via idempotent handling. pump.io was designed drawing from experience implementing in prior systems like StatusNet, but uses a distinct . Interoperability with other protocols was a design goal in pump.io's early development. Third-party bridges, such as Friendica addons, have been developed to connect pump.io with networks like , extending reach beyond native ActivityPump pods. Privacy and control are enforced at both server and user levels. Server administrators can restrict federation by configuring authorization policies, such as 2.0 bearer tokens, to deny deliveries from specific remote pods or instances, effectively blocking unwanted interactions. Users maintain control by specifying audiences in activities, limiting visibility to federated content through inbox filtering that respects privacy preferences and blocks propagation to unauthorized recipients. Scalability is achieved through a supporting horizontal scaling across multiple , with handled via asynchronous queues for activity delivery and retries. Each manages its own queue of outgoing and incoming federated requests, allowing load distribution and without centralized coordination, enabling the network to grow by adding independent servers.

Legacy

Discontinuation

Signs of slowdown in pump.io development became evident after 2018, with commit activity on the project's repository significantly reducing and the last major release, version 5.1.4, occurring on September 18, 2020. Contributing factors to the discontinuation included the growing adoption of ActivityPub-based software such as , which offered more robust capabilities and broader community support, alongside challenges like maintainer from volunteer-led efforts and the absence of dedicated for ongoing development. By 2022, pump.io was widely considered discontinued, with the last commit to the repository dated in 2022 and no subsequent new features or updates released. Despite the end of active development, remaining resources include the archived documentation hosted at pumpio.readthedocs.io and the repository preserved for historical reference and potential forks. Users were encouraged to migrate to ActivityPub-compatible platforms to maintain federated social networking functionality.

Impact on the Fediverse

Pump.io played a pivotal role in the evolution of the by serving as a transitional protocol between the earlier standard and the contemporary framework, effectively bridging the gap from XML-based federations to more modern, JSON-centric architectures. Developed in 2012–2013 by as a rethinking of implementations like StatusNet, pump.io introduced a RESTful leveraging Activity Streams 2.0 in format, which popularized structured, machine-readable activity data for decentralized social interactions. This shift facilitated smoother interoperability among early nodes, laying groundwork for the protocol's adoption in broader social networking ecosystems. Technically, pump.io's innovations in activity vocabularies and federation mechanisms left enduring legacies in software such as and . Its use of Activity Streams provided a vocabulary for representing social objects—like notes, shares, and follows—in a standardized format, concepts that were directly incorporated into ActivityPub's object model. Additionally, pump.io's "REST inbox API" enabled direct posting to followers' inboxes across servers, a mechanism that influenced ActivityPub's inbox/outbox paradigm for efficient content delivery in federated environments. These elements enhanced scalability and reduced reliance on pubsubhubbub intermediaries from , allowing subsequent implementations to handle real-time updates more robustly. On the community front, pump.io inspired a wave of open-source social projects by demonstrating practical federation beyond microblogging, encouraging developers to build extensible, protocol-agnostic tools. Evan Prodromou's involvement extended this influence through his leadership in W3C's Social Web Working Group, where pump.io's lessons informed the standardization of ActivityPub and related specifications. As of 2025, pump.io maintains no active public instances, with development having ceased around 2022 and no commits to the repository since then, though its codebase remains forked for niche, experimental deployments in custom social setups. It holds significant educational value in Fediverse documentation, serving as a case study for protocol evolution and JSON-based federation in academic and developer resources. In the broader ecosystem, pump.io contributed to the multiprotocol nature of the network by supporting integrations with protocols like (used in Hubzilla) and the protocol, enabling cross-network interactions through bridges in software such as . This interoperability helped define the as a diverse, interconnected web of decentralized services rather than a monolithic standard.

References

  1. [1]
    pump.io
    This is pump.io. It's a stream server that does most of what people really want from a social network. Build Status npm version. News highlights.
  2. [2]
    pump.io: the decentralized social network that's really fun
    Jul 15, 2013 · pump.io is an activity stream server that does most of what people really want a social network server to do.
  3. [3]
    pump-io/pump.io: Social server with an ActivityStreams API - GitHub
    You can post almost anything that can be represented with activity streams -- short or long text, bookmarks, images, video, audio, events, geo checkins.Missing: protocol | Show results with:protocol
  4. [4]
    Basic User Guide — Pump.io Documentation - Read the Docs
    Basic User Guide¶. Pump.io is a decentralized/federated social network, composed by many servers, where users can choose where to sign up for an account, ...
  5. [5]
    pump.io - Awesome Homelab
    May 24, 2025 · pump.io is a stream server designed to provide the core functionality people expect from a social network. It allows users to post content that ...<|control11|><|separator|>
  6. [6]
    A Creator of ActivityPub on What's Next for the Fediverse
    Dec 7, 2022 · Evan Prodromou. Zoom. Evan Prodromou (via GitHub). “I've got mixed ... “In 2012-2013, I began work on pump.io, which was a rethinking of ...
  7. [7]
    Evan Prodromou: Distributed social networks
    My name is Evan Prodromou, and I'm a software developer, entrepreneur, and architect from Montreal, Canada. I'm best known for my work on distributed social ...
  8. [8]
    Status.net service to phase out, replaced by pump.io
    Dec 18, 2012 · The developer (Evan) makes exactly the tactically useful argument in https://identi.ca/conversation/97606977. The proprietary software in ...
  9. [9]
    [Pidgin] #15629: protocol change for identi.ca (from StatusNet to ...
    [Pidgin] #15629: protocol change for identi.ca (from StatusNet to pumpio on June 1, 2013) ... switch its ... pump.io/blob/master/API.md > (2) ​http://en ...
  10. [10]
    StatusNet, Identi.ca, and transitioning to pump.io - LWN.net
    Mar 27, 2013 · But, in the end, the important thing is the feature set; a pump.io instance can generate a microblogging feed, an image stream, or essentially ...
  11. [11]
    Social Network Alternatives | Internet Monitor
    ... 2013, Diaspora reports it has 405,551 ... Identi.ca: Identi.ca is another micro-blogging ... pump.io software platform in order to offer more ...
  12. [12]
    What is the relationship between OStatus, pump.io and ActivityPub?
    Jun 14, 2017 · What is the relationship between OStatus, pump.io and ActivityPub? · OStatus is a decentralized social networking protocol made up of several ...
  13. [13]
    Prodromou: The future of pump.io [LWN.net]
    Pump.io and StatusNet creator Evan Prodromou writes about the future of pump.io development. Since Prodromou is no longer working full-time on pump.io, ...
  14. [14]
    pump.io - NPM
    Sep 20, 2020 · Social server with an ActivityStreams API. Latest version: 5.1.4, last published: 5 years ago. Start using pump.io in your project by ...
  15. [15]
    [PDF] Understanding pump.io
    What is it? pump.io is an activity stream server that models a social network with a simple REST API.Missing: design goals
  16. [16]
    Prerequisites - Pump.io Documentation
    You'll need four things to get started: node.js 6.x or higher; npm 2.15.x or higher (4.x or above preferred); A database server ( ...
  17. [17]
  18. [18]
    Generic source-based install - Pump.io Documentation
    The pump.io project strongly recommends against source-based installations. They're harder to upgrade and the chances of the administrator making a mistake ...
  19. [19]
    Configuration via JSON configuration files - Pump.io Documentation
    pump.io can use a JSON file for configuration. pump will look for configuration files at /etc/pump.io.json and ~/.pump.io.json . These files are expected to ...
  20. [20]
    Configuration value reference - Pump.io Documentation
    These values can be set via CLI flags, environment variables, or a JSON configuration file. See the individual documentation for each of these methods for ...
  21. [21]
  22. [22]
    Using a web server proxy - Pump.io Documentation
    pump.io is designed to be a standalone server. You do not need to set up an Apache or nginx or lighttpd Web server in front of it. In fact, that's going to make ...
  23. [23]
    [PDF] Pump.io | Verbosity.ca
    ○ The pump website : http://pump.io. ○ Counter of pump instances : http://pumplive.com. ○ Demonstration of pump apps : http://openfarmgame.com. ○ @jpope's ...
  24. [24]
    Pump.io on Raspberry Pi - Jack Senechal
    Jun 16, 2013 · Now you should be able to install pump.io: sudo -i npm install -g pump.io. Follow the rest of the instructions on https://github.com/e14n ...
  25. [25]
    ActivityPump - GitHub Pages
    Sep 7, 2017 · The ActivityPump protocol is a social networking protocol based upon the ActivityStreams 2.0 data format. It is based upon experience gained ...
  26. [26]
    ActivityPub - W3C
    Jan 23, 2018 · The ActivityPub protocol is a decentralized social networking protocol based upon the ActivityStreams 2.0 data format.
  27. [27]
    Socialwg - W3C Wiki
    In addition to the above, the working group has been actively coordinating with: pump.io community · Web Annotation WG. Closed. OpenSocial Foundation · Social ...
  28. [28]
    Actions - Social Web Working Group Tracker - W3C
    ACTION-19 · (edit), closed, Get stats on whether and to what extent pump.io developers use put and delete for endpoints, Evan Prodromou, 2014-12-09 ; ACTION-20 ...
  29. [29]
  30. [30]
    ActivityPub support · Issue #1241 · pump-io/pump.io - GitHub
    Nov 16, 2016 · ActivityPub posts by their content type. This permits clients to do transparent upgrades: They can start requesting AS2 content, and will migrate to AP as and ...Missing: compatibility | Show results with:compatibility
  31. [31]
    Dianara - A Pump.io client for the desktop - Ubuntu Manpage
    What it does: - Posting text (with some HTML formatting), to Followers, Public, custom person lists created by you, or specific people, in any combination. - ...
  32. [32]
    Some tips for a better experience using the Pump.io network
    Mar 17, 2014 · When changing the avatar in your Pump.io profile, the image is published as a post. You should not delete that post, since the post contains ...
  33. [33]
  34. [34]
    Socialwg/Social API/pump.io API - W3C Wiki
    Dec 16, 2014 · Each user has two main feeds: an outbox of activities they have created (posting notes, following other users, joining groups, etc) and an inbox ...
  35. [35]
    pump.io - IndieWeb
    Aug 4, 2013 · IndieWeb Compatibility. pump.io uses its own protocol for communicating between servers, based on ActivityStreams. There are no known examples ...
  36. [36]
    Commits · pump-io/pump.io
    **Summary of Commit Activity (2018 Onwards):**
  37. [37]
    How I accidentally started maintaining a social network with ...
    In the end Evan Prodromou, pump.io's author, ended up handing off some commit rights to community members. Well, I thought, that was the end of that.
  38. [38]
    Start — Pump.io Documentation
    No readable text found in the HTML.<|separator|>
  39. [39]
    Fediverse history piece from 2017: A Brief History of the GNU Social ...
    Aug 24, 2024 · Evan announced that Identi.ca would be switching from StatusNet to pump.io, which it did in 2013. Pump.io federates using a new pump.io ...
  40. [40]
    Federation in social networks - LWN.net
    Dec 12, 2017 · The major reason was the formation of the W3C Social Web Working Group and OStatus's own creator, Evan Prodromou, turned to favor a more ...
  41. [41]
    ActivityPub - W3C Wiki
    Sep 18, 2024 · It is intended that ActivityPub will offer more security for private messages than the current OStatus protocol does. Pump.io · Hubzilla ...
  42. [42]
    History of ActivityPub - Fediversity - SocialHub
    Jun 26, 2023 · GNU-social and Pump.io are the successors of StatusNet. Yes. As I say, pump.io replaced StatusNet on Identi.ca (which AFAIK still runs on it) ...
  43. [43]
    SocialWebFoundation - what do people think? - Page 5 - SocialHub
    Sep 28, 2024 · The Fediverse: Is multiprotocol (historically, StatusNet/OStatus, pump.io, zot, ActivityPub, …) The set of those protocols changed over time ...
  44. [44]
    [PDF] Functional breakdown of decentralised social networks
    Jul 6, 2015 · It is therefore possible with Friendica to connect with remote users of Friendica, Diaspora, pump.io, Facebook,. Twitter and a variety of other ...
  45. [45]
    Clarifying the origin and evolution of the term "the fediverse"
    Oct 4, 2024 · The Fediverse: Is multiprotocol (historically, StatusNet/OStatus, pump.io, zot, ActivityPub, …) The set of those protocols changed over time ...