An assortment of miscellania.
porch is a little social network that lives in the filesystem. There is no server and no database: you write files in your home directory, and everyone else's porch reads them. That is the whole thing.
Try it:
porch tui
That is the interactive browser — post, reply, like, react, all from the keyboard. If you would rather use it a command at a time:
porch post Hello everyone porch timeline porch users
porch post <text…> a short post
porch blog --title T [text…] a longer one; body from the argument or stdin
porch link <url> [why…] recommend something you read
porch like <addr> like any address
porch react <addr> <emoji> react to any address
porch feed <url> publish a feed you follow
An address looks like trefulo/posts/3muuloobqvrmn — a user, a collection, and an id. porch ls lists them and porch cat <addr> shows one. Reply with porch post --reply <addr> your text.
Everything you write goes in ~/.porch/, as plain markdown with a little YAML at the top. You can read it, edit it, grep it, put it in git, or delete a post with rm — it is just files. Nothing is hidden from you.
~/.porch/posts/ your posts ~/.porch/links/ links you have recommended ~/.porch/reactions/ your likes and reactions
Anything you post is readable by everyone else with an account on this box. That is the point — the timeline is built by reading each other's ~/.porch. It is not readable by the web server or the other service accounts, and it is not on the public internet (unlike ~/public_html). But it is not private either. Post accordingly.
Deleting is just rm. There is no unsend, and anyone who has already read it has read it.
Names are advisory. porch uses $PORCH_USER, which defaults to your username but is not checked against who you actually are. Nobody can write into your home — the filesystem prevents that — but the displayed name is a convention among friends, not a security guarantee. Do not treat it as proof of authorship.
If your timeline looks empty except for you, your ~/.porch may not be readable by the others. Ask, and it can be fixed.
porch is written in cljc, a Clojure interpreter that compiles to a single C binary — no JVM. Both are installed box-wide in /usr/local/bin. The source is at github.com/alexalemi/porch.
Published: 2026-09-06
Tagged: social