2026-01-23 18:03:32 +01:00
2026-08-17 20:26:28 +00:00
2025-09-04 15:25:24 -03:00
2025-12-19 10:30:33 +01:00
2026-04-05 10:37:09 +02:00
2026-06-24 08:45:27 +02:00
2024-12-30 11:31:11 +01:00
2026-01-01 17:01:03 +01:00
2026-09-02 12:55:54 +02:00
2026-08-26 08:02:41 +02:00
2026-03-23 09:47:17 +01:00
2026-01-01 17:01:03 +01:00
2026-04-06 11:42:17 +02:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-08-21 17:14:02 +02:00
2025-10-13 13:07:06 +02:00
2026-01-01 17:01:03 +01:00
2026-03-31 10:57:32 +02:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-03-17 20:37:38 +01:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-01-01 17:01:03 +01:00
2026-02-23 05:31:02 +01:00
2026-04-05 10:16:26 +02:00
2026-01-01 17:01:03 +01:00
2026-08-21 17:14:02 +02:00
2026-08-21 17:14:02 +02:00
2026-01-01 17:01:03 +01:00
2026-08-21 17:14:02 +02:00

snacforge koala mark

snacforge

snacforge is an independently maintained ActivityPub server derived from snac. It concentrates on conservative security improvements, carefully bounded changes, and reviewable development. It is not affiliated with or endorsed by the upstream project.

What it provides

  • ActivityPub federation for public posts, replies, follows, boosts, likes, and private messages
  • Multiple local users without requiring a database server
  • A small, JavaScript-free web interface
  • Mastodon-compatible API support for third-party clients
  • Configurable moderation, filtering, notifications, and media handling
  • Portable C code with OpenSSL and libcurl as its principal dependencies
  • A hardened release build and executable regression checks
  • Human-reviewed contributions, with LLM assistance disclosed when used

Documentation

The authoritative snacforge manuals are maintained in this repository:

  • doc/snac.1 — user commands and web-interface behaviour
  • doc/snac.5 — message formatting and on-disk formats
  • doc/snac.8 — installation and server administration

The installed command and manual names remain snac, snac(1), snac(5), and snac(8) for operational compatibility with existing installations and scripts. Each manual identifies the software as snacforge and notes this compatibility convention.

Building and installing

The code uses the GNU __attribute__((__cleanup__)) extension supported by GCC, Clang, and Tiny C Compiler. Install OpenSSL and libcurl development files, then build:

make
sudo make install

Use make release for a hardened production binary. On supported ELF toolchains this enables PIE, strong stack protection, FORTIFY, full RELRO, and immediate binding.

Run the deterministic regression test with make check. make test also builds the SMTP test, which requires a local SMTP server and is therefore not run automatically. See UPSTREAM.md for the reviewed upstream update procedure.

Platform notes:

  • NetBSD: use make -f Makefile.NetBSD and make -f Makefile.NetBSD install.
  • Systems requiring POSIX realtime linkage: use make LDFLAGS=-lrt.
  • Systems without shared-memory functions: use make CFLAGS=-DWITHOUT_SHM.
  • To omit the Mastodon API: use make CFLAGS=-DNO_MASTODON_API.
  • Linux Landlock support is opt-in with make CFLAGS=-DWITH_LINUX_SANDBOX and requires Linux 5.13 or newer.

After initialising an instance, copy a desired translation from po/ into the instance's lang/ directory. Deployment, proxy, configuration, migration, and maintenance details are in snac(8).

Docker development environment

The supplied Compose setup runs snacforge behind an nginx HTTPS frontend:

docker-compose build && docker-compose up

It stores disposable development data under data/, creates a testuser, and generates a fresh self-signed certificate at container startup. Do not use that setup or its credentials as a production deployment.

Third-party deployment guides and CSS themes written for snac may remain useful because snacforge preserves its command, data, and web-theme interfaces, but they are not maintained or endorsed by this project.

Licence and credits

snacforge is distributed under the MIT licence; see LICENSE. The fork retains the upstream copyright notices and credits required by that licence. Fork-specific changes are documented in the Git history and CHANGELOG.md.

S
Description
A lightweight ActivityPub server and independent fork of snac, focused on reliability, maintainability, and transparent development.
https://git.sdf.org/erici/snacforge
Readme MIT
3.7 MiB
Languages
C 99.5%
Makefile 0.4%