fedtail is engineered for people who value conversation context, non-jumping chronological timelines, and complete discussion threads.
Foundational Principles
- Nothing jumps. Opening a lane places you at the first unread post. New arrivals never push what you are currently reading. You consume feeds in order, just like RSS.
- Every reply knows its parent. A quote strip above each response shows the origin post; a single click expands the entire tree.
- Lanes are segregated. People, bots, direct replies, and mentions are cleanly partitioned into distinct feeds.
- Private by default. New posts target followers only. Replies never exceed the visibility level of the parent note.
- Config-driven. Every behavior is governed by explicit settings in
config.tomlrather than GUI preference dialogs. - No client tokens sent to third-party instances. Missing thread data fetched via ActivityPub is retrieved anonymously without leaking user tokens.
- Headless core. The application engine is fully decoupled from presentation. Frontends (Qt, TUI, Web) interact via events and futures.
- One profile per account. Profiles remain isolated; multiple profiles can be switched easily or merged into a single window.
- No patronizing moderation (arts mode). In tribute to @arts (founder of Point.im), content is presented as-is with full user agency.
Architectural Components
- Core Engine (
fedtail/core): Headless orchestration of networking, storage, polling, and event dispatch. - Data Persistence: Local SQLite database storing cached status entities, thread graph relationships, read markers, and subscriptions.
- Thread Reassembly: Fetches missing conversational branches directly from origin author instances when home servers lack federated context.
- Frontends (
fedtail/frontends):qt: Native desktop UI built on PySide6.tui: Terminal text-mode interface.web: Embedded lightweight browser interface.cli: Scriptable terminal commands (fedtail tail,fedtail show, etc.).