Botsin.space and What Comes After

It really is the end of an era

The venerable Mastodon bot server botsin.space is shutting down in weeks if not days. The blog post that made the announcement at the end of October blames server costs from data storage, exacerbated by recent changes in the Mastodon software itself. This is understandable but I’m still a bit sad about it.

To understand the exact nature of my melancholy we’re going to have to go back nearly eight years, to early 2017. I was a Twitter1 user in the twenty-teens, back when it felt like everyone in the world was too.2 One of the most interesting scenes to me on the whole site was Twitter bots, which is to say automated accounts that did something interesting, and not trolls which is what the word came to mean for whatever reason.

Obviously there were functional bots: Geonet of course automatically posted earthquake information to their Twitter feed, as did equivalent organisations in other countries, and various transit and meteorological organisations did the same kind of thing in their own particular domains. These were useful to follow but not terribly interesting.3 But there were also more artistic accounts.

Horse_ebooks was a famous spam account-cum-art-project from the early 2010s that posted non-sequiturs made from chopped up text and inspired a whole collections of ‘ebook’ or ‘markov’ bots that did the same thing for real using Markov chains. I was never particularly interested in these at the time—for every “everything happens so much” you tended to get a lot of meh—but when compared with the LLMs of the present decade they seem rather nostalgic and I might yet experiment with them.

More my style were those created by Nora Reed and similar. These tended to be created by iterating on wordlists and manually specified formats, and their output combines random nonsense with a handcrafted charm. There was a problem though: Twitter could never decide whether it was going to tolerate these automated artistic projects and so bot accounts ran a risk of being blocked as spammers. This put a dampener on any plans of my own.

Now, the Fediverse4 has been around longer but I first came across it in the form of the Mastodon project around this same period. There were a number of features that attracted me to a new platform (people forget just how awful Twitter was long before 2022) but one of them was that there was a proper way to flag harmless automated accounts, and there was a cultural expectation they wouldn’t just be blocked or banned wholesale. Such a minor thing, but so important to me at the time.

2017 was also when Colin Mitchell launched botsin.space. I’m going to continue to not explain the Fediverse, but suffice to say that accounts on a particular server (or “instance”) often have something in common (like their country or language or user interests—or on botsin.space, that they were robots). If Twitter’s inconsistent policies made people wary of exploring their creativity on that platform, botsin.space and other similar servers did exactly the opposite.5 Thousands of accounts were created on that server and elsewhere over the years, posting things like:

  • Animations of quasi-crystals
  • Bugs reported in the videogame Dwarf Fortress
  • Every prime number, in order
  • Exhibits from museums
  • Exhortations to remain hydrated
  • Foxes. So many foxes
  • Levels of… things
  • Photographs of trains passing a small town
  • Quotes from Arnold Lobel’s Frog and Toad
  • Satellite photographs from the Deep Space Climate Observatory
  • The output of user-submitted programs for the BBC Micro
  • Thoughts of RollerCoaster Tycoon guests
  • Types of sandwiches that may or may not be a good idea

…and so many more that have been lost if not to time than to my fallible memory. There’s a range here between bots that serve to post existing content onto the Fediverse and those that generate their own, but I think both ends of the spectrum provide value. And despite the ease of creating automated accounts the Fediverse did not become a ghost town lacking human users.

As an aside, having an ActivityPub-capable server to host the bot on the Fediverse wasn’t the only ingredient in the mix: easy tools like Cheap Bots Toot Sweet6 and the Mastodon.py python package make developing and (in the former case) running the bots easy.7

It shouldn’t be a surprise that in this environment I’ve made my own over the years. My first was Vortaro in 2018, which just posts lines from an English-Esperanto dictionary. Over the following five years I made @eqnz, which emulated the twitter Geonet account; Vote Chess where we play chess against the computer, democratically; @NZWeatherAlerts which posts weather watches and warnings; and the Useless Clock, which gives accurate but almost always useless date and time information. There is a whole page on this site that goes into more detail but suffice to say all but the eqnz bot were originally on botsin.space—it was just the place to be.

But now botsin.space is closing down. Colin Mitchell has been maintaining the server for seven and a half years; he does have a patreon (which I donated to) but he didn’t advertise it and was largely happy to shoulder the costs himself. Unfortunately, per the aforementioned announcement post, this is no-longer feasible which is a real shame.

Mastodon servers (and the Fediverse in general) shut down all the time.8 It’s both a technical and social problem: people who set public servers up as a hobby seem to inevitably burn out on maintenance and moderation, while the technology does not make it practical to hand a domain over to a new person or port it to new, lower resource software. At least it’s possible to migrate individual accounts, albeit without including old posts.

But where to go? There is nothing wrong with moving a bot to mastodon.social, or making a new one there—that’s such a mess of a server though, which may also mean you want to avoid it entirely. Other bot-focussed instances exist, both new ones and those that have around for years, but I haven’t done enough investigation to give you a list of which might be worth your while. Instead I’ve gone with the silliest option: setting up my own personal server.

As it happens I’ve run Fediverse instances for myself before. Between about 2018 and 2020 my primary account was on single-user server that I maintained, first a Pleroma instance and then full-fat Mastodon. I certainly learned a great deal from that experience, but for a variety of reasons I wouldn’t do it again—at least, not with that software.

But of course there are alternatives. For the purpose of a private server hosting bots like these I don’t need half the features Mastodon offers. The current hotness in this space is called GoToSocial, which is Fediverse server software that offers full mastodon API support (crucial to avoid rewriting the bots,9 but also useful for using existing apps and clients) while omitting the entire front-end, and which recently came out of alpha status. After considering it for a few weeks I decided to give it a go.

I won’t turn this post into a detailed setup guide for GtS. Suffice to say that I found the documentation pretty good, at least for my level of foreknowledge. Unlike my previous fedi servers, which were located on VPSes, I’ve installed this one on my local server10 connected to the wider internet via ssh tunneling, a reverse proxy, and some custom caching.11

In hindsight I should have called the server botsin.petras.space. I also considered goto.petras.space, but I went with the boring bots.petras.space12 for the domain. We all come up with our best ideas a few moments too late. Several weeks of hosting three of the bots has turned out rather well, with an increase of bandwidth and system load used but a long way from critical levels.

Network usage graph over the last 30 days for the linode that hosts the reverse proxy. The transfer rises as the accounts were migrated, but only by so much.

Only three of the accounts though. When my power goes out—or I just flick the wrong switch—this server goes down, which is fine for my hobby projects but not for accounts that have a level of utility that might be correlated with said power issues. For example, @eqnz (which didn’t need to be moved) and the weather alert bot. As such I’ve arranged for @NZWeatherAlerts to join it’s earthquake-reporting sibling on Cloud Island. Amusingly, I migrated it on a dark and stormy night that wasn’t quite dark and stormy enough for a weather watch to be issued that I could test with, and then there was about a week of calm weather following before I could 100% confirm it was working. But it’s definitely fully operational now.

The biggest element of the move was the Vote Chess account, which has the most followers and interaction while also coming with a large number of images of board states. With the reasons for the closure of botsin.space in mind I’ve decided to make a few changes to the schedule: the former hourly game is now three-hourly, and the former three-hourly game is now daily and is joined by three other daily games, each with distinctive colours. This reduces the number of moves published every day from 32 to 12, leading to less bandwidth used but also making the games much easier to follow.

The five boards we’re now playing on. Feel free to focus on whichever updates at a convenient time for you.

Additionally, move times are now firmly in UTC, whereas previously they were based on my local timezone (which meant regular changes due to daylight saving). This was enabled by moving from a cron-based system to systemd timers, which is more of a hassle to set up but which comes with a few side-benefits like better logging.

Overall, a couple of weeks in now, this is all working for me pretty well. I have the freedom to muck about on the new server as I choose, meanwhile this isn’t costing me any more than I was already paying—in theory I could even have my personal account there, although I’ll save that for an emergency. But however neat it is to have your own social media server sitting on your desk this is not for everyone, and statistically speaking it’s not for anyone at all,13 so it is undeniable that the closure of botsin.space will have a negative impact on this small scene if only because of the number of online guides that are now out of date.

Still, I have hope. These are such neat projects for a programmer of any level, and after completion they are largely set-and-forget. Plus you get feedback from people about the cool thing you made, which is always nice. So I think it will still attract interested developers, and if that’s you and you want some pointers I’m happy to help!


  1. There are no Twitter links in this post. That website is dead to me, even for archival purposes.↩︎

  2. Everyone in the world was not on Twitter, and I feel like we would have been better off if we properly realised that at the time. But that’s for another day.↩︎

  3. Unless you’re me, and can derive endless entertainment just from a feed of maps.↩︎

  4. I won’t explain the Fediverse; I’m less confident in my ability to do that every year and in any case if you’ve found this blog you almost certainly have an informed opinion of some kind, whether it be positive or negative.↩︎

  5. With the benefit of hindsight there may have been other demographics besides the robotically inclined in need of the boost that a focused instance provided, but that’s not to say that botsin.space wasn’t a good thing.↩︎

  6. Based on Cheap Bots Done Quick for Twitter, which is no-longer active due to API charges.↩︎

  7. It’s also relatively simple to run the Python-based bots, you just need a computer that is running and connected to the internet whenever you want it to be posting. This can be a fancy linux server or just your normal desktop.↩︎

  8. In fact, as I was doing edits for this post the announcement was made that hellsite.site is closing down in March of 2025, six years after it launched. This is a much smaller instance with about 80 active users but it’s one I remember fondly even if I was never a member myself.↩︎

  9. I did have to alter them slightly, because GtS does not supply an API version string that Mastodon.py likes—so you have to tell it not to check the version number. But besides that everything works fine.↩︎

  10. Please don’t DDOS me. Fibre internet only goes so far.↩︎

  11. Caching is hard, but what I did seems to be working to avoid repeat requests for Vote Chess board images.↩︎

  12. The equally boring fedi.petras.space was burned by its use with one of the aforementioned servers from a few years ago.↩︎

  13. Should we have a more p2p internet? Probably, but that ship may have sailed by now.↩︎