A social pastebin built on atproto. morsels.blue
atproto python flask quartz
0

Configure Feed

Select the types of activity you want to include in your feed.

Python 67.8%
HTML 30.2%
Dockerfile 1.3%
Just 0.6%
CSS 0.2%
Other 0.1%
31 1 0

Clone this repository

https://git.vm.fail/aly.codes/morsels https://git.vm.fail/did:plc:rdgtjxv7f5jgxvy3hruwv77q
ssh://git@knot1.tangled.sh:2222/aly.codes/morsels ssh://git@knot1.tangled.sh:2222/did:plc:rdgtjxv7f5jgxvy3hruwv77q

For self-hosted knots, clone URLs may differ based on your setup.


README.md

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 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