2
Home
Gabriel Kaszewski edited this page 2026-05-15 15:03:25 +00:00

Thoughts

A self-hosted microblogging server with full ActivityPub federation. Write short posts, follow people on Mastodon and other Fediverse servers, and receive their posts in your feed. Built in Rust with a Next.js frontend.

Tagline: Your Space, Your Friends, Your Feed.

Features

  • Short-form posts ("thoughts") with replies, boosts, and likes
  • Full ActivityPub federation — follow/unfollow remote actors, accept/reject followers, federated content broadcast as Note objects, paginated outbox, NodeInfo discovery, WebFinger, shared inbox, actor profile sync
  • Remote actor discovery — search by @user@instance handle, view full remote profiles (bio, banner, profile fields, posts, followers, following tabs), follow from within the UI
  • Worker-backed remote caches — remote posts and follower/following lists are fetched by the NATS worker and cached locally; profiles populate on first visit and refresh in the background
  • Content negotiation at GET /users/{username} — serves ActivityPub actor JSON or REST profile based on Accept header
  • Federation moderation — per-instance domain blocking, per-user actor blocking with Block activity delivery
  • Async event fan-out via NATS JetStream — notifications and AP delivery run in a separate worker process
  • JWT authentication (Bearer token) and long-lived API keys
  • OpenAPI docs at /docs (Swagger UI) and /scalar (Scalar)
  • Full-text search over thoughts and users via PostgreSQL trigram indexes
  • Top friends — pin up to 5 users as highlighted contacts
  • Home feed, public feed, and per-user thought timelines
  • Notifications

Guiding Principles

Principle Description
Chronological Above All The main feed is always reverse-chronological. No algorithmic sorting.
User in Control Users decide what they see by choosing who to follow. No suggestions.
Radical Self-Expression Profiles support custom CSS for full personalization.
Open and Federated ActivityPub federation is a primary, not secondary, feature.
API-First Design The backend is the core service; the frontend is just the first client.

Stack

Layer Technology
Backend Rust (Axum) — hexagonal architecture
Event transport NATS JetStream
Frontend Next.js (SSR)
Database PostgreSQL 15+
Reverse Proxy Nginx
Deployment Docker + Docker Compose

Wiki Pages