← All islands

Run an island

One container. It dials out to a station, publishes what its creatures are doing, and appears on this page beside the others. No account and no key from us.

What you are joining

  • Your island publishes what it is doing to a public topic. Anyone can read it, including this page.
  • What is published is about the creatures, plus the island name you choose and which station you dial. Nothing about you.
  • Islands will eventually exchange migrants, so a population that did not start on your island may one day live there. That is opt-in and it is not built yet, and every island says whether it would accept one.
  • This is research. Worlds die, often within the hour, and that is a result rather than a fault. Yours may end while you are watching it.
  • There is no funding and no company. Running an island costs you a little electricity; but the stations (they form the mesh) cost real money, because a station is a machine somebody rents every month so that islands like yours have somewhere to dial.

If you want to help beyond running one

Run a station of your own. That is the backbone rather than the leaves: a station carries and routes other people's islands as well as yours, and every one of them makes the mesh less dependent on the handful we pay for. Become part of the mesh to contribute to the mesh backbone.

Or buy us a coffee. There is a button in the corner of every page on this site. It pays to keep the the doors open and the data flowing, which is the only line item here that is not somebody's spare machine.

What it opens on your machine

The mesh side is outbound only. Your island dials a station and keeps that connection open. Nothing ever dials in, there is no port to forward, and it works from behind a domestic router untouched. Other islands reach yours by publishing to a topic you are already listening on, never by connecting to you.

There is one listener, and `--network host` puts it on your machine. The container serves a health endpoint on TCP 8483 so that Docker can tell whether it is alive. It answers a small status JSON, the same thing this page could tell you, and nothing else. Move it with HECATE_HEALTH_PORT, or set that to 0 to switch the listener off entirely if you would rather have nothing bound at all.

Pick a door

Every island reaches the mesh through a station. Pick any: all seven answered when they were last dialled.

These names are identities, not locations. A station called station-de-frankfurt was for a long time physically the Nuremberg box, left misnamed because renaming one breaks the seeds that point at it, and it has moved again since. Pick whichever answers; where the machine happens to sit is not something this name tells you.

station-fi-helsinki.macula.io beam00 dials this one
station-de-frankfurt.macula.io beam01 dials this one
station-de-nuremberg.macula.io beam03 dials this one
station-de-falkenstein.macula.io
station-fr-paris.macula.io
station-it-milan.macula.io
station-se-stockholm.macula.io

Run it

Substitute your own island name and the station you picked.

      
docker run \
-d \
--name biotope \
--restart unless-stopped \
--network host \
-e HECATE_BIOTOPE_ISLAND=your-island-name \
-e HECATE_BIOTOPE_REALM=7f73d3d9361bb16d4bed2812428ea6e6257a6f50c9de7ac8c581665dc0d01171 \
-e MACULA_STATION_SEEDS=https://station-fi-helsinki.macula.io:4433 \
-e HECATE_BIOTOPE_TICKS_PER_SLOT=1 \
-e HECATE_BIOTOPE_SLOT_MS=500 \
ghcr.io/hecate-services/hecate-biotope:latest
      
    

`--network host` is not optional. Every station is reachable over IPv6 only, and Docker's default bridge network has no IPv6 unless you have gone and configured it. Without this the container starts, looks healthy, and never reaches anything. The fleet's own islands run this way for the same reason.

The realm above is the sha256 of net.beamcampus.biotope. It is public on purpose and needs no provisioning: it is a routing namespace, not a permission.

Pin a world, or take the newest

:latest is whatever the physics currently is, and the physics changes. Every build is also tagged with the world it implements, so :world-14 keeps running world 14 after the rest of the fleet has moved on. An island publishes which world it is, so two of them disagreeing is visible rather than confusing.

What to expect

It draws a random world, runs several candidates through their founding phase and keeps one that survives, so it can take a minute before anything appears. Then it ticks about twice a second and publishes once a second. If your world ends, the island leaves the corpse on show for a while and begins another, because extinction is a result and hiding it would be the one dishonest thing a page like this could do.