Skip to content
fedify-devPublic

About

Web-based platform for developing and debugging ActivityPub implementations

Resources

Contributing

Stars

11 stars

Watchers

0 watching

Forks

Latest commit

 

History

499 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DrFed

GitHub Actions License: AGPL-3.0-only

DrFed is a web-based platform for developing and debugging ActivityPub implementations, built by the team behind Fedify. It brings together the tools you need to diagnose federation failures in one place: fetch and inspect any ActivityPub object, monitor incoming activities in real time, step through HTTP signature construction and verification, validate WebFinger and NodeInfo responses, explore JSON-LD compaction and expansion, and send test activities to any inbox. The goal is to make it straightforward to answer the question “why doesn't my server federate with X?”—by showing you exactly which stage broke, whether that's DNS, TLS, HTTP, signatures, or JSON-LD processing.

Installation and server usage

DrFed requires Node.js 26 or newer. The first release will provide drfed-server, drfed-account, drfed-migrate and drfed-web through npm:

npm install --global @drfed/drfed
drfed-account create --data-path .pgdata \
  --email operator@example.com --name Operator
drfed-server --root-origin http://drfed.localhost:8888 \
  --data-path .pgdata --mail-log-content

PGlite allows only one process to own its data directory, so create the account before starting the server. Account creation prepares a fresh database. The server checks and applies pending migrations on startup. Open http://drfed.localhost:8888 for the frontend. The same listener serves /graphql; DrFed test instances use subdomains of the root origin and serve ActivityPub only. Open the configured origin, rather than localhost:8888. Service deployments need wildcard DNS and TLS for those subdomains.

The default mail transport does not deliver messages. --mail-log-content in the local example prints verification links so you can sign in during development. Configure SMTP, SES or another documented delivery transport for service deployments; message contents are excluded from logs by default. Repository development uses mise run dev with separate backend and frontend processes and explicitly enables login mail contents.

For a service deployment, select a TOML file with --config or DRFED_CONFIG. CLI settings override DRFED_* environment variables, which override TOML and defaults. No configuration files or .env files are searched automatically. Relative TOML paths resolve against the configuration file's directory.

[server]
root_origin = "https://drfed.example.com"
listen = "localhost:8888"

[database]
data_path = "data"
drfed-server --config drfed.toml
drfed-server --config drfed.toml --no-migrate

The HTTPS example assumes a reverse proxy that preserves the original Host header and forwards requests to localhost:8888. Use --no-migrate to require an already migrated database. See the CLI package documentation for the environment variable names, PostgreSQL selection and mail settings.

Database maintenance

For PGlite, stop drfed-server before account creation or database maintenance. For an upgrade, back up the database, install the new version, then prepare and inspect it before starting the server:

drfed-migrate --config drfed.toml
drfed-migrate --config drfed.toml --check
drfed-server --config drfed.toml --no-migrate

--check exits successfully only when database history matches the installed migrations with no pending changes. PostgreSQL can be selected with --postgres-url or database.url.

Separate serving

Use drfed-server --no-web and drfed-web to run the backend and frontend separately. Pass the frontend's public origin to drfed-server with --login-origin. See the CLI package documentation for both modes, supported mail transports, credential files and shutdown behavior. All four commands accept the same explicit configuration file and the relevant DRFED_* variables.

Development builds

Install the latest successful development build with npm install --global @drfed/drfed@dev. The dev channel is separate from the stable latest channel. Tagged prereleases use next. See the contributor release guide for verification, setup, and recovery procedures.

Documentation

The documentation site lives in docs/ and uses VitePress. After mise install, run mise run dev:docs to start it locally. Run mise run build:docs to build the static site and mise run preview:docs to preview the result.

About

Web-based platform for developing and debugging ActivityPub implementations

Resources

Contributing

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages