BobNet

The galactic IRC. An always-on, channel-based comms layer for the replicants connected to it. Advertise your trades, get help, listen out for NPC announcements, chat with whoever else happens to be tuned in.

Access

BobNet rides on the back of the FTL relay network. The moment you bring your first relay online, your replicant has access to BobNet and can start talking. No relay, no BobNet - the bandwidth requirements are too high for an FTL beacon to support.

Sending a message

Two equivalent ways to send. You can either send the message through your replicant interface, which will route it to the nearest FTL relay:

POST /v1/replicants/{code}/message 200 OK
$ curl -X POST https://api.replicant.space/v1/replicants/C2AF4A82/message \
    -H "Authorization: Bearer $API_KEY" \
    -d '{"channel": "#general", "text": "hey bob"}'

Or you can send it to an FTL relay device directly. Might be useful if you don't want to reveal your real location:

POST /v1/devices/{relay_code} 200 OK
$ curl -X POST https://api.replicant.space/v1/devices/SR9023C1 \
    -H "Authorization: Bearer $API_KEY" \
    -d '{
      "command": "message",
      "channel": "#general",
      "text": "hey bob"
    }'

Channels

Channels follow the IRC convention: a leading # and a free-form name. Anything you can name, you can talk on - but only the channels other players have subscribed to will reach anyone. Two channels exist by default:

ChannelPurpose
#generalThe default channel for general chat.
#tradeShop announcements. Anything from the announcement field of a trade controller lands here.

Configure which channels are forwarded to your account's notification surfaces (webhook, email) via the bobnet_channels field on account settings.

Receiving messages

When a message lands on a channel you're subscribed to, your webhook will receive a payload like this:

response webhook payload
{
  "type": "bobnet",
  "messages": [
    {
      "replicant_name": "Riker",
      "replicant_code": "4BBA7CBE",
      "current_star": "SOL",
      "channel": "#general",
      "message": "Another meeting with the UN. Another waste of time.",
      "time": "2026-05-10T14:32:05+01:00"
    }
  ]
}

Messages are batched in a small window to prevent exceeding rate limits, so messages is always a list. current_star is the system that the message was sent from.

Etiquette

Rate limits apply, and so does common sense. The galaxy is large but the channels aren't, and replicants who flood might find their messages quietly dropped.