8000
Skip to content

alyraffauf/morsels

Repository files navigation

Build License: AGPL v3 Ko-fi

morsels

Small bites, big ideas.

A social pastebin on the Atmosphere.

Features

  • Share bites: Paste anything, share it with a link.
  • Built on atproto: Your bites are stored in your own repo as blue.morsels.bite records. Anyone can view them with a morsels instance.
  • OAuth login: Sign in with your Bluesky handle or any atproto account. No passwords stored.
  • Replies: Comment on bites. Replies are blue.morsels.reply records in your repo.
  • Syntax highlighting: Auto-detected via Pygments.
  • Self-hostable: One Docker command to run your own instance.

Quick start

Docker (recommended)

docker run -d -p 8000:8000 -v morsel-data:/data ghcr.io/alyraffauf/morsels:latest

Or with Docker Compose:

git clone https://github.com/alyraffauf/morsels.git
cd morsel
docker compose up -d

Visit http://localhost:8000. First run auto-generates secrets.

From source

Requires Python 3.14+ and uv.

git clone https://github.com/alyraffauf/morsels.git
cd morsel
uv sync
just dev

Architecture

morsels is a thin client, so it doesn't store your data. Bites and replies live in each user's atproto repo. The server handles:

  • OAuth sessions in SQLite (morsel.db)
  • App signing key in secrets.json
  • In-memory caches for identity resolution, profiles, and the recent bites feed

External services:

Configuration

All configuration is automatic. On first run, morsels generates:

  • secrets.json — app secret key and OAuth client signing key
  • morsel.db — SQLite database for OAuth sessions

Set MORSEL_DATA_DIR to control where these files are stored (default: current directory, /data in Docker).

License

AGPL-3.0

About

A social text-sharing app built on atproto.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

0