WolFed is a textboard. WolFed uses ActivityPub to federate content between other Feditext and FChannel instances. WolFed is a modified version of Feditext.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
KushBlazingJudah 1e82c4c486 Merge branch 'place-a-post-button-in-catalog-html' of github.com:Lin2Jing4-sandbox/feditext 1 week ago
captcha server: length limits 3 months ago
cmd/feditext database: rebuild replies table 2 weeks ago
config database: pagination 2 weeks ago
crypto *: assorted changes 4 weeks ago
database database: rebuild replies table 2 weeks ago
doc frontend: configurable donation list 2 weeks ago
fedi database: pagination 2 weeks ago
routes frontend: improve phoneposting 2 weeks ago
static frontend: improve phoneposting 2 weeks ago
util meta: update readme 2 weeks ago
views Merge branch 'place-a-post-button-in-catalog-html' of github.com:Lin2Jing4-sandbox/feditext 1 week ago
.dockerignore meta: docker 2 months ago
.gitignore meta: dist target 3 months ago
DONATE.md meta: DONATE.md 1 month ago
Dockerfile meta: docker 2 months ago
LICENSE meta: agpl v3 3 months ago
Makefile fedi: untested but should work debug error logging 1 month ago
README.md meta: update readme 2 weeks ago
go.mod *: update dependencies 2 weeks ago
go.sum *: update dependencies 2 weeks ago
logo.png meta: really awful logo but it's there 1 month ago
pprof.go frontend: rework some things 3 months ago
server.go frontend: news update 2 weeks ago


logo feditext

A textboard for the fediverse FChannel and itself.

This project aims to federate with existing FChannel instances and itself, while maintaining a strictly text-only interface.


Federation is a work in progress, and by no means stable nor good. Between FChannel and Feditext, federation has been battle tested and works more or less. However, do not expect any federation between the outer Fediverse.


Feditext's goals are simple and to the point:

  • Sane moderation
    • FChannel says it won't keep IPs, we will, optionally. Not keeping them is good for privacy but not good when you have bad actors, and it's surprising that FChannel hasn't had any (yet, or that I know of). Or at least intentionally.
    • If you're running a Tor instance, you can choose to not keep IPs. You should because they will all probably be anyway.
    • Public moderation log. It's a little broken right now but it's there. Can also be turned off.
  • Textboard first, ActivityPub later
    • Feditext relies on numeric IDs internally to do its bookkeeping. Where possible, ActivityPub is simply put on top of the core engine, possibly making it extremely easy to just rip it out if you wish to just use the textboard part.
  • Implemented in a simple and good fashion where possible.
    • The code attempts to be clean and simple to understand, however in places it needs comments or just needs work in general.
    • Database is kept simple, and while there's a list of functions you need to implement, a port to another DBMS is more than doable in an afternoon.


  • Attachments and previews
    • It's a textboard. Our ActivityPub implementation doesn't even have anywhere to hold these, and neither does my disk.
  • Proper ActivityPub support
    • While work was done to try to make it not choke on some data it takes in, Feditext will not be 100% compliant until FChannel is.

This list is bound to grow and shrink given time.


  • Go 1.18+

If you build with SQLite3:

  • a C compiler
  • SQLite3 itself and its headers


Feditext can be built easily using the included Makefile:

  • build builds a release build; this strips out some data that is necessary for debugging, but it's also several megabytes smaller.
  • dev builds a developer build; debugging information is left intact.
  • run runs a developer build.
  • dist creates a tarball from the release build for easy deployment. Created out of convenience for me.

Less important targets:

  • check runs tests. There are none working right now, I neglected to update the database tests.
  • tidy tidies up everything, runs gofmt and goimports if they're there.

The following variables will be useful to you:

  • The standard GO* variables if you're cross compiling (you probably aren't)
  • TAGS builds with certain features included or excluded; sqlite3 is the default value.
    • Always have a database in here, if you don't your build will be entirely useless.

Once you've built Feditext, copy doc/config.example to ./feditext.config and read the whole thing. From there, you should be good to run Feditext with a simple ./feditext or make run.

Feditext is extremely limited in what you can do from the CLI, but you can:

  • load different configuration files with -config ...
  • create a user with create
    • See ./feditext create -help for more information

Or, if you just want to start it, run it with no arguments.