Signer and Protocol Agnostic Social Media (Spasm) — a specification and reference library for a normalized social-media event structure that is agnostic to signing keys, messaging protocols, transport layers and storage. A user signs a message with any private key they hold (Ethereum, Nostr and others) and propagates it to any network, or several at once; a single post can be multi-signed with different keys and pushed to both Nostr and the Spasm network. Its distinctive contribution is encapsulation rather than competition: it positions itself as a wrapper over existing standards rather than an alternative to ActivityPub or Nostr. Defines versioned typed content hashes (Spasm IDs) for events and media.
LicensePermissive (MIT) — spasm.js and most repositories MIT; spasm-modules (Spasm Protocol Ecosystem Reference Modules) CC0-1.0; spasm-site MIT-0. https://github.com/spasm-network (mirrors at git.spasm.network and codeberg.org/spasm-network)
Dev Status 🟢 Active
OwnerSpasm Network — developed pseudonymously, principally by the contributor known as 'degenrocket'. The GitHub organization lists no public members; a SPASM token exists but is described by the project as independent of the software
Governing Body None (single pseudonymous maintainer; no foundation, consortium or governing body)
CountryUnknown — the maintainer is pseudonymous and no location is published
Start Year 2021
StackJavaScript / TypeScript — spasm.js reference library (npm); forum frontend and backend in TypeScript; deployment tooling in Shell (Docker/Podman, Ansible)
FundingNone disclosed — the project states it has been developed for over half a decade with zero funding. A SPASM token was issued around October 2025 with an incentivization programme, described as independent of the software
OriginsSocial networking / message boards — emerged from a decentralized forum built in 2021, generalised into a protocol-agnostic event layer intended to let any signing key and any transport carry the same social content
DatabaseInstance-level — each Spasm forum instance runs its own backend database; the specification itself defines no storage layer
Query LanguageREST API per instance, with RSS output supported (feeds filterable by activity, action and signer); no dedicated query language defined
Data FormatsJSON events with a normalized cross-protocol structure; Spasm hashes are versioned typed content identifiers — spasmid01 (event, SHA-256), spasmvi01 (video), spasmim01 (image), spasmau01 (audio), spasmfl01 (other files)
Collaborative Live EditingN/A — signed-event broadcast model, not collaborative editing
Rich Text EditingApplication-level — the event structure carries content; formatting is a client concern
Mobile SupportWeb-based — forum instances are browser-accessible and messages can be signed via mobile web3 browsers; no dedicated mobile app
Web SupportYes — all known deployments are web applications; signing via browser extensions or in-app web3 browsers
Native AppsN/A — no native client
TermsSelf-hosting — instances are deployed by their operators via Docker/Podman or an Ansible playbook; no hosted service or fee
Funds$0 disclosed — no grant, investment or revenue reported
Based OnNostr (multi-signing and cross-posting target; Nostr keys supported as signers); Ethereum key signing (supported since 2021); SHA-256 (Spasm hash derivation); RSS (feed output and ingestion). Original protocol — does not build on ActivityPub or ATproto
Semantic Web CompatibilityNone — custom JSON event schema with no RDF, JSON-LD, or SPARQL compatibility; interoperability is achieved by normalization to the Spasm event structure rather than by semantic-web standards
Protocol Maturity / StandardizationDe facto / implementation-defined — the documentation site describes direct signing, the Spasm hash scheme and features, but no normative specification document exists separately from spasm.js, and no independent implementation is known. No standards body involvement. This is the principal maturity gap: the reference library is effectively the specification
Vocabulary / Ontology TypeSocial event normalization — a cross-protocol event vocabulary rather than a domain ontology. Its purpose is to express events originating in different signature schemes and messaging protocols (Ethereum-signed messages, Nostr events, RSS items) in one addressable, hashable structure, so the same content resolves across independently operated instances
Usage PatternStandalone plus embedded — the reference library (spasm.js) is consumed directly by applications, the principal one being the Spasm-powered forum (see the Spasm Forum entry on the D App tab). Events propagate between independently operated instances, and the same Spasm ID resolves across them. Also used as a bridge: posts multi-signed with Nostr keys appear on both the Spasm network and Nostr
See something missing or that could be improved? Let us know →