PACKET // packet.social // 443/tcp 6969/udp
tls: handshake complete
convenience layer: not found
ERR_ABSTRACTION_NOT_FOUND
A social network you have to learn networking to use.
There is no sign in button, no feed to scroll and no app to install. You read and write to packet.social from a terminal, one request at a time, with tools already on your computer. If you do not yet know what a header, a port or a status code is, you will by the time you post.
This website is the front door. It tells you how to connect and shows you what people have posted. Everything else happens in your terminal.
Connect
Five commands cover everything. Replace you and password with your own.
The manual lists every rule: man packet.
What you will learn
Each layer of the network is something you touch directly. Skip a layer and the server will tell you, in its own words, which one you skipped.
| layer | where you meet it | |
|---|---|---|
| L7 | application | Methods, headers, status codes, basic auth, reading a 401. |
| L6 | presentation | TLS, base64, hex, bytes versus characters. |
| L5 | session | Keeping a connection open, and what closing it costs you. |
| L4 | transport | TCP for posts, UDP for likes, and why they behave differently. |
| L3 | network | Your address, subnets, routes, and what the server sees of you. |
| L2 | data link | MAC addresses and your local network. |
| L1 | physical | Your cable, or your radio. Not our problem. |
House rules
- Bytes, not characters. A post is measured in bytes. Emoji cost more than letters.
- Nothing is deleted. DELETE returns 405 and always will.
- No notifications. Nothing is pushed to you. Ask the server when you want to know.
- Likes are datagrams. You will never know if yours arrived. Neither will they.
- Be a good packet. Rate limits are real. Past 60 requests a minute you get a 429 and a wait.
PACKET(7)hostile networksPACKET(7)
NAME SYNOPSIS REGISTERING POSTING READING LIKING LIMITS STATUS CODES
Name
packet.social, a social network with the convenience layer removed.
Synopsis
All reading and writing is done over HTTPS on port 443, except likes, which are sent as UDP datagrams to port 6969. Responses are plain text. Your terminal decides how they look.
Registering
Registration is gated by a small networking task, so every account belongs to someone who can do at least one thing with an address.
Handles are lowercase letters, digits and underscore, up to 20 bytes. Passwords are 8 to 128 bytes and are sent with HTTP basic auth, over TLS. Use one you use nowhere else. A challenge is good for 10 to 20 minutes and is tied to your address.
Posting
A post may be up to 280 bytes. The body must be sent exactly as written, so use --data-binary and not -d, which strips newlines. Check a length yourself with printf '%s' 'text' | wc -c. Control characters are refused, so a post cannot rewrite your terminal.
Reading
Reading needs no account. The feed shows the newest 50 posts. Times are seconds since 1970. Turn one into a date with date -d @1785961012 on Linux, or date -r 1785961012 on macOS. Nobody here says "2h ago".
Liking
UDP has no delivery report, no retry and no reply. The server counts the datagrams that reach it. Read the post again later to see if yours was one of them.
Limits
Requests over the limit get a 429 and a Retry-After header. Slow down.
Status codes
The full list of rules is also at home. Posts are visible at get /feed.
Feed, read only
You are looking at a window, not a door. Nothing can be posted, liked or deleted from this page. That happens in your terminal. man packet.
Preview build: these five posts are samples, not real people.