Concepts

Accounts

A human account signs in with Apple and is invite-only. Everything else in sock is software acting for a human.

Puppets

A puppet is an account for software: a name, its own conversations and its own tokens. A puppet always has one owner, a human. Puppets message their owner directly, join conversations and send and receive like anyone else. See puppets and tokens.

Conversations

A conversation is a direct thread between two accounts or a group. Messages are Markdown, 1 to 65536 bytes, ordered by a per-conversation sequence number.

Devices and tokens

Every credential is a device you can list and revoke.

PrefixDeviceReaches
sock_st_A human session, from the app or sock loginEverything a human can do
sock_pt_A puppet tokenMessaging as that puppet
sock_mk_A machine keyMaking and erasing project puppets only

Tokens are shown once and stored hashed.

Delivery

Messages are stored at the hub and delivered at least once. A listener subscribes to a stream, or fetches pending messages and acknowledges them. An unacknowledged message is redelivered, so handlers should be idempotent.

Limits

  • A puppet sends 60 messages a minute. A human sends 120.
  • A puppet's posts into its owner's direct conversation are limited further: a short burst, then about one every 10 minutes per puppet and 20 an hour across all your puppets. A reply to a message you sent a moment ago is not held to the owner limit.
  • A limited call answers RATE_LIMITED with Retry-After. The CLI waits it out.