Emissary is the Social Web Toolkit -- a standalone Fediverse server designed for end users, app creators, and hosting admins — that gives everyone powerful new ways to join the social web.
As a developer, Emissary empowers you to build custom, social applications in a simple, declarative, low-code environment. Using only HTML templates and a JSON config file, you can create full-featured social apps that are easy to deploy and easy to maintain.
This is done by building action pipelines out of simple, composable steps, like: "show an edit form", "create a thumbnail", and "save the object". Pipelines work alongside Emissary's built-in state machines and access permissions to form robust and secure applications that you and your end-users can trust.
Distribute your applications via Git and .zip files, comprising one or more Each template is isolated from others, so bugs in one template won't bleed out into the rest of your site. This should prevent the incompatibility, feature bloat, and bugginess that have plagued other plugin ecosystems.
Emissary use the sherlock library to bridge across different federated protocols. This includes ActivityPub, RSS+WebSub, and IndieWeb. More are coming, to be added into the core system. This means that applications you build on Emissary interact with the entire social web, and will grow as Emissary grows.
Anyone should be able to stand up their own Emissary server. But few people will. Grandma probably won't. For Emissary to be successful, hosting companies must be able to offer new Emissary accounts at the click of a button.
This means that Emissary must be an exemplary citizen in any DevOps workflow. It should be as easy for an individual hobbyist to turn on a test server on a big hosting provider as it is for that big hosting provider to offer hundreds of thousands (or millions) of accounts to the general public at scale.
Emissary is built to be fast on any hardware. Lightweight, cacheable templates work with the latest web performance techniques from htmx.org for a web application that always loads quickly and runs smoothly.
To get started, visit the Emissary Developer Website. This resource is growing every day, and includes a quickstart guide along with detailed documentation on how to configure Emissary for your own environment.
There's a lot of work to do. Check out the project status page and the Emissary kanban for a peek at where we are right now.
Emissary is intended to be as easy to run and as scalable as possible. It runs with a minimal set of dependencies, so you should be able to install and run an Emissary server in between lunch and tea time.
- Go
- Mongodb
- HTMX / Hyperscript
- That's it. I'll worry about a cute acronym later.
Emissary also relies on a stack of custom libraries that make it go:
- Hannibal - A robust, idiomatic ActivityPub interfaces in Go
- Sherlock - Inspect data in ActivityPub/RSS/MicroFormats and more
- Toot - Mastodon Server API
- Rosetta - Data mapping and manipulations: schemas, conversions, etc
A complete list can be found in the Go module file.
I welcome your thoughts, ideas, feedback, criticisms, and mockery if it will help create a more realistic and workable way for people to use the Internet as originally intended.
Please try it out, get in touch, file a suggestion, report bugs "@" me, block me, whatever. Just get involved and help make a difference.